00001
00049 #ifndef _RTAI_EVENT_H
00050 #define _RTAI_EVENT_H
00051
00052 #include <nucleus/synch.h>
00053 #include <rtai/types.h>
00054
00055
00056 #define EV_PRIO XNSYNCH_PRIO
00057 #define EV_FIFO XNSYNCH_FIFO
00058
00059
00060 #define EV_ANY 0x1
00061 #define EV_ALL 0x0
00062
00063 typedef struct rt_event_info {
00064
00065 unsigned long value;
00066
00067 int nwaiters;
00068
00069 char name[XNOBJECT_NAME_LEN];
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;
00084
00085 xnsynch_t synch_base;
00086
00087 unsigned long value;
00088
00089 rt_handle_t handle;
00090
00091 char name[XNOBJECT_NAME_LEN];
00092
00093 #if defined(__KERNEL__) && defined(CONFIG_RTAI_OPT_FUSION)
00094 int source;
00095 #endif
00096
00097 } RT_EVENT;
00098
00099 #ifdef __cplusplus
00100 extern "C" {
00101 #endif
00102
00103 int __event_pkg_init(void);
00104
00105 void __event_pkg_cleanup(void);
00106
00107 #ifdef __cplusplus
00108 }
00109 #endif
00110
00111 #else
00112
00113 typedef RT_EVENT_PLACEHOLDER RT_EVENT;
00114
00115 int rt_event_bind(RT_EVENT *event,
00116 const char *name);
00117
00118 static inline int rt_event_unbind (RT_EVENT *event)
00119
00120 {
00121 event->opaque = RT_HANDLE_INVALID;
00122 return 0;
00123 }
00124
00125 #endif
00126
00127 #ifdef __cplusplus
00128 extern "C" {
00129 #endif
00130
00131
00132
00133 int rt_event_create(RT_EVENT *event,
00134 const char *name,
00135 unsigned long ivalue,
00136 int mode);
00137
00138 int rt_event_delete(RT_EVENT *event);
00139
00140 int rt_event_signal(RT_EVENT *event,
00141 unsigned long mask);
00142
00143 int rt_event_wait(RT_EVENT *event,
00144 unsigned long mask,
00145 unsigned long *mask_r,
00146 int mode,
00147 RTIME timeout);
00148
00149 int rt_event_clear(RT_EVENT *event,
00150 unsigned long mask,
00151 unsigned long *mask_r);
00152
00153 int rt_event_inquire(RT_EVENT *event,
00154 RT_EVENT_INFO *info);
00155
00156 #ifdef __cplusplus
00157 }
00158 #endif
00159
00160 #endif