tnbrecv - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit c02bc16b4b963327a66f7455c23665f55d63b398
parent eacc13ea5cb1f59e3d1365c1149a77c5ef804e7d
Author: rsc 
Date:   Sun, 25 Jun 2006 23:50:02 +0000

nbrecv

Diffstat:
  M include/mux.h                       |      11 ++++++++---

1 file changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/include/mux.h b/include/mux.h
t@@ -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
t@@ -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 */
t@@ -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);