Rémi Bernon (@rbernon) commented about server/async.c:
+static void async_cancel_dump( struct object *obj, int verbose ); +static int async_cancel_signaled( struct object *obj, struct wait_queue_entry *entry ); +static void async_cancel_destroy( struct object *obj );
+static const struct object_ops async_cancel_ops = +{
- sizeof(struct async_cancel), /* size */
- &no_type, /* type */
- async_cancel_dump, /* dump */
- add_queue, /* add_queue */
- remove_queue, /* remove_queue */
- async_cancel_signaled, /* signaled */
- no_satisfied, /* satisfied */
- no_signal, /* signal */
- no_get_fd, /* get_fd */
- default_get_sync, /* get_sync */
Let's use an event sync, its signaled logic should be simple enough.