/****************************************************************************** * ddekit_lock_unlock * *****************************************************************************/ PUBLIC void ddekit_lock_unlock (ddekit_lock_t *mtx) { ddekit_assert((*mtx)->owner != NULL); (*mtx)->owner = NULL; if((*mtx)->wait_queue) { ddekit_thread_t *waiter = (*mtx)->wait_queue; (*mtx)->wait_queue = waiter->next; waiter->next= NULL; _ddekit_thread_enqueue(waiter); ddekit_yield(); } }
/** yield the current processor to other threads. * * this is a shortcut for kernel-space yielding - it marks the * thread runnable and calls sys_sched_yield(). */ void __sched yield(void) { set_current_state(TASK_RUNNING); ddekit_yield(); }