kthread_usleep()
[akaros.git] / kern / src / kthread.c
index ef17394..8dbc0b6 100644 (file)
@@ -180,6 +180,17 @@ void kthread_yield(void)
        sem_down(sem);
 }
 
+void kthread_usleep(uint64_t usec)
+{
+       /* TODO: classic ksched issue: where do we want the wake up to happen? */
+       struct timer_chain *tchain = &per_cpu_info[core_id()].tchain;
+       struct alarm_waiter a_waiter;
+       init_awaiter(&a_waiter, 0);
+       set_awaiter_rel(&a_waiter, usec);
+       set_alarm(tchain, &a_waiter);
+       sleep_on_awaiter(&a_waiter);
+}
+
 static void __ktask_wrapper(uint32_t srcid, long a0, long a1, long a2)
 {
        ERRSTACK(1);