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