os_task.lst

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

LST
1,070
字号
 364 0134 70E0      		ldi r23,hi8(0)
 365 0136 0AC0      		rjmp .L8
 366               	.L14:
 619:OSsrc/os_task.c ****     }
 620:OSsrc/os_task.c ****     len  = OS_StrCopy(pname, ptcb->OSTCBTaskName);        /* Yes, copy name from TCB               
 368               	.LM39:
 369 0138 6D5E      		subi r22,lo8(-(19))
 370 013a 7F4F      		sbci r23,hi8(-(19))
 371 013c C901      		movw r24,r18
 372 013e 0E94 0000 		call OS_StrCopy
 621:OSsrc/os_task.c ****     OS_EXIT_CRITICAL();
 374               	.LM40:
 375               	/* #APP */
 376 0142 0F90      		pop __tmp_reg__
 377 0144 0FBE      		out __SREG__,__tmp_reg__
 622:OSsrc/os_task.c ****     *err = OS_NO_ERR;
 379               	.LM41:
 380               	/* #NOAPP */
 381 0146 1882      		st Y,__zero_reg__
 623:OSsrc/os_task.c ****     return (len);
 383               	.LM42:
 384 0148 682F      		mov r22,r24
 385 014a 7727      		clr r23
 386               	.L8:
 624:OSsrc/os_task.c **** }
 388               	.LM43:
 389 014c CB01      		movw r24,r22
 390               	/* epilogue: frame size=0 */
 391 014e DF91      		pop r29
 392 0150 CF91      		pop r28
 393 0152 0895      		ret
 394               	/* epilogue end (size=3) */
 395               	/* function OSTaskNameGet size 74 (69) */
 401               	.Lscope1:
 406               	.global	OSTaskNameSet
 408               	OSTaskNameSet:
 625:OSsrc/os_task.c **** #endif
 626:OSsrc/os_task.c **** 
 627:OSsrc/os_task.c **** /*$PAGE*/
 628:OSsrc/os_task.c **** /*
 629:OSsrc/os_task.c **** ***************************************************************************************************
 630:OSsrc/os_task.c **** *                                        ASSIGN A NAME TO A TASK
 631:OSsrc/os_task.c **** *
 632:OSsrc/os_task.c **** * Description: This function is used to set the name of a task.
 633:OSsrc/os_task.c **** *
 634:OSsrc/os_task.c **** * Arguments  : prio      is the priority of the task that you want the assign a name to.
 635:OSsrc/os_task.c **** *
 636:OSsrc/os_task.c **** *              pname     is a pointer to an ASCII string that contains the name of the task.  The A
 637:OSsrc/os_task.c **** *                        string must be NUL terminated.
 638:OSsrc/os_task.c **** *
 639:OSsrc/os_task.c **** *              err       is a pointer to an error code that can contain one of the following values
 640:OSsrc/os_task.c **** *
 641:OSsrc/os_task.c **** *                        OS_NO_ERR                  if the requested task is resumed
 642:OSsrc/os_task.c **** *                        OS_TASK_NOT_EXIST          if the task has not been created or is assigned
 643:OSsrc/os_task.c **** *                        OS_ERR_TASK_NAME_TOO_LONG  if the name you are giving to the task exceeds 
 644:OSsrc/os_task.c **** *                                                   storage capacity of a task name as specified by
 645:OSsrc/os_task.c **** *                                                   OS_TASK_NAME_SIZE.
 646:OSsrc/os_task.c **** *                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
 647:OSsrc/os_task.c **** *                        OS_PRIO_INVALID            if you specified an invalid priority:
 648:OSsrc/os_task.c **** *                                                   A higher value than the idle task or not OS_PRI
 649:OSsrc/os_task.c **** *
 650:OSsrc/os_task.c **** * Returns    : None
 651:OSsrc/os_task.c **** ***************************************************************************************************
 652:OSsrc/os_task.c **** */
 653:OSsrc/os_task.c **** #if OS_TASK_NAME_SIZE > 1
 654:OSsrc/os_task.c **** void  OSTaskNameSet (INT8U prio, char *pname, INT8U *err)
 655:OSsrc/os_task.c **** {
 410               	.LM44:
 411               	/* prologue: frame size=0 */
 412 0154 EF92      		push r14
 413 0156 FF92      		push r15
 414 0158 0F93      		push r16
 415 015a 1F93      		push r17
 416 015c CF93      		push r28
 417 015e DF93      		push r29
 418               	/* prologue end (size=6) */
 419 0160 7B01      		movw r14,r22
 420 0162 8A01      		movw r16,r20
 656:OSsrc/os_task.c ****     INT8U      len;
 657:OSsrc/os_task.c ****     OS_TCB    *ptcb;
 658:OSsrc/os_task.c **** #if OS_CRITICAL_METHOD == 3                          /* Allocate storage for CPU status register   
 659:OSsrc/os_task.c ****     OS_CPU_SR  cpu_sr;
 660:OSsrc/os_task.c **** 
 661:OSsrc/os_task.c **** 
 662:OSsrc/os_task.c **** 
 663:OSsrc/os_task.c ****     cpu_sr = 0;                                      /* Prevent compiler warning                   
 664:OSsrc/os_task.c **** #endif    
 665:OSsrc/os_task.c **** #if OS_ARG_CHK_EN > 0
 666:OSsrc/os_task.c ****     if (prio > OS_LOWEST_PRIO) {                     /* Task priority valid ?                      
 422               	.LM45:
 423 0164 8034      		cpi r24,lo8(64)
 424 0166 20F0      		brlo .L18
 667:OSsrc/os_task.c ****         if (prio != OS_PRIO_SELF) {              
 426               	.LM46:
 427 0168 8F3F      		cpi r24,lo8(-1)
 428 016a 11F0      		breq .L18
 668:OSsrc/os_task.c ****             *err = OS_PRIO_INVALID;                  /* No                                         
 430               	.LM47:
 431 016c 8AE2      		ldi r24,lo8(42)
 432 016e 2BC0      		rjmp .L25
 433               	.L18:
 669:OSsrc/os_task.c ****             return;
 670:OSsrc/os_task.c ****         }
 671:OSsrc/os_task.c ****     }
 672:OSsrc/os_task.c ****     if (pname == (char *)0) {                        /* Is 'pname' a NULL pointer?                 
 435               	.LM48:
 436 0170 E114      		cp r14,__zero_reg__
 437 0172 F104      		cpc r15,__zero_reg__
 438 0174 11F4      		brne .L20
 673:OSsrc/os_task.c ****         *err = OS_ERR_PNAME_NULL;					 /* Yes                                            */
 440               	.LM49:
 441 0176 8FE0      		ldi r24,lo8(15)
 442 0178 26C0      		rjmp .L25
 443               	.L20:
 674:OSsrc/os_task.c ****         return;
 675:OSsrc/os_task.c ****     }
 676:OSsrc/os_task.c **** #endif
 677:OSsrc/os_task.c ****     OS_ENTER_CRITICAL();
 445               	.LM50:
 446               	/* #APP */
 447 017a 0FB6      		in __tmp_reg__,__SREG__
 448 017c F894      		cli
 449 017e 0F92      		push __tmp_reg__
 678:OSsrc/os_task.c ****     if (prio == OS_PRIO_SELF) {                      /* See if caller desires to set it's own name 
 451               	.LM51:
 452               	/* #NOAPP */
 453 0180 8F3F      		cpi r24,lo8(-1)
 454 0182 29F4      		brne .L21
 679:OSsrc/os_task.c ****         prio = OSTCBCur->OSTCBPrio;
 456               	.LM52:
 457 0184 E091 0000 		lds r30,OSTCBCur
 458 0188 F091 0000 		lds r31,(OSTCBCur)+1
 459 018c 8685      		ldd r24,Z+14
 460               	.L21:
 680:OSsrc/os_task.c ****     }
 681:OSsrc/os_task.c ****     ptcb = OSTCBPrioTbl[prio];
 462               	.LM53:
 463 018e E82F      		mov r30,r24
 464 0190 FF27      		clr r31
 465 0192 EE0F      		add r30,r30
 466 0194 FF1F      		adc r31,r31
 467 0196 E050      		subi r30,lo8(-(OSTCBPrioTbl))
 468 0198 F040      		sbci r31,hi8(-(OSTCBPrioTbl))
 469 019a C081      		ld r28,Z
 470 019c D181      		ldd r29,Z+1
 682:OSsrc/os_task.c ****     if (ptcb == (OS_TCB *)0) {                       /* Does task exist?                           
 472               	.LM54:
 473 019e 2097      		sbiw r28,0
 474 01a0 19F4      		brne .L22
 683:OSsrc/os_task.c ****         OS_EXIT_CRITICAL();                          /* No                                         
 476               	.LM55:
 477               	/* #APP */
 478 01a2 0F90      		pop __tmp_reg__
 479 01a4 0FBE      		out __SREG__,__tmp_reg__
 480               	/* #NOAPP */
 481 01a6 05C0      		rjmp .L26
 482               	.L22:
 684:OSsrc/os_task.c ****         *err = OS_TASK_NOT_EXIST;
 685:OSsrc/os_task.c ****         return;
 686:OSsrc/os_task.c ****     }
 687:OSsrc/os_task.c ****     if (ptcb == (OS_TCB *)1) {                       /* Task assigned to a Mutex?                  
 484               	.LM56:
 485 01a8 C130      		cpi r28,1
 486 01aa D105      		cpc r29,__zero_reg__
 487 01ac 21F4      		brne .L23
 688:OSsrc/os_task.c ****         OS_EXIT_CRITICAL();                          /* Yes                                        
 489               	.LM57:
 490               	/* #APP */
 491 01ae 0F90      		pop __tmp_reg__
 492 01b0 0FBE      		out __SREG__,__tmp_reg__
 493               	/* #NOAPP */
 494               	.L26:
 689:OSsrc/os_task.c ****         *err = OS_TASK_NOT_EXIST;
 496               	.LM58:
 497 01b2 8BE0      		ldi r24,lo8(11)
 498 01b4 08C0      		rjmp .L25
 499               	.L23:
 690:OSsrc/os_task.c ****         return;
 691:OSsrc/os_task.c ****     }
 692:OSsrc/os_task.c ****     len = OS_StrLen(pname);                          /* Yes, Can we fit the string in the TCB?     
 501               	.LM59:
 502 01b6 C701      		movw r24,r14
 503 01b8 0E94 0000 		call OS_StrLen
 693:OSsrc/os_task.c ****     if (len > (OS_TASK_NAME_SIZE - 1)) {             /*      No                                    
 505               	.LM60:
 506 01bc 8830      		cpi r24,lo8(8)
 507 01be 30F0      		brlo .L24
 694:OSsrc/os_task.c ****         OS_EXIT_CRITICAL();
 509               	.LM61:
 510               	/* #APP */
 511 01c0 0F90      		pop __tmp_reg__
 512 01c2 0FBE      		out __SREG__,__tmp_reg__
 695:OSsrc/os_task.c ****         *err = OS_ERR_TASK_NAME_TOO_LONG;
 514               	.LM62:
 515               	/* #NOAPP */
 516 01c4 8EE0      		ldi r24,lo8(14)
 517               	.L25:
 518 01c6 F801      		movw r30,r16
 519 01c8 8083      		st Z,r24
 696:OSsrc/os_task.c ****         return;
 521               	.LM63:
 522 01ca 09C0      		rjmp .L17
 523               	.L24:
 697:OSsrc/os_task.c ****     } 
 698:OSsrc/os_task.c ****     (void)OS_StrCopy(ptcb->OSTCBTaskName, pname);    /*      Yes, copy to TCB                      
 525               	.LM64:
 526 01cc B701      		movw r22,r14
 527 01ce CE01      		movw r24,r28
 528 01d0 4396      		adiw r24,19
 529 01d2 0E94 0000 		call OS_StrCopy
 699:OSsrc/os_task.c ****     OS_EXIT_CRITICAL();
 531               	.LM65:
 532               	/* #APP */
 533 0

⌨️ 快捷键说明

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