plan9port

[fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port # fast
git clone https://src.adamsgaard.dk/plan9port.git # slow
Log | Files | Refs | README | LICENSE Back to index

commit c02bc16b4b963327a66f7455c23665f55d63b398
parent eacc13ea5cb1f59e3d1365c1149a77c5ef804e7d
Author: rsc <devnull@localhost>
Date:   Sun, 25 Jun 2006 23:50:02 +0000

nbrecv

Diffstat:
Minclude/mux.h | 11++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)

diff --git 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);