COS-II中uCOS_II.H源码中文注释版_第1页
COS-II中uCOS_II.H源码中文注释版_第2页
COS-II中uCOS_II.H源码中文注释版_第3页
COS-II中uCOS_II.H源码中文注释版_第4页
COS-II中uCOS_II.H源码中文注释版_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、xilentz的网络文摘博客园    首页    新随笔    联系    订阅    管理 随笔 - 204  文章 - 0 评论 - 10 trackbacks - 0 ucos_ii.h/*                  

2、0;                             uc/os-ii*                    

3、                      the real-time kernel*                         &#

4、160;  (c) copyright 1992-2002, jean j. labrosse, weston, fl*                                       &

5、#160;   all rights reserved* file : ucos_ii.h* by   : jean j. labrosse*/ /*                                  &

6、#160;          miscellaneous*/ #define  os_version              252                    /*

7、version of uc/os-ii (vx.yy mult. by 100)    */ #ifdef   os_globals#define  os_ext#else#define  os_ext  extern#endif #ifndef  false#define  false                 

8、0;   0#endif #ifndef  true#define  true                      1#endif #define  os_prio_self           0xff  

9、60;                 /* indicate self priority                      */ #if os_task_stat_en > 0#define  os_n_

10、sys_tasks            2                    /* number of system tasks              

11、;        */#else#define  os_n_sys_tasks            1#endif #define  os_stat_prio       (os_lowest_prio - 1)        /* statistic task pr

12、iority                     */#define  os_idle_prio       (os_lowest_prio)            /* idle   

13、   task priority                     */ #define  os_event_tbl_size (os_lowest_prio) / 8 + 1)   /* size of event table         

14、0;               */#define  os_rdy_tbl_size   (os_lowest_prio) / 8 + 1)   /* size of ready table                  &

15、#160;      */ #define  os_task_idle_id       65535                    /* i.d. numbers for idle and stat tasks      

16、  */#define  os_task_stat_id       65534 #define  os_event_en       (os_q_en > 0) && (os_max_qs > 0) | (os_mbox_en > 0) | (os_sem_en > 0) | (os_mutex_en > 0)/能使队列代码产生&&申请队列控制块最大数不为零|能使邮箱代码产生|/能使

17、信号量代码产生|能使互斥量代码产生 /*$page*/ /*                              task status (bit definition for ostcbstat)*/#define  os_stat_rdy    &#

18、160;       0x00        /* ready to run                                 

19、;           */#define  os_stat_sem            0x01        /* pending on semaphore            &#

20、160;                       */#define  os_stat_mbox           0x02        /* pending on mailbox 

21、                                     */#define  os_stat_q         

22、0;    0x04        /* pending on queue                                   

23、60;    */#define  os_stat_suspend        0x08        /* task is suspended                       

24、;                */#define  os_stat_mutex          0x10        /* pending on mutual exclusion semaphore      &

25、#160;            */#define  os_stat_flag           0x20        /* pending on event flag group          &#

26、160;                  */ /*                               &#

27、160;        os_event types*/#define  os_event_type_unused      0#define  os_event_type_mbox        1#define  os_event_type_q           2#def

28、ine  os_event_type_sem         3#define  os_event_type_mutex       4#define  os_event_type_flag        5 /*            &

29、#160;                            event flags*/#define  os_flag_wait_clr_all      0        /* wait fo

30、r all    the bits specified to be clr (i.e. 0)   */ #define  os_flag_wait_clr_and      0 #define  os_flag_wait_clr_any      1        /* wait for any of the bits specified to be clr

31、 (i.e. 0)   */#define  os_flag_wait_clr_or       1 #define  os_flag_wait_set_all      2        /* wait for all    the bits specified to be set (i.e. 1)   */ #define&

32、#160; os_flag_wait_set_and      2 #define  os_flag_wait_set_any      3        /* wait for any of the bits specified to be set (i.e. 1)   */#define  os_flag_wait_set_or    

33、0;  3 #define  os_flag_consume        0x80        /* consume the flags if condition(s) satisfied             */ #define  os_flag_clr    

34、;           0#define  os_flag_set               1 /*       possible values for 'opt' argument of ossemdel(), osmboxdel(), osqdel() and os

35、mutexdel()*/#define  os_del_no_pend            0#define  os_del_always             1 /*              

36、0;                      os?postopt() options* these #defines are used to establish the options for osmboxpostopt() and osqpostopt().*/#define  os_post_opt_none     &

37、#160; 0x00        /* post to highest priority task waiting                   */#define  os_post_opt_broadcast  0x01        /* broa

38、dcast message to all tasks waiting                  */  #define  os_post_opt_front      0x02        /* post to highest priority task waiting 

39、;                  */ /*                                

40、; task options (see ostaskcreateext() */#define  os_task_opt_stk_chk  0x0001        /* enable stack checking for the task                      */#defi

41、ne  os_task_opt_stk_clr  0x0002        /* clear the stack when the task is create                 */#define  os_task_opt_save_fp  0x0004     

42、;   /* save the contents of any floating-point registers       */ /*                                

43、             error codes*/#define os_no_err                 0 #define os_err_event_type         1#define os_err_pend_isr

44、           2#define os_err_post_null_ptr      3#define os_err_pevent_null        4#define os_err_post_isr           5#define os_err_query_is

45、r          6#define os_err_invalid_opt        7#define os_err_task_waiting       8 #define os_timeout               10#d

46、efine os_task_not_exist        11 #define os_mbox_full             20 #define os_q_full                30 #define os_prio_exist

47、60;           40#define os_prio_err              41#define os_prio_invalid          42 #define os_sem_ovf      

48、;         50 #define os_task_del_err          60#define os_task_del_idle         61#define os_task_del_req          62#define os_t

49、ask_del_isr          63 #define os_no_more_tcb           70 #define os_time_not_dly          80#define os_time_invalid_minutes  81#define os_time_invalid_s

50、econds  82#define os_time_invalid_milli    83#define os_time_zero_dly         84 #define os_task_suspend_prio     90#define os_task_suspend_idle     91 #define os_task_resume_prio   

51、60; 100#define os_task_not_suspended   101 #define os_mem_invalid_part     110#define os_mem_invalid_blks     111#define os_mem_invalid_size     112#define os_mem_no_free_blks     113#define os_mem_full &#

52、160;           114#define os_mem_invalid_pblk     115#define os_mem_invalid_pmem     116#define os_mem_invalid_pdata    117#define os_mem_invalid_addr     118 #define os_err_n

53、ot_mutex_owner  120 #define os_task_opt_err         130 #define os_err_del_isr          140#define os_err_create_isr       141 #define os_flag_invalid_pgrp    150#de

54、fine os_flag_err_wait_type   151#define os_flag_err_not_rdy     152#define os_flag_invalid_opt     153#define os_flag_grp_depleted    154 /*$page*/ /*              &

55、#160;                           event control block*/ #if (os_event_en > 0) && (os_max_events > 0)typedef struct     int8u   oseven

56、ttype;                   /* type of event control block (see os_event_type_?)      */                

57、0;                          /事件控制块类型(见os_event_type)    int8u   oseventgrp;            

58、60;       /* group corresponding to tasks waiting for event to occur  */                                &

59、#160;          /事件群体响应去等待任务事件发生    int16u  oseventcnt;                    /* semaphore count (not used if other event type)   

60、;        */                                           /

61、信号量,在其它事件中不用    void   *oseventptr;                    /* pointer to message or queue structure              &

62、#160;     */                                           /消息或者队列结构指针

63、0;   int8u   oseventtblos_event_tbl_size; /* list of tasks waiting for event to occur                 */                

64、                           /任务列表等待事件发生 os_event;#endif /*                   

65、;                    event flags control block*/ #if (os_version >= 251) && (os_flag_en > 0) && (os_max_flags > 0)typedef struct         

66、60;                   /* event flag group                            &

67、#160;           */    int8u         osflagtype;               /* should be set to os_event_type_flag    &

68、#160;                */    void         *osflagwaitlist;           /* pointer to first node of task waiting on event fla

69、g     */    os_flags      osflagflags;              /* 8, 16 or 32 bit flags                

70、60;                  */ os_flag_grp;    typedef struct                         &

71、#160;   /* event flag wait list node                               */    void        

72、 *osflagnodenext;           /* pointer to next     node in wait list                   */    void    

73、0;    *osflagnodeprev;           /* pointer to previous node in wait list                   */    void    

74、0;    *osflagnodetcb;            /* pointer to tcb of waiting task                          */  

75、0;   void         *osflagnodeflaggrp;        /* pointer to event flag group                       &#

76、160;     */      os_flags      osflagnodeflags;          /* event flag to wait on                  &

77、#160;                */      int8u         osflagnodewaittype;       /* type of wait:        &#

78、160;                                  */                

79、;                            /*      os_flag_wait_and              

80、60;                    */                              

