event_flags.c

00001 #include <native/event.h>
00002 
00003 #define EVENT_INIT        0x0           /* No flags present at init */
00004 #define EVENT_MODE        EV_PRIO       /* Tasks will wait by priority order */
00005 #define EVENT_WAIT_MASK   (0x1|0x2|0x4) /* List of monitored events */
00006 #define EVENT_SIGNAL_MASK (0x2)         /* List of events to send */
00007 
00008 RT_EVENT ev_desc;
00009 
00010 void foo (void)
00011 
00012 {
00013     unsigned long mask_ret;
00014     int err;
00015 
00016     /* Create an event flag; we could also have attempted to bind to
00017        some pre-existing object, using rt_event_bind() instead of
00018        creating it. */
00019 
00020     err = rt_event_create(&ev_desc,
00021                           "MyEventFlagGroup",
00022                           EVENT_INIT,
00023                           EVENT_MODE);
00024 
00025     /* Now, wait for some task to post some event flags... */
00026 
00027     err = rt_event_wait(&ev_desc,
00028                         EVENT_WAIT_MASK,
00029                         &mask_ret,
00030                         EV_ANY, /* Disjunctive wait */
00031                         TM_INFINITE);
00032     /* ... */
00033 }
00034 
00035 void bar (void)
00036 
00037 {
00038     /* ... */
00039 
00040     /* Post some events. */
00041 
00042     rt_event_signal(&ev_desc,EVENT_SIGNAL_MASK);
00043 
00044     /* ... */
00045 }
00046 
00047 void cleanup (void)
00048 
00049 {
00050     rt_event_delete(&ev_desc);
00051 }

Generated on Mon Mar 24 18:02:40 2008 for Xenomai API by  doxygen 1.5.3