📄 os_task.lst
字号:
605:../OSsrc/os_task.c **** * Returns : The length of the string or 0 if the task does not exist.
606:../OSsrc/os_task.c **** ***************************************************************************************************
607:../OSsrc/os_task.c **** */
608:../OSsrc/os_task.c ****
609:../OSsrc/os_task.c **** #if OS_TASK_NAME_SIZE > 1
610:../OSsrc/os_task.c **** INT8U OSTaskNameGet (INT8U prio, INT8U *pname, INT8U *perr)
611:../OSsrc/os_task.c **** {
612:../OSsrc/os_task.c **** OS_TCB *ptcb;
613:../OSsrc/os_task.c **** INT8U len;
614:../OSsrc/os_task.c **** #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status registe
615:../OSsrc/os_task.c **** OS_CPU_SR cpu_sr = 0;
616:../OSsrc/os_task.c **** #endif
617:../OSsrc/os_task.c ****
618:../OSsrc/os_task.c ****
619:../OSsrc/os_task.c ****
620:../OSsrc/os_task.c **** #if OS_ARG_CHK_EN > 0
621:../OSsrc/os_task.c **** if (perr == (INT8U *)0) { /* Validate 'perr'
622:../OSsrc/os_task.c **** return (0);
623:../OSsrc/os_task.c **** }
624:../OSsrc/os_task.c **** if (prio > OS_LOWEST_PRIO) { /* Task priority valid ?
625:../OSsrc/os_task.c **** if (prio != OS_PRIO_SELF) {
626:../OSsrc/os_task.c **** *perr = OS_ERR_PRIO_INVALID; /* No
627:../OSsrc/os_task.c **** return (0);
628:../OSsrc/os_task.c **** }
629:../OSsrc/os_task.c **** }
630:../OSsrc/os_task.c **** if (pname == (INT8U *)0) { /* Is 'pname' a NULL pointer?
631:../OSsrc/os_task.c **** *perr = OS_ERR_PNAME_NULL; /* Yes
632:../OSsrc/os_task.c **** return (0);
633:../OSsrc/os_task.c **** }
634:../OSsrc/os_task.c **** #endif
635:../OSsrc/os_task.c **** if (OSIntNesting > 0) { /* See if trying to call from an ISR
636:../OSsrc/os_task.c **** *perr = OS_ERR_NAME_GET_ISR;
637:../OSsrc/os_task.c **** return (0);
638:../OSsrc/os_task.c **** }
639:../OSsrc/os_task.c **** OS_ENTER_CRITICAL();
640:../OSsrc/os_task.c **** if (prio == OS_PRIO_SELF) { /* See if caller desires it's own name
641:../OSsrc/os_task.c **** prio = OSTCBCur->OSTCBPrio;
642:../OSsrc/os_task.c **** }
643:../OSsrc/os_task.c **** ptcb = OSTCBPrioTbl[prio];
644:../OSsrc/os_task.c **** if (ptcb == (OS_TCB *)0) { /* Does task exist?
645:../OSsrc/os_task.c **** OS_EXIT_CRITICAL(); /* No
646:../OSsrc/os_task.c **** *perr = OS_ERR_TASK_NOT_EXIST;
647:../OSsrc/os_task.c **** return (0);
648:../OSsrc/os_task.c **** }
649:../OSsrc/os_task.c **** if (ptcb == OS_TCB_RESERVED) { /* Task assigned to a Mutex?
650:../OSsrc/os_task.c **** OS_EXIT_CRITICAL(); /* Yes
651:../OSsrc/os_task.c **** *perr = OS_ERR_TASK_NOT_EXIST;
652:../OSsrc/os_task.c **** return (0);
653:../OSsrc/os_task.c **** }
654:../OSsrc/os_task.c **** len = OS_StrCopy(pname, ptcb->OSTCBTaskName); /* Yes, copy name from TCB
655:../OSsrc/os_task.c **** OS_EXIT_CRITICAL();
656:../OSsrc/os_task.c **** *perr = OS_ERR_NONE;
657:../OSsrc/os_task.c **** return (len);
658:../OSsrc/os_task.c **** }
659:../OSsrc/os_task.c **** #endif
660:../OSsrc/os_task.c ****
661:../OSsrc/os_task.c **** /*$PAGE*/
662:../OSsrc/os_task.c **** /*
663:../OSsrc/os_task.c **** ***************************************************************************************************
664:../OSsrc/os_task.c **** * ASSIGN A NAME TO A TASK
665:../OSsrc/os_task.c **** *
666:../OSsrc/os_task.c **** * Description: This function is used to set the name of a task.
667:../OSsrc/os_task.c **** *
668:../OSsrc/os_task.c **** * Arguments : prio is the priority of the task that you want the assign a name to.
669:../OSsrc/os_task.c **** *
670:../OSsrc/os_task.c **** * pname is a pointer to an ASCII string that contains the name of the task. The A
671:../OSsrc/os_task.c **** * string must be NUL terminated.
672:../OSsrc/os_task.c **** *
673:../OSsrc/os_task.c **** * perr is a pointer to an error code that can contain one of the following value
674:../OSsrc/os_task.c **** *
675:../OSsrc/os_task.c **** * OS_ERR_NONE if the requested task is resumed
676:../OSsrc/os_task.c **** * OS_ERR_TASK_NOT_EXIST if the task has not been created or is assigned
677:../OSsrc/os_task.c **** * OS_ERR_TASK_NAME_TOO_LONG if the name you are giving to the task exceeds
678:../OSsrc/os_task.c **** * storage capacity of a task name as specified by
679:../OSsrc/os_task.c **** * OS_TASK_NAME_SIZE.
680:../OSsrc/os_task.c **** * OS_ERR_PNAME_NULL You passed a NULL pointer for 'pname'
681:../OSsrc/os_task.c **** * OS_ERR_PRIO_INVALID if you specified an invalid priority:
682:../OSsrc/os_task.c **** * A higher value than the idle task or not OS_PRI
683:../OSsrc/os_task.c **** * OS_ERR_NAME_SET_ISR if you called this function from an ISR
684:../OSsrc/os_task.c **** *
685:../OSsrc/os_task.c **** * Returns : None
686:../OSsrc/os_task.c **** ***************************************************************************************************
687:../OSsrc/os_task.c **** */
688:../OSsrc/os_task.c **** #if OS_TASK_NAME_SIZE > 1
689:../OSsrc/os_task.c **** void OSTaskNameSet (INT8U prio, INT8U *pname, INT8U *perr)
690:../OSsrc/os_task.c **** {
691:../OSsrc/os_task.c **** INT8U len;
692:../OSsrc/os_task.c **** OS_TCB *ptcb;
693:../OSsrc/os_task.c **** #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register
694:../OSsrc/os_task.c **** OS_CPU_SR cpu_sr = 0;
695:../OSsrc/os_task.c **** #endif
696:../OSsrc/os_task.c ****
697:../OSsrc/os_task.c ****
698:../OSsrc/os_task.c ****
699:../OSsrc/os_task.c **** #if OS_ARG_CHK_EN > 0
700:../OSsrc/os_task.c **** if (perr == (INT8U *)0) { /* Validate 'perr'
701:../OSsrc/os_task.c **** return;
702:../OSsrc/os_task.c **** }
703:../OSsrc/os_task.c **** if (prio > OS_LOWEST_PRIO) { /* Task priority valid ?
704:../OSsrc/os_task.c **** if (prio != OS_PRIO_SELF) {
705:../OSsrc/os_task.c **** *perr = OS_ERR_PRIO_INVALID; /* No
706:../OSsrc/os_task.c **** return;
707:../OSsrc/os_task.c **** }
708:../OSsrc/os_task.c **** }
709:../OSsrc/os_task.c **** if (pname == (INT8U *)0) { /* Is 'pname' a NULL pointer?
710:../OSsrc/os_task.c **** *perr = OS_ERR_PNAME_NULL; /* Yes
711:../OSsrc/os_task.c **** return;
712:../OSsrc/os_task.c **** }
713:../OSsrc/os_task.c **** #endif
714:../OSsrc/os_task.c **** if (OSIntNesting > 0) { /* See if trying to call from an ISR
715:../OSsrc/os_task.c **** *perr = OS_ERR_NAME_SET_ISR;
716:../OSsrc/os_task.c **** return;
717:../OSsrc/os_task.c **** }
718:../OSsrc/os_task.c **** OS_ENTER_CRITICAL();
719:../OSsrc/os_task.c **** if (prio == OS_PRIO_SELF) { /* See if caller desires to set it's own name
720:../OSsrc/os_task.c **** prio = OSTCBCur->OSTCBPrio;
721:../OSsrc/os_task.c **** }
722:../OSsrc/os_task.c **** ptcb = OSTCBPrioTbl[prio];
723:../OSsrc/os_task.c **** if (ptcb == (OS_TCB *)0) { /* Does task exist?
724:../OSsrc/os_task.c **** OS_EXIT_CRITICAL(); /* No
725:../OSsrc/os_task.c **** *perr = OS_ERR_TASK_NOT_EXIST;
726:../OSsrc/os_task.c **** return;
727:../OSsrc/os_task.c **** }
728:../OSsrc/os_task.c **** if (ptcb == OS_TCB_RESERVED) { /* Task assigned to a Mutex?
729:../OSsrc/os_task.c **** OS_EXIT_CRITICAL(); /* Yes
730:../OSsrc/os_task.c **** *perr = OS_ERR_TASK_NOT_EXIST;
731:../OSsrc/os_task.c **** return;
732:../OSsrc/os_task.c **** }
733:../OSsrc/os_task.c **** len = OS_StrLen(pname); /* Yes, Can we fit the string in the TCB?
734:../OSsrc/os_task.c **** if (len > (OS_TASK_NAME_SIZE - 1)) { /* No
735:../OSsrc/os_task.c **** OS_EXIT_CRITICAL();
736:../OSsrc/os_task.c **** *perr = OS_ERR_TASK_NAME_TOO_LONG;
737:../OSsrc/os_task.c **** return;
738:../OSsrc/os_task.c **** }
739:../OSsrc/os_task.c **** (void)OS_StrCopy(ptcb->OSTCBTaskName, pname); /* Yes, copy to TCB
740:../OSsrc/os_task.c **** OS_EXIT_CRITICAL();
741:../OSsrc/os_task.c **** *perr = OS_ERR_NONE;
742:../OSsrc/os_task.c **** }
743:../OSsrc/os_task.c **** #endif
744:../OSsrc/os_task.c ****
745:../OSsrc/os_task.c **** /*$PAGE*/
746:../OSsrc/os_task.c **** /*
747:../OSsrc/os_task.c **** ***************************************************************************************************
748:../OSsrc/os_task.c **** * RESUME A SUSPENDED TASK
749:../OSsrc/os_task.c **** *
750:../OSsrc/os_task.c **** * Description: This function is called to resume a previously suspended task. This is the only cal
751:../OSsrc/os_task.c **** * will remove an explicit task suspension.
752:../OSsrc/os_task.c **** *
753:../OSsrc/os_task.c **** * Arguments : prio is the priority of the task to resume.
754:../OSsrc/os_task.c **** *
755:../OSsrc/os_task.c **** * Returns : OS_ERR_NONE if the requested task is resumed
756:../OSsrc/os_task.c **** * OS_ERR_PRIO_INVALID if the priority you specify is higher that the maximum al
757:../OSsrc/os_task.c **** * (i.e. >= OS_LOWEST_PRIO)
758:../OSsrc/os_task.c **** * OS_ERR_TASK_RESUME_PRIO if the task to resume does not exist
759:../OSsrc/os_task.c **** * OS_ERR_TASK_NOT_EXIST if the task is assigned to a Mutex PIP
760:../OSsrc/os_task.c **** * OS_ERR_TASK_NOT_SUSPENDED if the task to resume has not been suspended
761:../OSsrc/os_task.c **** ***************************************************************************************************
762:../OSsrc/os_task.c **** */
763:../OSsrc/os_task.c ****
764:../OSsrc/os_task.c **** #if OS_TASK_SUSPEND_EN > 0
765:../OSsrc/os_task.c **** INT8U OSTaskResume (INT8U prio)
766:../OSsrc/os_task.c **** {
767:../OSsrc/os_task.c **** OS_TCB *ptcb;
768:../OSsrc/os_task.c **** #if OS_CRITICAL_METHOD == 3 /* Storage for CPU status register
769:../OSsrc/os_task.c **** OS_CPU_SR cpu_sr = 0;
770:../OSsrc/os_task.c **** #endif
771:../OSsrc/os_task.c ****
772:../OSsrc/os_task.c ****
773:../OSsrc/os_task.c ****
774:../OSsrc/os_task.c **** #if OS_ARG_CHK_EN > 0
775:../OSsrc/os_task.c **** if (prio >= OS_LOWEST_PRIO) { /* Make sure task priority is valid
776:../OSsrc/os_task.c **** return (OS_ERR_PRIO_INVALID);
777:../OSsrc/os_task.c **** }
778:../OSsrc/os_task.c **** #endif
779:../OSsrc/os_task.c **** OS_ENTER_CRITICAL();
780:../OSsrc/os_task.c **** ptcb = OSTCBPrioTbl[prio];
781:../OSsrc/os_task.c **** if (ptcb == (OS_TCB *)0) { /* Task to suspend must exist
782:../OSsrc/os_task.c **** OS_EXIT_CRITICAL();
783:../OSsrc/os_task.c **** return (OS_ERR_TASK_RESUME_PRIO);
784:../OSsrc/os_task.c **** }
785:../OSsrc/os_task.c **** if (ptcb == OS_TCB_RESERVED) { /* See if assigned to Mutex
786:../OSsrc/os_task.c **** OS_EXIT_CRITICAL();
787:../OSsrc/os_task.c **** return (OS_ERR_TASK_NOT_EXIST);
788:../OSsrc/os_task.c **** }
789:../OSsrc/os_task.c **** if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) != OS_STAT_RDY) { /* Task must be suspended
790:../OSsrc/os_task.c **** pt
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -