skins/rtai/event.h

Go to the documentation of this file.
00001 00049 #ifndef _RTAI_EVENT_H 00050 #define _RTAI_EVENT_H 00051 00052 #include <nucleus/synch.h> 00053 #include <rtai/types.h> 00054 00055 /* Creation flags. */ 00056 #define EV_PRIO XNSYNCH_PRIO /* Pend by task priority order. */ 00057 #define EV_FIFO XNSYNCH_FIFO /* Pend by FIFO order. */ 00058 00059 /* Operation flags. */ 00060 #define EV_ANY 0x1 /* Disjunctive wait. */ 00061 #define EV_ALL 0x0 /* Conjunctive wait. */ 00062 00063 typedef struct rt_event_info { 00064 00065 unsigned long value; /* !< Current event group value. */ 00066 00067 int nsleepers; /* !< Number of pending tasks. */ 00068 00069 char name[XNOBJECT_NAME_LEN]; /* !< Symbolic name. */ 00070 00071 } RT_EVENT_INFO; 00072 00073 typedef struct rt_event_placeholder { 00074 rt_handle_t opaque; 00075 } RT_EVENT_PLACEHOLDER; 00076 00077 #if defined(__KERNEL__) || defined(__RTAI_SIM__) 00078 00079 #define RTAI_EVENT_MAGIC 0x55550404 00080 00081 typedef struct rt_event { 00082 00083 unsigned magic; /* !< Magic code - must be first */ 00084 00085 xnsynch_t synch_base; /* !< Base synchronization object. */ 00086 00087 unsigned long value; /* !< Event group value. */ 00088 00089 rt_handle_t handle; /* !< Handle in registry -- zero if unregistered. */ 00090 00091 char name[XNOBJECT_NAME_LEN]; /* !< Symbolic name. */ 00092 00093 } RT_EVENT; 00094 00095 #ifdef __cplusplus 00096 extern "C" { 00097 #endif 00098 00099 int __event_pkg_init(void); 00100 00101 void __event_pkg_cleanup(void); 00102 00103 #ifdef __cplusplus 00104 } 00105 #endif 00106 00107 #else /* !(__KERNEL__ || __RTAI_SIM__) */ 00108 00109 typedef RT_EVENT_PLACEHOLDER RT_EVENT; 00110 00111 int rt_event_bind(RT_EVENT *event, 00112 const char *name); 00113 00114 #endif /* __KERNEL__ || __RTAI_SIM__ */ 00115 00116 #ifdef __cplusplus 00117 extern "C" { 00118 #endif 00119 00120 /* Public interface. */ 00121 00122 int rt_event_create(RT_EVENT *event, 00123 const char *name, 00124 unsigned long ivalue, 00125 int mode); 00126 00127 int rt_event_delete(RT_EVENT *event); 00128 00129 int rt_event_post(RT_EVENT *event, 00130 unsigned long mask); 00131 00132 int rt_event_pend(RT_EVENT *event, 00133 unsigned long mask, 00134 unsigned long *mask_r, 00135 int mode, 00136 RTIME timeout); 00137 00138 int rt_event_inquire(RT_EVENT *event, 00139 RT_EVENT_INFO *info); 00140 00141 #ifdef __cplusplus 00142 } 00143 #endif 00144 00145 #endif /* !_RTAI_EVENT_H */

Generated on Mon Aug 30 13:58:39 2004 for RTAI API by doxygen 1.3.8