commit - eacc13ea5cb1f59e3d1365c1149a77c5ef804e7d
commit + c02bc16b4b963327a66f7455c23665f55d63b398
blob - 01d1779c0eb4692c4484f137a72f48cfed42b259
blob + 53321fa5258886698e48b24b585ab427bfaf3f4b
--- include/mux.h
+++ include/mux.h
struct Muxrpc
{
+ Mux *mux;
Muxrpc *next;
Muxrpc *prev;
Rendez r;
uint tag;
void *p;
+ int waiting;
};
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 */
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);