8 _reqqueuenote(void *, char *note)
10 return strcmp(note, "flush") == 0;
14 _reqqueueproc(void *v)
22 threadnotify(_reqqueuenote, 1);
28 r = (Req*)(((char*)q->next) - ((char*)&((Req*)0)->qu));
29 r->qu.next->prev = r->qu.prev;
30 r->qu.prev->next = r->qu.next;
32 memset(&r->qu, 0, sizeof(r->qu));
44 q = emalloc9p(sizeof(*q));
45 memset(q, 0, sizeof(*q));
47 q->next = q->prev = q;
48 q->pid = threadpid(proccreate(_reqqueueproc, q, mainstacksize));
53 reqqueuepush(Reqqueue *q, Req *r, void (*f)(Req *))
59 q->prev->next = &r->qu;
66 reqqueueflush(Reqqueue *q, Req *r)
70 postnote(PNPROC, q->pid, "flush");
73 if(r->qu.next != nil){
74 r->qu.next->prev = r->qu.prev;
75 r->qu.prev->next = r->qu.next;
77 memset(&r->qu, 0, sizeof(r->qu));
79 respond(r, "interrupted");