1 #define SUBSYSTEM APPLICATION_EXEC "_worker_cb: " 2 3 #define WORKER_CB_CALLBACK_MAX 256 /* Callback structures to allocate */ 4 5 struct t_cb { 6 unsigned int n; /* Callback function order number */ 7 8 void *cb; /* Callback function to run */ 9 10 struct w_par *wp; /* Callback function window event structure */ 11 struct d_par *dp; /* Callback function subroutine parameter structure */ 12 }; 13 14 struct t_str { 15 unsigned int c_lck; /* Callback function pipeline is locked or not */ 16 unsigned int c_pnd; /* Callback function is pending or not */ 17 unsigned int c_cnt; /* Callback function counter */ 18 19 struct t_cb cb[2][WORKER_CB_CALLBACK_MAX]; /* Callback structures */ 20 }; 21 22 static void worker_cb_cancel(void *); 23 static void worker_cb_cancel_local(struct t_ctx *, struct t_str *); 24 static void worker_cb_finalize(struct t_ctx *); 25 static int worker_cb_init(struct t_ctx *); 26 static int worker_cb_init_local(struct t_ctx *, struct t_str *); 27 28 static void callback_event_run(struct t_str *); 29 static unsigned int callback_event_run_op(struct t_str *); 30 static int callback_event_run_cmp(const void *, const void *); 31