/* 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 dotu;
	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*);
