os_mem.lst

来自「atmega单片机用的ucos系统 占用内存适中 是atmega单片机合适的操作」· LST 代码 · 共 1,065 行 · 第 1/4 页

LST
1,065
字号
 213:OSsrc/os_mem.c **** *              pname     is a pointer to an ASCII string that contains the name of the memory parti
 214:OSsrc/os_mem.c **** *
 215:OSsrc/os_mem.c **** *              err       is a pointer to an error code that can contain one of the following values
 216:OSsrc/os_mem.c **** *
 217:OSsrc/os_mem.c **** *                        OS_NO_ERR                  if the name was copied to 'pname'
 218:OSsrc/os_mem.c **** *                        OS_MEM_INVALID_PMEM        if you passed a NULL pointer for 'pmem'
 219:OSsrc/os_mem.c **** *                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
 220:OSsrc/os_mem.c **** *						 OS_MEM_NAME_TOO_LONG       if the name doesn't fit in the storage area
 221:OSsrc/os_mem.c **** *
 222:OSsrc/os_mem.c **** * Returns    : None
 223:OSsrc/os_mem.c **** ***************************************************************************************************
 224:OSsrc/os_mem.c **** */
 225:OSsrc/os_mem.c **** 
 226:OSsrc/os_mem.c **** #if OS_MEM_NAME_SIZE > 1
 227:OSsrc/os_mem.c **** void  OSMemNameSet (OS_MEM *pmem, char *pname, INT8U *err)
 228:OSsrc/os_mem.c **** {
 488               	.LM59:
 489               	/* prologue: frame size=0 */
 490 018a EF92      		push r14
 491 018c FF92      		push r15
 492 018e 0F93      		push r16
 493 0190 1F93      		push r17
 494 0192 CF93      		push r28
 495 0194 DF93      		push r29
 496               	/* prologue end (size=6) */
 497 0196 7C01      		movw r14,r24
 498 0198 EB01      		movw r28,r22
 499 019a 8A01      		movw r16,r20
 229:OSsrc/os_mem.c ****     INT8U      len;
 230:OSsrc/os_mem.c **** #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register       
 231:OSsrc/os_mem.c ****     OS_CPU_SR  cpu_sr;
 232:OSsrc/os_mem.c **** 
 233:OSsrc/os_mem.c **** 
 234:OSsrc/os_mem.c **** 
 235:OSsrc/os_mem.c ****     cpu_sr = 0;                                  /* Prevent compiler warning                       
 236:OSsrc/os_mem.c **** #endif    
 237:OSsrc/os_mem.c ****     OS_ENTER_CRITICAL();
 501               	.LM60:
 502               	/* #APP */
 503 019c 0FB6      		in __tmp_reg__,__SREG__
 504 019e F894      		cli
 505 01a0 0F92      		push __tmp_reg__
 238:OSsrc/os_mem.c **** #if OS_ARG_CHK_EN > 0
 239:OSsrc/os_mem.c ****     if (pmem == (OS_MEM *)0) {                   /* Is 'pmem' a NULL pointer?                      
 507               	.LM61:
 508               	/* #NOAPP */
 509 01a2 892B      		or r24,r25
 510 01a4 21F4      		brne .L24
 240:OSsrc/os_mem.c ****         OS_EXIT_CRITICAL();                      /* Yes                                            
 512               	.LM62:
 513               	/* #APP */
 514 01a6 0F90      		pop __tmp_reg__
 515 01a8 0FBE      		out __SREG__,__tmp_reg__
 241:OSsrc/os_mem.c ****         *err = OS_MEM_INVALID_PMEM;
 517               	.LM63:
 518               	/* #NOAPP */
 519 01aa 84E7      		ldi r24,lo8(116)
 520 01ac 0FC0      		rjmp .L27
 521               	.L24:
 242:OSsrc/os_mem.c ****         return;
 243:OSsrc/os_mem.c ****     }
 244:OSsrc/os_mem.c ****     if (pname == (char *)0) {                    /* Is 'pname' a NULL pointer?                     
 523               	.LM64:
 524 01ae 6115      		cp r22,__zero_reg__
 525 01b0 7105      		cpc r23,__zero_reg__
 526 01b2 21F4      		brne .L25
 245:OSsrc/os_mem.c ****         OS_EXIT_CRITICAL();                      /* Yes                                            
 528               	.LM65:
 529               	/* #APP */
 530 01b4 0F90      		pop __tmp_reg__
 531 01b6 0FBE      		out __SREG__,__tmp_reg__
 246:OSsrc/os_mem.c ****         *err = OS_ERR_PNAME_NULL;
 533               	.LM66:
 534               	/* #NOAPP */
 535 01b8 8FE0      		ldi r24,lo8(15)
 536 01ba 08C0      		rjmp .L27
 537               	.L25:
 247:OSsrc/os_mem.c ****         return;
 248:OSsrc/os_mem.c ****     }
 249:OSsrc/os_mem.c **** #endif
 250:OSsrc/os_mem.c ****     len = OS_StrLen(pname);                      /* Can we fit the string in the storage area?     
 539               	.LM67:
 540 01bc CB01      		movw r24,r22
 541 01be 0E94 0000 		call OS_StrLen
 251:OSsrc/os_mem.c ****     if (len > (OS_MEM_NAME_SIZE - 1)) {          /* No                                             
 543               	.LM68:
 544 01c2 8032      		cpi r24,lo8(32)
 545 01c4 30F0      		brlo .L26
 252:OSsrc/os_mem.c ****         OS_EXIT_CRITICAL();
 547               	.LM69:
 548               	/* #APP */
 549 01c6 0F90      		pop __tmp_reg__
 550 01c8 0FBE      		out __SREG__,__tmp_reg__
 253:OSsrc/os_mem.c ****         *err = OS_MEM_NAME_TOO_LONG;
 552               	.LM70:
 553               	/* #NOAPP */
 554 01ca 87E7      		ldi r24,lo8(119)
 555               	.L27:
 556 01cc F801      		movw r30,r16
 557 01ce 8083      		st Z,r24
 254:OSsrc/os_mem.c ****         return;
 559               	.LM71:
 560 01d0 09C0      		rjmp .L23
 561               	.L26:
 255:OSsrc/os_mem.c ****     } 
 256:OSsrc/os_mem.c ****     (void)OS_StrCopy(pmem->OSMemName, pname);    /* Yes, copy name to the memory partition header  
 563               	.LM72:
 564 01d2 BE01      		movw r22,r28
 565 01d4 C701      		movw r24,r14
 566 01d6 4096      		adiw r24,16
 567 01d8 0E94 0000 		call OS_StrCopy
 257:OSsrc/os_mem.c ****     OS_EXIT_CRITICAL();
 569               	.LM73:
 570               	/* #APP */
 571 01dc 0F90      		pop __tmp_reg__
 572 01de 0FBE      		out __SREG__,__tmp_reg__
 258:OSsrc/os_mem.c ****     *err = OS_NO_ERR;
 574               	.LM74:
 575               	/* #NOAPP */
 576 01e0 F801      		movw r30,r16
 577 01e2 1082      		st Z,__zero_reg__
 578               	.L23:
 579               	/* epilogue: frame size=0 */
 580 01e4 DF91      		pop r29
 581 01e6 CF91      		pop r28
 582 01e8 1F91      		pop r17
 583 01ea 0F91      		pop r16
 584 01ec FF90      		pop r15
 585 01ee EF90      		pop r14
 586 01f0 0895      		ret
 587               	/* epilogue end (size=7) */
 588               	/* function OSMemNameSet size 63 (50) */
 590               	.Lscope3:
 594               	.global	OSMemPut
 596               	OSMemPut:
 259:OSsrc/os_mem.c **** }
 260:OSsrc/os_mem.c **** #endif
 261:OSsrc/os_mem.c **** 
 262:OSsrc/os_mem.c **** /*$PAGE*/
 263:OSsrc/os_mem.c **** /*
 264:OSsrc/os_mem.c **** ***************************************************************************************************
 265:OSsrc/os_mem.c **** *                                         RELEASE A MEMORY BLOCK
 266:OSsrc/os_mem.c **** *
 267:OSsrc/os_mem.c **** * Description : Returns a memory block to a partition
 268:OSsrc/os_mem.c **** *
 269:OSsrc/os_mem.c **** * Arguments   : pmem    is a pointer to the memory partition control block
 270:OSsrc/os_mem.c **** *
 271:OSsrc/os_mem.c **** *               pblk    is a pointer to the memory block being released.
 272:OSsrc/os_mem.c **** *
 273:OSsrc/os_mem.c **** * Returns     : OS_NO_ERR            if the memory block was inserted into the partition
 274:OSsrc/os_mem.c **** *               OS_MEM_FULL          if you are returning a memory block to an already FULL memory 
 275:OSsrc/os_mem.c **** *                                    partition (You freed more blocks than you allocated!)
 276:OSsrc/os_mem.c **** *               OS_MEM_INVALID_PMEM  if you passed a NULL pointer for 'pmem'
 277:OSsrc/os_mem.c **** *               OS_MEM_INVALID_PBLK  if you passed a NULL pointer for the block to release.
 278:OSsrc/os_mem.c **** ***************************************************************************************************
 279:OSsrc/os_mem.c **** */
 280:OSsrc/os_mem.c **** 
 281:OSsrc/os_mem.c **** INT8U  OSMemPut (OS_MEM *pmem, void *pblk)
 282:OSsrc/os_mem.c **** {
 598               	.LM75:
 599               	/* prologue: frame size=0 */
 600 01f2 CF93      		push r28
 601 01f4 DF93      		push r29
 602               	/* prologue end (size=2) */
 603 01f6 FC01      		movw r30,r24
 604 01f8 EB01      		movw r28,r22
 283:OSsrc/os_mem.c **** #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register       
 284:OSsrc/os_mem.c ****     OS_CPU_SR  cpu_sr;
 285:OSsrc/os_mem.c ****     
 286:OSsrc/os_mem.c ****     
 287:OSsrc/os_mem.c **** 
 288:OSsrc/os_mem.c ****     cpu_sr = 0;                                  /* Prevent compiler warning                       
 289:OSsrc/os_mem.c **** #endif    
 290:OSsrc/os_mem.c **** #if OS_ARG_CHK_EN > 0
 291:OSsrc/os_mem.c ****     if (pmem == (OS_MEM *)0) {                   /* Must point to a valid memory partition         
 606               	.LM76:
 607 01fa 892B      		or r24,r25
 608 01fc 19F4      		brne .L29
 292:OSsrc/os_mem.c ****         return (OS_MEM_INVALID_PMEM);
 610               	.LM77:
 611 01fe 84E7      		ldi r24,lo8(116)
 612 0200 90E0      		ldi r25,hi8(116)
 613 0202 2DC0      		rjmp .L28
 614               	.L29:
 293:OSsrc/os_mem.c ****     }
 294:OSsrc/os_mem.c ****     if (pblk == (void *)0) {                     /* Must release a valid block                     
 616               	.LM78:
 617 0204 6115      		cp r22,__zero_reg__
 618 0206 7105      		cpc r23,__zero_reg__
 619 0208 19F4      		brne .L30
 295:OSsrc/os_mem.c ****         return (OS_MEM_INVALID_PBLK);
 621               	.LM79:
 622 020a 83E7      		ldi r24,lo8(115)
 623 020c 90E0      		ldi r25,hi8(115)
 624 020e 27C0      		rjmp .L28
 625               	.L30:
 296:OSsrc/os_mem.c ****     }
 297:OSsrc/os_mem.c **** #endif
 298:OSsrc/os_mem.c ****     OS_ENTER_CRITICAL();
 627               	.LM80:
 628               	/* #APP */
 629 0210 0FB6      		in __tmp_reg__,__SREG__
 630 0212 F894      		cli
 631 0214 0F92      		push __tmp_reg__
 299:OSsrc/os_mem.c ****     if (pmem->OSMemNFree >= pmem->OSMemNBlks) {  /* Make sure all blocks not already returned      
 633               	.LM81:
 634               	/* #NOAPP */
 635 0216 2485      		ldd r18,Z+12
 636 0218 3585      		ldd r19,Z+13
 637 021a 4685      		ldd r20,Z+14
 638 021c 5785      		ldd r21,Z+15
 639 021e 8085      		ldd r24,Z+8
 640 0220 9185      		ldd r25,Z+9
 641 0222 A285      		ldd r26,Z+10
 642 0224 B385      		ldd r27,Z+11
 643 0226 2817      		cp r18,r24
 644 0228 3907      		cpc r19,r25
 645 022a 4A07      		cpc r20,r26
 646 022c 5B07      		cpc r21,r27
 647 022e 28F0      		brlo .L31
 300:OSsrc/os_mem.c ****         OS_EXIT_CRITICAL();
 649               	.LM82:
 650               	/* #APP */
 651 0230 0F90      		pop __tmp_reg__
 652 0232 0FBE      		out __SREG__,__tmp_reg__
 301:OSsrc/os_mem.c ****         return (OS_MEM_FULL);
 654               	.LM83:
 655               	/* #NOAPP */
 656 0234 82E7      		ldi r24,lo8(114)
 657 0236 90E0      		ldi r25,hi8(114)
 658 0238 12C0      		rjmp .L28
 659               	.L31:
 302:OSsrc/os_mem.c ****     }
 303:OSsrc/os_mem.c ****     *(void **)pblk      = pmem->OSMemFreeList;   /* Insert released block into free block list     
 661               	.LM84:
 662 023a 8281      		ldd r24,Z+2
 663 023c 9381      		ldd r25,Z+3
 664 023e 8883      		st Y,r24
 665 0240 9983      		std Y+1,r25
 304:OSsrc/os_mem.c ****     pmem->OSMemFreeList = pblk;
 667               	.LM85:
 668 0242 6283      		std Z+2,r22
 669 0244 7383      		std Z+3,r23
 305:OSsrc/os_mem.c ****     pmem->OSMemNFree++;                          /* One more memory block in this partition        
 671               	.LM86:
 672 0246 2F5F      		subi r18,lo8(-(1))
 673 0248 3F4F      		sbci r19,hi8(-(1))
 674 024a 4F4F      		sbci r20,hlo8(-(1))
 675 024c 5F4F      		sbci r21,hhi8(-(1))
 676 024e 2487      		std Z+12,r18
 677 0250 3587      		std Z+13,r19
 678 0252 4687      		std Z+14,r20
 679 0254 5787      		std Z+15,r21
 306:OSsrc/os_mem.c ****     OS_EXIT_CRITICAL();
 681               	.LM87:
 682               	/* #APP */
 683 0256 0F90      		pop __tmp_reg__
 684 0258 0FBE      		out __SREG__,__tmp_reg__
 307:OSsrc/os_mem.c ****     return (OS_NO_ERR);                          /* Notify caller that memory block was released   
 686               	.LM88:
 687               	/* #NOAPP */
 688 025a 80E0      		ldi r24,lo8(0)
 689 025c 90E0      		ldi r25,hi8(0)
 690               	.L28:
 691               	/* epilogue: frame size=0 */
 692 025e DF91      		pop r29
 693 0260 CF91      		pop r28

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?