Lines Matching defs:dcb
23 void wakeup_set_queue_head(struct dcb *h)
27 // we changed the first dcb in the wakeup queue, which means
33 static inline void set_queue_head(struct dcb *h)
38 void wakeup_remove(struct dcb *dcb)
40 if (dcb->wakeup_time != 0) {
41 if (dcb->wakeup_prev == NULL) {
42 assert(kcb_current->wakeup_queue_head == dcb);
43 set_queue_head(dcb->wakeup_next);
45 assert(dcb->wakeup_prev->wakeup_next == dcb);
46 dcb->wakeup_prev->wakeup_next = dcb->wakeup_next;
48 if (dcb->wakeup_next != NULL) {
49 assert(dcb->wakeup_next->wakeup_prev == dcb);
50 dcb->wakeup_next->wakeup_prev = dcb->wakeup_prev;
52 dcb->wakeup_prev = dcb->wakeup_next = NULL;
59 void wakeup_set(struct dcb *dcb, systime_t waketime)
61 assert(dcb != NULL);
64 wakeup_remove(dcb);
66 dcb->wakeup_time = waketime;
68 for (struct dcb *d = kcb_current->wakeup_queue_head, *p = NULL; ; p = d, d = d->wakeup_next) {
72 dcb->wakeup_prev = NULL;
73 dcb->wakeup_next = d;
75 d->wakeup_prev = dcb;
77 set_queue_head(dcb);
79 dcb->wakeup_next = d;
80 dcb->wakeup_prev = p;
81 p->wakeup_next = dcb;
83 d->wakeup_prev = dcb;
94 struct dcb *d = kcb_current->wakeup_queue_head, *next = NULL;