⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_task.lst

📁 称植到lpc2124上的UCOS2.85版 是本人初学移植和ARM的成果 可能已有人上传类似的了
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -