| /* Copyright (C) 2003 Russ Cox, Massachusetts Institute of Technology */ |
| /* See COPYRIGHT */ |
| |
| #include <thread.h> |
| |
| typedef struct Queue Queue; |
| Queue *_fsqalloc(void); |
| int _fsqsend(Queue*, void*); |
| void *_fsqrecv(Queue*); |
| void _fsqhangup(Queue*); |
| void *_fsnbqrecv(Queue*); |
| |
| #include <mux.h> |
| struct CFsys |
| { |
| char version[20]; |
| int msize; |
| QLock lk; |
| int fd; |
| int ref; |
| Mux mux; |
| CFid *root; |
| Queue *txq; |
| Queue *rxq; |
| CFid *freefid; |
| int nextfid; |
| Ioproc *iorecv; |
| Ioproc *iosend; |
| }; |
| |
| struct CFid |
| { |
| int fid; |
| int mode; |
| CFid *next; |
| QLock lk; |
| CFsys *fs; |
| Qid qid; |
| vlong offset; |
| }; |
| |
| void _fsdecref(CFsys*); |
| void _fsputfid(CFid*); |
| CFid *_fsgetfid(CFsys*); |
| |
| int _fsrpc(CFsys*, Fcall*, Fcall*, void**); |
| CFid *_fswalk(CFid*, char*); |