/* 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 Fsys | |
{ | |
char version[20]; | |
int msize; | |
QLock lk; | |
int fd; | |
int ref; | |
Mux mux; | |
Fid *root; | |
Queue *txq; | |
Queue *rxq; | |
Fid *freefid; | |
int nextfid; | |
Ioproc *iorecv; | |
Ioproc *iosend; | |
}; | |
struct Fid | |
{ | |
int fid; | |
int mode; | |
Fid *next; | |
QLock lk; | |
Fsys *fs; | |
Qid qid; | |
vlong offset; | |
}; | |
void _fsdecref(Fsys*); | |
void _fsputfid(Fid*); | |
Fid *_fsgetfid(Fsys*); | |