semaphore.c

00001 #include <native/sem.h>
00002 
00003 #define SEM_INIT 1       /* Initial semaphore count */
00004 #define SEM_MODE S_FIFO  /* Wait by FIFO order */
00005 
00006 RT_SEM sem_desc;
00007 
00008 void foo (void)
00009 
00010 {
00011     int err;
00012 
00013     /* Create a semaphore; we could also have attempted to bind to
00014        some pre-existing object, using rt_sem_bind() instead of
00015        creating it. */
00016 
00017     err = rt_sem_create(&sem_desc,"MySemaphore",SEM_INIT,SEM_MODE);
00018 
00019     for (;;) {
00020 
00021         /* Now, wait for a semaphore unit... */
00022         rt_sem_p(&sem_desc,TM_INFINITE);
00023 
00024         /* ... */
00025 
00026         /* then release it. */
00027         rt_sem_v(&sem_desc);
00028 
00029         /* ... */
00030     }
00031 }
00032 
00033 void cleanup (void)
00034 
00035 {
00036     rt_sem_delete(&sem_desc);
00037 }

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