38 fprintf(stderr,
"All done!\n");
44 return s->
kill ?
"killer" :
"sleeper";
53 fprintf(stderr,
"[%d/%d] start 'sleep %d' (%s)\n",
q->
running_tasks,
65 sprintf(str,
"%d", s->
val);
66 execlp(
"sleep",
"sleep", str, NULL);
74 fprintf(stderr,
"[%d/%d] cancel 'sleep %d' (%s)\n",
q->
running_tasks,
83 fprintf(stderr,
"[%d/%d] finish 'sleep %d' (%s) \n",
q->
running_tasks,
92 fprintf(stderr,
"[%d/%d] killing process (%s)\n",
q->
running_tasks,
106 struct sleeper *s = calloc(1,
sizeof(*s));
140 int main(
int argc,
char **argv)
#define container_of(ptr, type, member)
void runqueue_process_cancel_cb(struct runqueue *q, struct runqueue_task *t, int type)
void runqueue_task_add(struct runqueue *q, struct runqueue_task *t, bool running)
void runqueue_init(struct runqueue *q)
void runqueue_task_kill(struct runqueue_task *t)
void runqueue_process_add(struct runqueue *q, struct runqueue_process *p, pid_t pid)
void runqueue_process_kill_cb(struct runqueue *q, struct runqueue_task *t)
struct runqueue_task task
void(* run)(struct runqueue *q, struct runqueue_task *t)
const struct runqueue_task_type * type
void(* complete)(struct runqueue *q, struct runqueue_task *t)
void(* empty_cb)(struct runqueue *q)
struct runqueue_process proc
static struct sleeper * create_sleeper(int val, const struct runqueue_task_type *type, bool kill)
static void q_sleep_run(struct runqueue *q, struct runqueue_task *t)
int main(int argc, char **argv)
static void q_empty(struct runqueue *q)
static void my_runqueue_process_kill_cb(struct runqueue *q, struct runqueue_task *p)
static void timer_cb(struct uloop_timeout *t)
static void q_sleep_complete(struct runqueue *q, struct runqueue_task *p)
static void q_sleep_cancel(struct runqueue *q, struct runqueue_task *t, int type)
static const char * sleeper_type(struct sleeper *s)
static void add_sleeper(int val)
int uloop_timeout_add(struct uloop_timeout *timeout)
int uloop_timeout_set(struct uloop_timeout *timeout, int msecs)
static void uloop_end(void)
static int uloop_run(void)