From c02bc16b4b963327a66f7455c23665f55d63b398 Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 25 Jun 2006 23:50:02 +0000 Subject: nbrecv --- include/mux.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/mux.h b/include/mux.h index 01d1779c..53321fa5 100644 --- a/include/mux.h +++ b/include/mux.h @@ -12,11 +12,13 @@ typedef struct Muxqueue Muxqueue; struct Muxrpc { + Mux *mux; Muxrpc *next; Muxrpc *prev; Rendez r; uint tag; void *p; + int waiting; }; struct Mux @@ -25,6 +27,7 @@ struct Mux uint maxtag; int (*send)(Mux*, void*); void *(*recv)(Mux*); + void *(*nbrecv)(Mux*); int (*gettag)(Mux*, void*); int (*settag)(Mux*, void*, uint); void *aux; /* for private use by client */ @@ -41,17 +44,19 @@ struct Mux uint mwait; uint freetag; Muxrpc **wait; - uint muxer; + Muxrpc *muxer; Muxrpc sleep; }; void muxinit(Mux*); void* muxrpc(Mux*, void*); -void muxthreads(Mux*); +void muxprocs(Mux*); +Muxrpc* muxrpcstart(Mux*, void*); +void* muxrpccanfinish(Muxrpc*); /* private */ int _muxsend(Mux*, void*); -void* _muxrecv(Mux*); +void* _muxrecv(Mux*, int); void _muxsendproc(void*); void _muxrecvproc(void*); Muxqueue *_muxqalloc(void); -- cgit v1.2.3