diff options
author | aiju <aiju@phicode.de> | 2011-08-16 22:00:34 +0200 |
---|---|---|
committer | aiju <aiju@phicode.de> | 2011-08-16 22:00:34 +0200 |
commit | c65100ffa0031d7a4744b3715b4c4c16da9074e9 (patch) | |
tree | 4fd4f3bc670fc2ce1ed6217a13478ac3286c4b40 /sys/include | |
parent | 2f2c93066909f04e346f739f6ed30f536a85fd28 (diff) |
lib9p: added toilet queues
Diffstat (limited to 'sys/include')
-rw-r--r-- | sys/include/9p.h | 24 |
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); |