static void select_list_enqueue(termstate_t *term, struct term_select_info *t) { l4semaphore_down(&term->termsem); t->prev = NULL; t->next = term->select_list; term->select_list = t; l4semaphore_up(&term->termsem); }
static void select_list_dequeue(termstate_t *term, struct term_select_info *t) { if (t) { l4semaphore_down(&term->termsem); if (t == term->select_list) term->select_list = t->next; else t->prev->next = t->next; l4semaphore_up(&term->termsem); } }
static void _add_key(int code) { int new_top = (keylist_head + 1) % CONTXT_KEYLIST_SIZE; if (new_top == keylist_tail) { if (__keyin) LOG("key buffer overrun!"); return; } keylist[keylist_head] = code; keylist_head = new_top; l4semaphore_up(&keysem); }