Annotation of researchv10no/cmd/spitbol/cint/spitio.h, revision 1.1.1.1

1.1       root        1: /*
                      2: /   This header file defines the I/O control blocks used by the
                      3: /   UN*X operating system interface for the Macro Spitbol compiler.
                      4: */
                      5: 
                      6: /*
                      7: /   BLBLK - I/O buffer block
                      8: /
                      9: /   All buffered I/O is passed through a BFBLK.  This block is intentionally
                     10: /   kept non-relocatable, so that it can be freely moved around the heap by
                     11: /   the garbage collector.
                     12: */
                     13: 
                     14: struct bfblk
                     15: {
                     16:     WORD       typ;            /*  type word                           */
                     17:     WORD       len;            /*  lenfth of bfblk                     */
                     18:     WORD       siz;            /*  size of buffer in bytes             */
                     19:     WORD       rem;            /*  number of bytes remaining in buffer */
                     20:     WORD       off;            /*  offset to next position in buffer   */
                     21:     char       buf[1];         /*  buffer ([1] is kludge for C)        */
                     22: };
                     23: 
                     24: #define BFSIZE         (sizeof struct bfblk - 1)
                     25: 
                     26: /*
                     27: /   FCBLK - file control block
                     28: /
                     29: /   For every I/O association a FCBLK is created.  All subsequent I/O
                     30: /   operations are passed this block.
                     31: */
                     32: 
                     33: struct fcblk
                     34: {
                     35:     WORD       typ;            /*  type word                           */
                     36:     WORD       len;            /*  length of fcblk                     */
                     37:     WORD       rsz;            /*  record size & mode                  */
                     38:     struct ioblk *iob;         /*  pointer to IOBLK                    */
                     39: };
                     40: 
                     41: #define FCSIZE         (sizeof struct fcblk)
                     42: 
                     43: /*
                     44: /   IOBLK - I/O control block
                     45: /
                     46: /   For every SPITBOL I/O channel there is one central IOBLK containing
                     47: /   information about the channel:  filename, file descriptor, IOBLK
                     48: /   pointer, etc.
                     49: */
                     50: 
                     51: struct ioblk
                     52: {
                     53:     WORD       typ;            /*  type word                           */
                     54:     WORD       len;            /*  length of IOBLK                     */
                     55:     struct scblk *fnm;         /*  pointer to SCBLK holding filename   */
                     56:     WORD       pid;            /*  process id for pipe                 */
                     57:     struct bfblk *buf;         /*  pointer to BFBLK                    */
                     58:     WORD       fdn;            /*  file descriptor number              */
                     59:     WORD       flg;            /*  flags                               */
                     60: };
                     61: 
                     62: #define IOSIZE         (sizeof struct ioblk)
                     63: 
                     64: #define IO_INP         1
                     65: #define IO_OUP         2
                     66: #define IO_APP         4
                     67: #define IO_OPN         8
                     68: #define IO_EOF         16
                     69: #define IO_ERR         32
                     70: #define IO_SYS         64
                     71: #define IO_WRC         128
                     72: #define IO_PIP         256
                     73: #define IO_DED         512
                     74: #define IO_ILL         1024
                     75: 
                     76: #define RECSIZ         1024
                     77: #define BUFSIZ         1024

unix.superglobalmegacorp.com

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