Annotation of 42BSD/sys/vaxif/if_uba.h, revision 1.1

1.1     ! root        1: /*     if_uba.h        6.1     83/07/29        */
        !             2: 
        !             3: /*
        !             4:  * Structure and routine definitions
        !             5:  * for UNIBUS network interfaces.
        !             6:  */
        !             7: 
        !             8: #define        IF_MAXNUBAMR    10
        !             9: /*
        !            10:  * Each interface has one of these structures giving information
        !            11:  * about UNIBUS resources held by the interface.
        !            12:  *
        !            13:  * We hold IF_NUBAMR map registers for datagram data, starting
        !            14:  * at ifr_mr.  Map register ifr_mr[-1] maps the local network header
        !            15:  * ending on the page boundary.  Bdp's are reserved for read and for
        !            16:  * write, given by ifr_bdp.  The prototype of the map register for
        !            17:  * read and for write is saved in ifr_proto.
        !            18:  *
        !            19:  * When write transfers are not full pages on page boundaries we just
        !            20:  * copy the data into the pages mapped on the UNIBUS and start the
        !            21:  * transfer.  If a write transfer is of a (1024 byte) page on a page
        !            22:  * boundary, we swap in UNIBUS pte's to reference the pages, and then
        !            23:  * remap the initial pages (from ifu_wmap) when the transfer completes.
        !            24:  *
        !            25:  * When read transfers give whole pages of data to be input, we
        !            26:  * allocate page frames from a network page list and trade them
        !            27:  * with the pages already containing the data, mapping the allocated
        !            28:  * pages to replace the input pages for the next UNIBUS data input.
        !            29:  */
        !            30: struct ifuba {
        !            31:        short   ifu_uban;                       /* uba number */
        !            32:        short   ifu_hlen;                       /* local net header length */
        !            33:        struct  uba_regs *ifu_uba;              /* uba regs, in vm */
        !            34:        struct ifrw {
        !            35:                caddr_t ifrw_addr;              /* virt addr of header */
        !            36:                int     ifrw_bdp;               /* unibus bdp */
        !            37:                int     ifrw_info;              /* value from ubaalloc */
        !            38:                int     ifrw_proto;             /* map register prototype */
        !            39:                struct  pte *ifrw_mr;           /* base of map registers */
        !            40:        } ifu_r, ifu_w;
        !            41:        struct  pte ifu_wmap[IF_MAXNUBAMR];     /* base pages for output */
        !            42:        short   ifu_xswapd;                     /* mask of clusters swapped */
        !            43:        short   ifu_flags;                      /* used during uballoc's */
        !            44:        struct  mbuf *ifu_xtofree;              /* pages being dma'd out */
        !            45: };
        !            46: 
        !            47: #ifdef         KERNEL
        !            48: struct mbuf *if_rubaget();
        !            49: #endif

unix.superglobalmegacorp.com

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