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 nsleepers;
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 } 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
00108
00109
typedef RT_EVENT_PLACEHOLDER RT_EVENT;
00110
00111
int rt_event_bind(RT_EVENT *event,
00112
const char *name);
00113
00114
#endif
00115
00116
#ifdef __cplusplus
00117
extern "C" {
00118
#endif
00119
00120
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