#include <lunaix/ds/semaphore.h>
-#include <lunaix/sched.h>
+#include <lunaix/kpreempt.h>
void
sem_init(struct sem_t* sem, unsigned int initial)
sem_wait(struct sem_t* sem)
{
while (!atomic_load(&sem->counter)) {
- schedule();
+ // FIXME: better thing like wait queue
+ preempt_current();
}
atomic_fetch_sub(&sem->counter, 1);
}