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

📄 os_core.lst

📁 称植到lpc2124上的UCOS2.85版 是本人初学移植和ARM的成果 可能已有人上传类似的了
💻 LST
📖 第 1 页 / 共 5 页
字号:
 588:../OSsrc/os_core.c ****                 if (--ptcb->OSTCBDly == 0) {               /* Decrement nbr of ticks to end of dela
 589:../OSsrc/os_core.c ****                                                            /* Check for timeout                    
 590:../OSsrc/os_core.c ****                     if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
 591:../OSsrc/os_core.c ****                         ptcb->OSTCBStat  &= ~(INT8U)OS_STAT_PEND_ANY;          /* Yes, Clear status
 592:../OSsrc/os_core.c ****                         ptcb->OSTCBStatPend = OS_STAT_PEND_TO;                 /* Indicate PEND tim
 593:../OSsrc/os_core.c ****                     } else {
 594:../OSsrc/os_core.c ****                         ptcb->OSTCBStatPend = OS_STAT_PEND_OK;
 595:../OSsrc/os_core.c ****                     }
 596:../OSsrc/os_core.c **** 
 597:../OSsrc/os_core.c ****                     if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) {  /* Is task suspended
 598:../OSsrc/os_core.c ****                         OSRdyGrp               |= ptcb->OSTCBBitY;             /* No,  Make ready  
 599:../OSsrc/os_core.c ****                         OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
 600:../OSsrc/os_core.c ****                     }
 601:../OSsrc/os_core.c ****                 }
 602:../OSsrc/os_core.c ****             }
 603:../OSsrc/os_core.c ****             ptcb = ptcb->OSTCBNext;                        /* Point at next TCB in TCB list        
 604:../OSsrc/os_core.c ****             OS_EXIT_CRITICAL();
 605:../OSsrc/os_core.c ****         }
 606:../OSsrc/os_core.c ****     }
 607:../OSsrc/os_core.c **** }
 608:../OSsrc/os_core.c **** 
 609:../OSsrc/os_core.c **** /*$PAGE*/
 610:../OSsrc/os_core.c **** /*
 611:../OSsrc/os_core.c **** ***************************************************************************************************
 612:../OSsrc/os_core.c **** *                                             GET VERSION
 613:../OSsrc/os_core.c **** *
 614:../OSsrc/os_core.c **** * Description: This function is used to return the version number of uC/OS-II.  The returned value
 615:../OSsrc/os_core.c **** *              corresponds to uC/OS-II's version number multiplied by 100.  In other words, version
 616:../OSsrc/os_core.c **** *              would be returned as 200.
 617:../OSsrc/os_core.c **** *
 618:../OSsrc/os_core.c **** * Arguments  : none
 619:../OSsrc/os_core.c **** *
 620:../OSsrc/os_core.c **** * Returns    : the version number of uC/OS-II multiplied by 100.
 621:../OSsrc/os_core.c **** ***************************************************************************************************
 622:../OSsrc/os_core.c **** */
 623:../OSsrc/os_core.c **** 
 624:../OSsrc/os_core.c **** INT16U  OSVersion (void)
 625:../OSsrc/os_core.c **** {
 626:../OSsrc/os_core.c ****     return (OS_VERSION);
 627:../OSsrc/os_core.c **** }
 628:../OSsrc/os_core.c **** 
 629:../OSsrc/os_core.c **** /*$PAGE*/
 630:../OSsrc/os_core.c **** /*
 631:../OSsrc/os_core.c **** ***************************************************************************************************
 632:../OSsrc/os_core.c **** *                                            DUMMY FUNCTION
 633:../OSsrc/os_core.c **** *
 634:../OSsrc/os_core.c **** * Description: This function doesn't do anything.  It is called by OSTaskDel().
 635:../OSsrc/os_core.c **** *
 636:../OSsrc/os_core.c **** * Arguments  : none
 637:../OSsrc/os_core.c **** *
 638:../OSsrc/os_core.c **** * Returns    : none
 639:../OSsrc/os_core.c **** ***************************************************************************************************
 640:../OSsrc/os_core.c **** */
 641:../OSsrc/os_core.c **** 
 642:../OSsrc/os_core.c **** #if OS_TASK_DEL_EN > 0
 643:../OSsrc/os_core.c **** void  OS_Dummy (void)
 644:../OSsrc/os_core.c **** {
 645:../OSsrc/os_core.c **** }
 646:../OSsrc/os_core.c **** #endif
 647:../OSsrc/os_core.c **** 
 648:../OSsrc/os_core.c **** /*$PAGE*/
 649:../OSsrc/os_core.c **** /*
 650:../OSsrc/os_core.c **** ***************************************************************************************************
 651:../OSsrc/os_core.c **** *                             MAKE TASK READY TO RUN BASED ON EVENT OCCURING
 652:../OSsrc/os_core.c **** *
 653:../OSsrc/os_core.c **** * Description: This function is called by other uC/OS-II services and is used to ready a task that 
 654:../OSsrc/os_core.c **** *              waiting for an event to occur.
 655:../OSsrc/os_core.c **** *
 656:../OSsrc/os_core.c **** * Arguments  : pevent      is a pointer to the event control block corresponding to the event.
 657:../OSsrc/os_core.c **** *
 658:../OSsrc/os_core.c **** *              pmsg        is a pointer to a message.  This pointer is used by message oriented ser
 659:../OSsrc/os_core.c **** *                          such as MAILBOXEs and QUEUEs.  The pointer is not used when called by ot
 660:../OSsrc/os_core.c **** *                          service functions.
 661:../OSsrc/os_core.c **** *
 662:../OSsrc/os_core.c **** *              msk         is a mask that is used to clear the status byte of the TCB.  For example
 663:../OSsrc/os_core.c **** *                          OSSemPost() will pass OS_STAT_SEM, OSMboxPost() will pass OS_STAT_MBOX e
 664:../OSsrc/os_core.c **** *
 665:../OSsrc/os_core.c **** *              pend_stat   is used to indicate the readied task's pending status:
 666:../OSsrc/os_core.c **** *
 667:../OSsrc/os_core.c **** *                          OS_STAT_PEND_OK      Task ready due to a post (or delete), not a timeout
 668:../OSsrc/os_core.c **** *                                               an abort.
 669:../OSsrc/os_core.c **** *                          OS_STAT_PEND_ABORT   Task ready due to an abort.
 670:../OSsrc/os_core.c **** *
 671:../OSsrc/os_core.c **** * Returns    : none
 672:../OSsrc/os_core.c **** *
 673:../OSsrc/os_core.c **** * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
 674:../OSsrc/os_core.c **** ***************************************************************************************************
 675:../OSsrc/os_core.c **** */
 676:../OSsrc/os_core.c **** #if OS_EVENT_EN
 677:../OSsrc/os_core.c **** INT8U  OS_EventTaskRdy (OS_EVENT *pevent, void *pmsg, INT8U msk, INT8U pend_stat)
 678:../OSsrc/os_core.c **** {
 679:../OSsrc/os_core.c ****     OS_TCB  *ptcb;
 680:../OSsrc/os_core.c ****     INT8U    x;
 681:../OSsrc/os_core.c ****     INT8U    y;
 682:../OSsrc/os_core.c ****     INT8U    prio;
 683:../OSsrc/os_core.c **** #if OS_LOWEST_PRIO <= 63
 684:../OSsrc/os_core.c ****     INT8U    bitx;
 685:../OSsrc/os_core.c ****     INT8U    bity;
 686:../OSsrc/os_core.c **** #else
 687:../OSsrc/os_core.c ****     INT16U   bitx;
 688:../OSsrc/os_core.c ****     INT16U   bity;
 689:../OSsrc/os_core.c ****     INT16U  *ptbl;
 690:../OSsrc/os_core.c **** #endif
 691:../OSsrc/os_core.c **** 
 692:../OSsrc/os_core.c **** 
 693:../OSsrc/os_core.c **** #if OS_LOWEST_PRIO <= 63
 694:../OSsrc/os_core.c ****     y     = OSUnMapTbl[pevent->OSEventGrp];             /* Find HPT waiting for message            
 695:../OSsrc/os_core.c ****     bity  = (INT8U)(1 << y);
 696:../OSsrc/os_core.c ****     x     = OSUnMapTbl[pevent->OSEventTbl[y]];
 697:../OSsrc/os_core.c ****     bitx  = (INT8U)(1 << x);
 698:../OSsrc/os_core.c ****     prio  = (INT8U)((y << 3) + x);                      /* Find priority of task getting the msg   
 699:../OSsrc/os_core.c **** #else
 700:../OSsrc/os_core.c ****     if ((pevent->OSEventGrp & 0xFF) != 0) {             /* Find HPT waiting for message            
 701:../OSsrc/os_core.c ****         y = OSUnMapTbl[pevent->OSEventGrp & 0xFF];
 702:../OSsrc/os_core.c ****     } else {
 703:../OSsrc/os_core.c ****         y = OSUnMapTbl[(pevent->OSEventGrp >> 8) & 0xFF] + 8;
 704:../OSsrc/os_core.c ****     }
 705:../OSsrc/os_core.c ****     bity = (INT16U)(1 << y);
 706:../OSsrc/os_core.c ****     ptbl = &pevent->OSEventTbl[y];
 707:../OSsrc/os_core.c ****     if ((*ptbl & 0xFF) != 0) {
 708:../OSsrc/os_core.c ****         x = OSUnMapTbl[*ptbl & 0xFF];
 709:../OSsrc/os_core.c ****     } else {
 710:../OSsrc/os_core.c ****         x = OSUnMapTbl[(*ptbl >> 8) & 0xFF] + 8;
 711:../OSsrc/os_core.c ****     }
 712:../OSsrc/os_core.c ****     bitx = (INT16U)(1 << x);
 713:../OSsrc/os_core.c ****     prio = (INT8U)((y << 4) + x);                       /* Find priority of task getting the msg   
 714:../OSsrc/os_core.c **** #endif
 715:../OSsrc/os_core.c **** 
 716:../OSsrc/os_core.c ****     pevent->OSEventTbl[y] &= ~bitx;                     /* Remove this task from the waiting list  
 717:../OSsrc/os_core.c ****     if (pevent->OSEventTbl[y] == 0) {
 718:../OSsrc/os_core.c ****         pevent->OSEventGrp &= ~bity;                    /* Clr group bit if this was only task pend
 719:../OSsrc/os_core.c ****     }
 720:../OSsrc/os_core.c ****     ptcb                 =  OSTCBPrioTbl[prio];         /* Point to this task's OS_TCB             
 721:../OSsrc/os_core.c ****     ptcb->OSTCBDly       =  0;                          /* Prevent OSTimeTick() from readying task 
 722:../OSsrc/os_core.c ****     ptcb->OSTCBEventPtr  = (OS_EVENT *)0;               /* Unlink ECB from this task               
 723:../OSsrc/os_core.c **** #if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0)
 724:../OSsrc/os_core.c ****     ptcb->OSTCBMsg       =  pmsg;                       /* Send message directly to waiting task   
 725:../OSsrc/os_core.c **** #else
 726:../OSsrc/os_core.c ****     pmsg                 =  pmsg;                       /* Prevent compiler warning if not used    
 727:../OSsrc/os_core.c **** #endif
 728:../OSsrc/os_core.c ****     ptcb->OSTCBStatPend  =  pend_stat;                  /* Set pend status of post or abort        
 729:../OSsrc/os_core.c ****     ptcb->OSTCBStat     &= ~msk;                        /* Clear bit associated with event type    
 730:../OSsrc/os_core.c ****     if (ptcb->OSTCBStat ==  OS_STAT_RDY) {              /* See if task is ready (could be susp'd)  
 731:../OSsrc/os_core.c ****         OSRdyGrp        |=  bity;                       /* Put task in the ready to run list       
 732:../OSsrc/os_core.c ****         OSRdyTbl[y]     |=  bitx;
 733:../OSsrc/os_core.c ****     }
 734:../OSsrc/os_core.c ****     return (prio);
 735:../OSsrc/os_core.c **** }
 736:../OSsrc/os_core.c **** #endif
 737:../OSsrc/os_core.c **** /*$PAGE*/
 738:../OSsrc/os_core.c **** /*
 739:../OSsrc/os_core.c **** ***************************************************************************************************
 740:../OSsrc/os_core.c **** *                                   MAKE TASK WAIT FOR EVENT TO OCCUR
 741:../OSsrc/os_core.c **** *
 742:../OSsrc/os_core.c **** * Description: This function is called by other uC/OS-II services to suspend a task because an even
 743:../OSsrc/os_core.c **** *              not occurred.
 744:../OSsrc/os_core.c **** *
 745:../OSsrc/os_core.c **** * Arguments  : pevent   is a pointer to the event control block for which the task will be waiting 
 746:../OSsrc/os_core.c **** *
 747:../OSsrc/os_core.c **** * Returns    : none
 748:../OSsrc/os_core.c **** *
 749:../OSsrc/os_core.c **** * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
 750:../OSsrc/os_core.c **** ***************************************************************************************************
 751:../OSsrc/os_core.c **** */
 752:../OSsrc/os_core.c **** #if OS_EVENT_EN
 753:../OSsrc/os_core.c **** void  OS_EventTaskWait (OS_EVENT *pevent)
 754:../OSsrc/os_core.c **** {
 755:../OSsrc/os_core.c ****     INT8U  y;
 756:../OSsrc/os_core.c **** 
 757:../OSsrc/os_core.c **** 
 758:../OSsrc/os_core.c ****     OSTCBCur->OSTCBEventPtr =  pevent;            /* Store pointer to event control block in TCB   
 759:../OSsrc/os_core.c ****     y                       =  OSTCBCur->OSTCBY;  /* Task no longer ready                          
 760:../OSsrc/os_core.c ****     OSRdyTbl[y]            &= ~OSTCBCur->OSTCBBitX;
 761:../OSsrc/os_core.c ****     if (OSRdyTbl[y] == 0) {
 762:../OSsrc/os_core.c ****         OSRdyGrp &= ~OSTCBCur->OSTCBBitY;         /* Clear event grp bit if this was only task pend
 763:../OSsrc/os_core.c ****     }
 764:../OSsrc/os_core.c ****     pevent->OSEventTbl[OSTCBCur->OSTCBY] |= OSTCBCur->OSTCBBitX;          /* Put task in waiting li
 765:../OSsrc/os_core.c ****     pevent->OSEventGrp                   |= OSTCBCur->OSTCBBitY;
 766:../OSsrc/os_core.c **** }
 767:../OSsrc/os_core.c **** #endif
 768:../OSsrc/os_core.c **** /*$PAGE*/
 769:../OSsrc/os_core.c **** /*
 770:../OSsrc/os_core.c **** ***************************************************************************************************
 771:../OSsrc/os_core.c **** *                          MAKE TASK READY TO RUN BASED ON EVENT TIMEOUT OR ABORT
 772:../OSsrc/os_core.c **** *
 773:../OSsrc/os_core.c **** * Description: This function is called by other uC/OS-II services to make a task ready to run becau
 774:../OSsrc/os_core.c **** *              timeout or abort occurred.
 775:../OSsrc/os_core.c **** *
 776:../OSsrc/os_core.c **** * Arguments  : pevent   is a pointer to the event control block which is readying a task.
 777:../OSsrc/os_core.c **** *
 778:../OSsrc/os_core.c **** * Returns    : none
 779:../OSsrc/os_core.c **** *
 780:../OSsrc/os_core.c **** * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
 781:../OSsrc/os_core.c **** ***************************************************************************************************
 782:../OSsrc/os_core.c **** */
 783:../OSsrc/os_core.c **** #if OS_EVENT_EN
 784:../OSsrc/os_core.c **** void  OS_EventTOAbort (OS_EVENT *pevent)
 785:../OSsrc/os_core.c **** {
 786:../OSsrc/os_core.c ****     INT8U  y;
 787:../OSsrc/os_core.c **** 
 788:../OSsrc/os_core.c **** 
 789:../OSsrc/os_core.c ****     y                       =  OSTCBCur->OSTCBY;
 790:../OSsrc/os_core.c ****     pevent->OSEventTbl[y]  &= ~OSTCBCur->OSTCBBitX;    /* Remove task from wait list               
 791:../OSsrc/os_core.c ****     if (pevent->OSEventTbl[y] == 0x00) {
 792:../OSsrc/os_core.c ****         pevent->OSEventGrp &= ~OSTCBCur->OSTCBBitY;
 793:../OSsrc/os_core.c ****     }
 794:../OSsrc/os_core.c ****     OSTCBCur->OSTCBStatPend =  OS_STAT_PEND_OK;        /* Clear pend status                        
 795:../OSsrc/os_core.c ****     OSTCBCur->OSTCBStat     =  OS_STAT_RDY;            /* Set status to ready                      
 796:../OSsrc/os_core.c ****     OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0;           /* No longer waiting for event              
 797:../OSsrc/os_core.c **** }
 798:../OSsrc/os_core.c **** #endif
 799:../OSsrc/os_core.c **** /*$PAGE*/
 800:../OSsrc/os_core.c **** /*
 801:../OSsrc/os_core.c **** ***************************************************************************************************
 802

⌨️ 快捷键说明

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