3 #include <sys/kernel.h>
6 #include <machine/stdarg.h>
8 #include <l4/dde/fbsd/dde.h>
9 #include <l4/dde/dde.h>
10 #include <l4/dde/fbsd/bsd_dde.h>
11 #include <l4/log/l4log.h>
12 #include <l4/thread/thread.h>
14 l4_ssize_t l4libc_heapsize = 1*1024*1024;
16 static struct sema sem1;
18 static void cons(void *data) {
21 bsd_dde_prepare_thread("cons");
23 LOG("%d: entered (value=%d)", (int) data, sema_value(&sem1));
25 res = sema_timedwait(&sem1, hz/10);
26 LOG("%d: %s (value=%d)", (int) data, (res?"timeout":"success"), sema_value(&sem1));
29 int main(int argc, char **argv) {
35 sema_init(&sem1, 0, "test semaphore");
37 LOG("----------------------------------------");
39 LOG("wait for timeout");
40 l4thread_create(cons, (void*) 1, L4THREAD_CREATE_ASYNC);
43 LOG("----------------------------------------");
45 LOG("calling post before");
47 l4thread_create(cons, (void*) 2, L4THREAD_CREATE_ASYNC);
50 LOG("----------------------------------------");
52 LOG("waking up one of two threads by post");
53 l4thread_create(cons, (void*) 3, L4THREAD_CREATE_ASYNC);
54 l4thread_create(cons, (void*) 4, L4THREAD_CREATE_ASYNC);
59 LOG("----------------------------------------");
61 LOG("waking up two threads by signal");
62 l4thread_create(cons, (void*) 5, L4THREAD_CREATE_ASYNC);
63 l4thread_create(cons, (void*) 6, L4THREAD_CREATE_ASYNC);
70 LOG("----------------------------------------");
72 l4thread_sleep_forever();