13 struct thread
*thread
;
18 struct timeout_user
*timeout
;
19 struct async
*next
,*prev
;
20 struct async_queue
*q
;
29 void destroy_async( struct async
*async
);
30 void destroy_async_queue( struct async_queue
*q
);
31 void async_notify(struct async
*async
, int status
);
32 struct async
*find_async(struct async_queue
*q
, struct thread
*thread
, void *overlapped
);
33 void async_insert(struct async_queue
*q
, struct async
*async
);
34 struct async
*create_async(struct object
*obj
, struct thread
*thread
,
35 void *func
, void *overlapped
);
36 void async_add_timeout(struct async
*async
, int timeout
);
37 static inline void init_async_queue(struct async_queue
*q
)
39 q
->head
= q
->tail
= NULL
;
42 #define IS_READY(q) (((q).head) && ((q).head->status==STATUS_PENDING))
44 #endif /* _SERVER_ASYNC_ */