6 #include <sys/syscall.h>
8 #include <afb/afb-req-itf.h>
9 #include "../afb-thread.h"
16 void addref(void *closure)
18 struct foo *foo = closure;
22 void unref(void *closure)
24 struct foo *foo = closure;
25 if(!--foo->refcount) {
26 printf("%06d FREE\n", foo->value);
31 void fail(void *closure, const char *status, const char *info)
33 struct foo *foo = closure;
34 printf("%06d ERROR %s\n", foo->value, status);
37 struct afb_req_itf itf = {
53 .session_close = NULL,
54 .session_set_LOA = NULL,
62 void process(struct afb_req req)
65 struct foo *foo = req.closure;
66 printf("%06d PROCESS T%d\n", foo->value, (int)syscall(SYS_gettid));
68 ts.tv_nsec = foo->value * 1000;
69 // nanosleep(&ts, NULL);
80 afb_thread_init(4, 1);
81 for (i = 0 ; i < 10000 ; i++) {
82 req.closure = foo = malloc(sizeof *foo);
85 afb_thread_call(req, process, 5, (&ts) + (i % 4));
89 // nanosleep(&ts, NULL);
94 afb_thread_terminate();