1#include <linux/workqueue.h>
2#include <barrelfish/waitset.h>
3
4struct test {
5	struct work_struct work;
6};
7
8static void test_fn(struct work_struct *work) {
9	printf("1\n");
10}
11
12static void polling_loop(void) {
13	errval_t err;
14	struct waitset *ws = get_default_waitset();
15	while (1) {
16		err = event_dispatch(ws);
17		if (err_is_fail(err)) {
18			DEBUG_ERR(err, "in event_dispatch");
19			break;
20		}
21	}
22}
23
24int main(int argc, char ** argv) {
25	struct workqueue_struct *wq;
26	struct test *test1 = malloc(sizeof *test1);
27	struct test *test2 = malloc(sizeof *test2);
28
29	printf("init\n");
30	wq = create_singlethread_workqueue("name");
31	INIT_WORK(&test1->work, test_fn);
32	INIT_WORK(&test2->work, test_fn);
33	queue_work(wq, &test1->work);
34	queue_work(wq, &test2->work);
35	polling_loop();
36}
37