Blob


1 /* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */
2 /* See COPYRIGHT */
4 #include <thread.h>
6 typedef struct Queue Queue;
7 Queue *_fsqalloc(void);
8 int _fsqsend(Queue*, void*);
9 void *_fsqrecv(Queue*);
10 void _fsqhangup(Queue*);
11 void *_fsnbqrecv(Queue*);
13 #include <mux.h>
14 struct CFsys
15 {
16 char version[20];
17 int dotu;
18 int msize;
19 QLock lk;
20 int fd;
21 int ref;
22 Mux mux;
23 CFid *root;
24 Queue *txq;
25 Queue *rxq;
26 CFid *freefid;
27 int nextfid;
28 Ioproc *iorecv;
29 Ioproc *iosend;
30 };
32 struct CFid
33 {
34 int fid;
35 int mode;
36 CFid *next;
37 QLock lk;
38 CFsys *fs;
39 Qid qid;
40 vlong offset;
41 };
43 void _fsdecref(CFsys*);
44 void _fsputfid(CFid*);
45 CFid *_fsgetfid(CFsys*);
47 int _fsrpc(CFsys*, Fcall*, Fcall*, void**);
48 CFid *_fswalk(CFid*, char*);