81、              /*      os_flag_wait_all                            

82、0;      */                                            /*

83、0;     os_flag_wait_or                                    */       

84、60;                                    /*      os_flag_wait_any      &

85、#160;                            */ os_flag_node;#endif /*                  

86、;                        message mailbox data*/ #if os_mbox_en > 0typedef struct     void   *osmsg;         

87、0;               /* pointer to message in mailbox                            */  

88、0; int8u   oseventtblos_event_tbl_size; /* list of tasks waiting for event to occur                 */    int8u   oseventgrp;          

89、          /* group corresponding to tasks waiting for event to occur  */ os_mbox_data;#endif /*                          

90、;           memory partition data structures*/ #if (os_mem_en > 0) && (os_max_mem_part > 0)typedef struct                      

91、0; /* memory control block                                         */    void &#

92、160; *osmemaddr;                 /* pointer to beginning of memory partition                     */    vo

93、id   *osmemfreelist;             /* pointer to list of free memory blocks                        */  

94、0; int32u  osmemblksize;              /* size (in bytes) of each block of memory                      */    in

95、t32u  osmemnblks;                /* total number of blocks in this partition                     */    in

96、t32u  osmemnfree;                /* number of memory blocks remaining in this partition          */ os_mem; typedef struct     void   *osaddr; &#

97、160;                  /* pointer to the beginning address of the memory partition     */    void   *osfreelist;          

98、;      /* pointer to the beginning of the free list of memory blocks   */    int32u  osblksize;                 /* size (in bytes) of each memory block  &#

99、160;                      */    int32u  osnblks;                   /* total number of

100、 blocks in the partition                      */    int32u  osnfree;                  

101、; /* number of memory blocks free                                 */    int32u  osnused;     &#

102、160;             /* number of memory blocks used                                

103、 */ os_mem_data;#endif /*$page*/ /*                                    mutual exclusion semaphore data*/ #if os_mutex_en >

104、 0typedef struct     int8u   oseventtblos_event_tbl_size;  /* list of tasks waiting for event to occur                */    int8u   oseventgrp;    

105、60;                /* group corresponding to tasks waiting for event to occur */    int8u   osvalue;                

106、0;       /* mutex value (0 = used, 1 = available)                   */    int8u   osownerprio;          &

107、#160;         /* mutex owner's task priority or 0xff if no owner         */    int8u   osmutexpip;               

108、60;     /* priority inheritance priority or 0xff if no owner       */ os_mutex_data;#endif /*                          &

109、#160;               message queue data*/ #if os_q_en > 0typedef struct os_q                    /* queue control block   &#

110、160;                                     */    struct os_q   *osqptr;    &#

111、160;         /* link to next queue control block in list of free blocks     */    void         *osqstart;            /* pointer to

112、 start of queue data                              */    void         *osqend;    

113、;          /* pointer to end   of queue data                              */    void&

114、#160;        *osqin;               /* pointer to where next message will be inserted  in   the q  */    void         *os

115、qout;              /* pointer to where next message will be extracted from the q  */    int16u         osqsize;          

116、0;  /* size of queue (maximum number of entries)                   */    int16u         osqentries;        

117、60; /* current number of entries in the queue                      */ os_q; typedef struct     void          *osmsg;   &

118、#160;           /* pointer to next message to be extracted from queue          */    int16u         osnmsgs;       

119、      /* number of messages in message queue                         */    int16u         osqsize;&#

120、160;            /* size of message queue                                  &

121、#160;    */    int8u          oseventtblos_event_tbl_size;  /* list of tasks waiting for event to occur         */    int8u       

122、   oseventgrp;          /* group corresponding to tasks waiting for event to occur     */ os_q_data;#endif /*                   &#

123、160;                       semaphore data*/ #if os_sem_en > 0typedef struct     int16u  oscnt;            &

124、#160;             /* semaphore count                                  

125、       */    int8u   oseventtblos_event_tbl_size;  /* list of tasks waiting for event to occur                */    int8u   oseventgrp; 

126、;                    /* group corresponding to tasks waiting for event to occur */ os_sem_data;#endif /*                 

127、;                           task stack data*/ #if os_task_create_ext_en > 0typedef struct     int32u  osfree;      &#

128、160;             /* number of free bytes on the stack                            */    int

129、32u  osused;                    /* number of bytes used on the stack                      

130、      */ os_stk_data;#endif /*$page*/ /*                                          task control block*/ typedef struct os_tcb     os_stk &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论