00001 #include <l4/dde/ddekit/semaphore.h>
00002 #include <l4/dde/ddekit/memory.h>
00003
00004 #include <l4/semaphore/semaphore.h>
00005
00006 struct ddekit_sem {
00007 l4semaphore_t sem;
00008 };
00009
00010 ddekit_sem_t *ddekit_sem_init(int value) {
00011 ddekit_sem_t *sem;
00012
00013 sem = (ddekit_sem_t *) ddekit_simple_malloc(sizeof(*sem));
00014 sem->sem = L4SEMAPHORE_INIT(value);
00015
00016 return sem;
00017 }
00018
00019 void ddekit_sem_deinit(ddekit_sem_t *sem) {
00020 ddekit_simple_free(sem);
00021 }
00022
00023 void ddekit_sem_down(ddekit_sem_t *sem) {
00024 #if 0
00025 printf("%s:%d sem=%p l4sem=0x%08x\n", __FILE__, __LINE__, sem, sem->sem);
00026 enter_kdebug("");
00027 #endif
00028 l4semaphore_down(&sem->sem);
00029
00030 }
00031
00032
00033 int ddekit_sem_down_try(ddekit_sem_t *sem) {
00034 return l4semaphore_try_down(&sem->sem) ? 0 : 1;
00035 }
00036
00037
00038 int ddekit_sem_down_timed(ddekit_sem_t *sem, int timo) {
00039 return l4semaphore_down_timed(&sem->sem, timo);
00040 }
00041
00042 void ddekit_sem_up(ddekit_sem_t *sem) {
00043 #if 0
00044 printf("%s:%d sem=%p l4sem=0x%08x\n", __FILE__, __LINE__, sem, sem->sem);
00045 #endif
00046 l4semaphore_up(&sem->sem);
00047 }
00048