V7/usr/sys/h/mx.h
#define NGROUPS 10 /* number of mpx files permitted at one time */
#define NCHANS 20 /* number of channel structures */
#define NPORTS 30 /* number of channels to i/o ports */
#define CNTLSIZ 10
#define NLEVELS 4
#define NMSIZE 50 /* max size of mxlstn file name */
/*
* header returned on read of mpx
*/
struct rh {
short index;
short count;
short ccount;
};
/*
* head expected on write of mpx
*/
struct wh {
short index;
short count;
short ccount;
char *data;
};
struct mx_args {
char *m_name;
int m_cmd;
int m_arg[3];
};
#ifdef KERNEL
/*
* internal structure for channel
*/
struct chan {
short c_flags;
char c_index;
char c_line;
struct group *c_group;
struct file *c_fy;
struct tty *c_ttyp;
struct clist c_ctlx;
int c_pgrp;
struct tty *c_ottyp;
char c_oline;
union {
struct clist datq;
} cx;
union {
struct clist datq;
struct chan *c_chan;
} cy;
struct clist c_ctly;
};
struct schan {
short c_flags;
char c_index;
char c_line;
struct group *c_group;
struct file *c_fy;
struct tty *c_ttyp;
struct clist c_ctlx;
int c_pgrp;
};
/*
* flags
*/
#define INUSE 01
#define COPEN 02
#define XGRP 04
#define YGRP 010
#define WCLOSE 020
#define ISGRP 0100
#define BLOCK 0200
#define EOTMARK 0400
#define SIGBLK 01000
#define BLKMSG 01000
#define ENAMSG 02000
#define WFLUSH 04000
#define NMBUF 010000
#define PORT 020000
#define ALT 040000
#endif
/*
* mpxchan command codes
*/
#define MPX 5
#define MPXN 6
#define CHAN 1
#define JOIN 2
#define EXTR 3
#define ATTACH 4
#define CONNECT 7
#define DETACH 8
#define DISCON 9
#define DEBUG 10
#define NPGRP 11
#define CSIG 12
#define PACK 13
#define NDEBUGS 30
/*
* control channel message codes
*/
#define M_WATCH 1
#define M_CLOSE 2
#define M_EOT 3
#define M_OPEN 4
#define M_BLK 5
#define M_UBLK 6
#define DO_BLK 7
#define DO_UBLK 8
#define M_IOCTL 12
#define M_SIG 14
/*
* debug codes other than mpxchan cmds
*/
#define MCCLOSE 29
#define MCOPEN 28
#define ALL 27
#define SCON 26
#define MSREAD 25
#define SDATA 24
#define MCREAD 23
#define MCWRITE 22