xref: /plan9/sys/src/cmd/execnet/dat.h (revision 3ff48bf5ed603850fcd251ddf13025d23d693782)
1*9a747e4fSDavid du Colombier typedef struct Msg Msg;
2*9a747e4fSDavid du Colombier struct Msg
3*9a747e4fSDavid du Colombier {
4*9a747e4fSDavid du Colombier 	Msg *link;
5*9a747e4fSDavid du Colombier 	uchar *rp;
6*9a747e4fSDavid du Colombier 	uchar *ep;
7*9a747e4fSDavid du Colombier };
8*9a747e4fSDavid du Colombier 
9*9a747e4fSDavid du Colombier typedef struct Client Client;
10*9a747e4fSDavid du Colombier struct Client
11*9a747e4fSDavid du Colombier {
12*9a747e4fSDavid du Colombier 	int moribund;
13*9a747e4fSDavid du Colombier 	int activethread;
14*9a747e4fSDavid du Colombier 	int num;
15*9a747e4fSDavid du Colombier 	int ref;
16*9a747e4fSDavid du Colombier 	int status;
17*9a747e4fSDavid du Colombier 	int pid;
18*9a747e4fSDavid du Colombier 	char *cmd;
19*9a747e4fSDavid du Colombier 	int fd[2];
20*9a747e4fSDavid du Colombier 	char err[ERRMAX];
21*9a747e4fSDavid du Colombier 
22*9a747e4fSDavid du Colombier 	Req *execreq;
23*9a747e4fSDavid du Colombier 	Channel *execpid;
24*9a747e4fSDavid du Colombier 
25*9a747e4fSDavid du Colombier 	Req *rq, **erq;		/* reading */
26*9a747e4fSDavid du Colombier 	Msg *mq, **emq;
27*9a747e4fSDavid du Colombier 	Ioproc *readerproc;
28*9a747e4fSDavid du Colombier 
29*9a747e4fSDavid du Colombier 	Channel *writerkick;
30*9a747e4fSDavid du Colombier 	Req *wq, **ewq;	/* writing */
31*9a747e4fSDavid du Colombier 	Req *curw;		/* currently writing */
32*9a747e4fSDavid du Colombier 	Ioproc *writerproc;	/* writing */
33*9a747e4fSDavid du Colombier };
34*9a747e4fSDavid du Colombier extern int nclient;
35*9a747e4fSDavid du Colombier extern Client **client;
36*9a747e4fSDavid du Colombier extern void dataread(Req*, Client*);
37*9a747e4fSDavid du Colombier extern int newclient(void);
38*9a747e4fSDavid du Colombier extern void closeclient(Client*);
39*9a747e4fSDavid du Colombier extern void datawrite(Req*, Client*);
40*9a747e4fSDavid du Colombier extern void ctlwrite(Req*, Client*);
41*9a747e4fSDavid du Colombier extern void clientflush(Req*, Client*);
42*9a747e4fSDavid du Colombier 
43*9a747e4fSDavid du Colombier #define emalloc emalloc9p
44*9a747e4fSDavid du Colombier #define estrdup estrdup9p
45*9a747e4fSDavid du Colombier #define erealloc erealloc9p
46*9a747e4fSDavid du Colombier 
47*9a747e4fSDavid du Colombier extern Srv fs;
48*9a747e4fSDavid du Colombier extern void initfs(void);
49*9a747e4fSDavid du Colombier extern void setexecname(char*);
50*9a747e4fSDavid du Colombier 
51*9a747e4fSDavid du Colombier enum
52*9a747e4fSDavid du Colombier {
53*9a747e4fSDavid du Colombier 	STACK = 8192,
54*9a747e4fSDavid du Colombier };
55*9a747e4fSDavid du Colombier 
56*9a747e4fSDavid du Colombier enum	/* Client.status */
57*9a747e4fSDavid du Colombier {
58*9a747e4fSDavid du Colombier 	Closed,
59*9a747e4fSDavid du Colombier 	Exec,
60*9a747e4fSDavid du Colombier 	Established,
61*9a747e4fSDavid du Colombier 	Hangup,
62*9a747e4fSDavid du Colombier };
63*9a747e4fSDavid du Colombier 
64