Subversion Repositories planix.SVN

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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,
};