Annotation of researchv8dc/sys/chunix/chsys.h, revision 1.1.1.1

1.1       root        1: #ifndef _CHSYS_
                      2: #define _CHSYS_
                      3: #include "../h/param.h"
                      4: /*
                      5:  * Operating system dependent definitions for UNIX (currently on VMUNIX)
                      6:  * This file contains definitions which must be supplied to the system
                      7:  * independent parts of the NCP.
                      8:  * It should be minimal.
                      9:  */
                     10: #ifdef VMUNIX
                     11: #include "cht.h"
                     12: #endif
                     13: #define CHSTRCODE              /* UNIX interface needs stream code */
                     14: /*
                     15:  * OP Sys dependent part of connection structure
                     16:  */
                     17: struct csys_header {
                     18: #if NCHT > 0
                     19:        struct tty      *csys_ttyp;     /* tty struct ptr if there is one */
                     20: #endif
                     21:        char            csys_mode;      /* How we use this connection */
                     22:        char            csys_flags;     /* System dependent flags */
                     23: };
                     24: /*
                     25:  * cn_sflags definitions.
                     26:  */
                     27: #define CHIWAIT                01      /* Someone waiting on input */
                     28: #define CHOWAIT                02      /* Someone waiting to output */
                     29: #define CHRAW          04      /* this channel is open by raw driver */
                     30: #define CHCLOSING      010     /* Top end is closing output.  Any input
                     31:                                   should abort the connection */
                     32: #define cn_mode                cn_syshead.csys_mode
                     33: #define cn_sflags      cn_syshead.csys_flags
                     34: #define cn_ttyp                cn_syshead.csys_ttyp
                     35: #if NCHT ==  0
                     36: #define chtnstate()
                     37: #define chtxint()
                     38: #define chtrint()
                     39: #endif
                     40: 
                     41: /*
                     42:  * macro definitions for process wakeup
                     43:  */
                     44: #define NEWSTATE(x)    { \
                     45:                                wakeup((char *)(x)); \
                     46:                                if ((x)->cn_mode == CHTTY) \
                     47:                                        chtnstate(conn);        \
                     48:                                else { \
                     49:                                        INPUT(conn); \
                     50:                                        OUTPUT(conn); \
                     51:                                } \
                     52:                        }
                     53: 
                     54: #define INPUT(x)       { \
                     55:                                if ((x)->cn_sflags&CHCLOSING) { \
                     56:                                        (x)->cn_sflags &= ~CHCLOSING; \
                     57:                                        clsconn(conn, CSCLOSED, NOPKT); \
                     58:                                } else { \
                     59:                                        if ((x)->cn_sflags&CHIWAIT) { \
                     60:                                                (x)->cn_sflags &= ~CHIWAIT; \
                     61:                                                wakeup((char *)&(x)->cn_rhead); \
                     62:                                        } \
                     63:                                        if ((x)->cn_mode == CHTTY) \
                     64:                                                chtrint(x); \
                     65:                                } \
                     66:                        }
                     67: #define OUTPUT(x)      { \
                     68:                                if ((x)->cn_sflags&CHOWAIT) { \
                     69:                                        (x)->cn_sflags &= ~CHOWAIT; \
                     70:                                        wakeup((char *)&(x)->cn_thead); \
                     71:                                } \
                     72:                                if ((x)->cn_mode == CHTTY) \
                     73:                                        chtxint(x); \
                     74:                        }
                     75: #define RFCINPUT       { \
                     76:                                if (Rfcwaiting) { \
                     77:                                        Rfcwaiting = 0; \
                     78:                                        wakeup((char *)&Chrfclist); \
                     79:                                } \
                     80:                        }
                     81: /*
                     82:  * These should be lower is software interrupts are used.
                     83:  */
                     84: #define LOCK           (void) spl6()
                     85: #define UNLOCK         (void) spl0()
                     86: 
                     87: #define NOINPUT(conn)
                     88: #define NOOUTPUT(conn)
                     89: 
                     90: extern int Rfcwaiting;
                     91: /*
                     92:  * The third argument to iomove doesn't use B_READ and B_WRITE to
                     93:  * avoid being the only thing that needs UNIX include files.
                     94:  */
                     95: #define CHWCOPY(from, to, count) (iomove(to, count, 0), (char *)0)
                     96: #define CHRCOPY(from, to, count) (iomove(from, count, 1), (char *)0)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.