63 lines · 988 B · C
RawDownload
typedef struct Msg Msg;struct Msg{	Msg *link;	uchar *rp;	uchar *ep;}; typedef struct Client Client;struct Client{	int moribund;	int activethread;	int num;	int ref;	int status;	int pid;	char *cmd;	int fd[2];	char err[ERRMAX]; 	Req *execreq;	Channel *execpid; 	Req *rq, **erq;		/* reading */	Msg *mq, **emq;	Ioproc *readerproc; 	Channel *writerkick;	Req *wq, **ewq;	/* writing */	Req *curw;		/* currently writing */	Ioproc *writerproc;	/* writing */};extern int nclient;extern Client **client;extern void dataread(Req*, Client*);extern int newclient(void);extern void closeclient(Client*);extern void datawrite(Req*, Client*);extern void ctlwrite(Req*, Client*);extern void clientflush(Req*, Client*); #define emalloc emalloc9p#define estrdup estrdup9p#define erealloc erealloc9p extern Srv fs;extern void initfs(void);extern void setexecname(char*); enum{	STACK = 8192,}; enum	/* Client.status */{	Closed,	Exec,	Established,	Hangup,};