QLock;
Rendez;
Queueelem;
- int pid;
+ int pid, flush;
Req *cur;
- jmp_buf flush;
};
struct Fid
Tree* tree;
void (*destroyfid)(Fid*);
void (*destroyreq)(Req*);
+ void (*start)(Srv*);
void (*end)(Srv*);
void* aux;
QLock wlock;
char* addr;
+
+ QLock slock;
+ Ref sref; /* srvwork procs */
+ Ref rref; /* requests in flight */
+
+ int spid; /* pid of srv() caller */
+
+ void (*free)(Srv*);
};
void srv(Srv*);
extern void (*_forker)(void (*)(void*), void*, int);
+void srvacquire(Srv *);
+void srvrelease(Srv *);
+
Reqqueue* reqqueuecreate(void);
void reqqueuepush(Reqqueue*, Req*, void (*)(Req *));
void reqqueueflush(Reqqueue*, Req*);
-int reqqueueflushed(void);
+void reqqueuefree(Reqqueue*);