Beispiel #1
0
/******************************************************************************
 *       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();
	}
}  
Beispiel #2
0
/** 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();
}