Annotation of researchv9/sys/boot/stand/saio.h, revision 1.1.1.1

1.1       root        1: /*     @(#)saio.h 1.1 86/02/03 SMI     */
                      2: 
                      3: /*
                      4:  * Copyright (c) 1985 by Sun Microsystems, Inc.
                      5:  */
                      6: 
                      7: /*
                      8:  * header file for standalone I/O package
                      9:  */
                     10: 
                     11: #include "../h/types.h"
                     12: #include "../mon/sunromvec.h"
                     13: 
                     14: /*
                     15:  * io block: the structure passed to or from the device drivers.
                     16:  * 
                     17:  * Includes pointers to the device
                     18:  * in use, a pointer to device-specific data (iopb's or device
                     19:  * state information, typically), cells for the use of seek, etc.
                     20:  * NOTE: expand at end to preserve compatibility with PROMs
                     21:  */
                     22: struct saioreq {
                     23:        char    si_flgs;
                     24:        struct boottab *si_boottab;     /* Points to boottab entry if any */
                     25:        char    *si_devdata;            /* Device-specific data pointer */
                     26:        int     si_ctlr;                /* Controller number or address */
                     27:        int     si_unit;                /* Unit number within controller */
                     28:        daddr_t si_boff;                /* Partition number within unit */
                     29:        daddr_t si_cyloff;
                     30:        off_t   si_offset;
                     31:        daddr_t si_bn;                  /* Block number to R/W */
                     32:        char    *si_ma;                 /* Memory address to R/W */
                     33:        int     si_cc;                  /* Character count to R/W */
                     34:        struct  saif *si_sif;           /* interface pointer */
                     35:        char    *si_devaddr;            /* Points to mapped in device */
                     36:        char    *si_dmaaddr;            /* Points to allocated DMA space */
                     37: };
                     38: 
                     39: 
                     40: #define F_READ 01
                     41: #define F_WRITE        02
                     42: #define F_ALLOC        04
                     43: #define F_FILE 010
                     44: #define        F_EOF   020     /* EOF on device */
                     45: 
                     46: /*
                     47:  * request codes. Must be the same as F_XXX above
                     48:  */
                     49: #define        READ    F_READ
                     50: #define        WRITE   F_WRITE
                     51: 
                     52: /*
                     53:  * how many files can be open at once.
                     54:  */
                     55: #define NFILES 3
                     56: 
                     57: /*
                     58:  * Ethernet interface descriptor
                     59:  */
                     60: struct saif {
                     61:        int     (*sif_xmit)();          /* transmit packet */
                     62:        int     (*sif_poll)();          /* check for and receive packet */
                     63:        int     (*sif_reset)();         /* reset interface */
                     64: };
                     65: 
                     66: /*
                     67:  * Types of resources that can be allocated by resalloc().
                     68:  */
                     69: enum RESOURCES { 
                     70:        RES_MAINMEM,            /* Main memory, accessible to CPU */
                     71:        RES_RAWVIRT,            /* Raw addr space that can be mapped */
                     72:        RES_DMAMEM,             /* Memory acc. by CPU and by all DMA I/O */
                     73:        RES_DMAVIRT,            /* Raw addr space accessible by DMA I/O */
                     74: };
                     75: char *resalloc(), *devalloc();
                     76: 
                     77: 
                     78: /*
                     79:  * Delay units are in microseconds.
                     80:  */
                     81: #define        DELAY(n)        \
                     82: { \
                     83:        extern int cpudelay; \
                     84:        register int N = (((n)<<4) >> cpudelay); \
                     85:  \
                     86:        while (--N > 0) ; \
                     87: }
                     88: 
                     89: #define        CDELAY(c, n)    \
                     90: { \
                     91:        extern int cpudelay; \
                     92:        register int N = (((n)<<3) >> cpudelay); \
                     93:  \
                     94:        while (--N > 0) \
                     95:                if (c) \
                     96:                        break; \
                     97: }
                     98: 
                     99: /*
                    100:  * Translate our virtual address (in DMA-able memory) into a physical DMA
                    101:  * address, as it would appear to a Multibus device.  (In VMEbus systems,
                    102:  * this assumes a MB/VME adapter.)
                    103:  */
                    104: #define        MB_DMA_ADDR(x)  (((int)(x))&0x000FFFFF)

unix.superglobalmegacorp.com

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