summaryrefslogtreecommitdiff
path: root/sys/include
diff options
context:
space:
mode:
authoraiju <aiju@phicode.de>2011-08-16 22:00:34 +0200
committeraiju <aiju@phicode.de>2011-08-16 22:00:34 +0200
commitc65100ffa0031d7a4744b3715b4c4c16da9074e9 (patch)
tree4fd4f3bc670fc2ce1ed6217a13478ac3286c4b40 /sys/include
parent2f2c93066909f04e346f739f6ed30f536a85fd28 (diff)
lib9p: added toilet queues
Diffstat (limited to 'sys/include')
-rw-r--r--sys/include/9p.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/sys/include/9p.h b/sys/include/9p.h
index 85e2304ba..a3415d246 100644
--- a/sys/include/9p.h
+++ b/sys/include/9p.h
@@ -27,10 +27,28 @@ typedef struct Filelist Filelist;
typedef struct Tree Tree;
typedef struct Readdir Readdir;
typedef struct Srv Srv;
+typedef struct Reqqueue Reqqueue;
+typedef struct Queueelem Queueelem;
#pragma incomplete Filelist
#pragma incomplete Readdir
+struct Queueelem
+{
+ Queueelem *prev, *next;
+ void (*f)(Req *);
+};
+
+struct Reqqueue
+{
+ QLock;
+ Rendez;
+ Queueelem;
+ int pid;
+ Req *cur;
+ jmp_buf flush;
+};
+
struct Fid
{
ulong fid;
@@ -60,6 +78,8 @@ struct Req
Fid* afid;
Fid* newfid;
Srv* srv;
+
+ Queueelem qu;
/* below is implementation-specific; don't use */
QLock lk;
@@ -255,3 +275,7 @@ int authattach(Req*);
extern void (*_forker)(void (*)(void*), void*, int);
+Reqqueue* reqqueuecreate(void);
+void reqqueuepush(Reqqueue*, Req*, void (*)(Req *));
+void reqqueueflush(Reqqueue*, Req*);
+int reqqueueflushed(void);