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 + -
显示快捷键?