void runqueue_task_complete(struct runqueue_task *t)
{
+ struct runqueue *q = t->q;
+
if (!t->queued)
return;
t->queued = false;
t->running = false;
t->cancelled = false;
+ if (t->complete)
+ t->complete(q, t);
runqueue_start_next(t->q);
}
__runqueue_proc_cb(struct uloop_process *p, int ret)
{
struct runqueue_process *t = container_of(p, struct runqueue_process, proc);
- struct runqueue *q = t->task.q;
runqueue_task_complete(&t->task);
- if (t->complete)
- t->complete(q, t, ret);
}
void runqueue_process_cancel_cb(struct runqueue *q, struct runqueue_task *t, int type)
uloop_process_delete(&p->proc);
kill(p->proc.pid, SIGKILL);
- __runqueue_proc_cb(&p->proc, -1);
}
static const struct runqueue_task_type runqueue_proc_type = {