Annotation of xinu/h/disk.h, revision 1.1

1.1     ! root        1: /* disk.h - dssync, dsdirec */
        !             2: 
        !             3: #include <xebec.h>                     /* disk controller constants    */
        !             4: #include <dtc.h>                       /* disk interface constants     */
        !             5: 
        !             6: typedef        unsigned        DBADDR;         /* disk data block addresses    */
        !             7: #define        DBNULL          (DBADDR)0177777 /* null disk block address      */
        !             8: 
        !             9: struct dsblk   {                       /* disk driver control block    */
        !            10:        struct  dtc     *dcsr;          /* disk interface csr address   */
        !            11:        struct  dreq    *dreqlst;       /* list of pending requests     */
        !            12:        int     dnum;                   /* device number of this disk   */
        !            13:        int     dibsem;                 /* i-block mutual exclusion sem.*/
        !            14:        int     dflsem;                 /* free list  "        "      " */
        !            15:        int     ddirsem;                /* directory  "        "      " */
        !            16:        int     dnfiles;                /* num. of currently open files */
        !            17:        char    *ddir;                  /* address of in-core directory */
        !            18:        struct  xbdcb   ddcb;           /* holds command that interface */
        !            19:                                        /*   sends to disk controller   */
        !            20: };
        !            21: extern struct  dsblk   dstab[];
        !            22: 
        !            23: struct dreq    {                       /* node in list of requests     */
        !            24:        DBADDR  drdba;                  /* disk block address to use    */
        !            25:        int     drpid;                  /* process id making request    */
        !            26:        char    *drbuff;                /* buffer address for read/write*/
        !            27:        char    drop;                   /* operation: READ/WRITE/SEEK   */
        !            28:        int     drstat;                 /* returned status OK/SYSERR    */
        !            29:        struct  dreq    *drnext;        /* ptr to next node on req. list*/
        !            30: };
        !            31: 
        !            32: #define        DRNULL  (struct dreq *) 0       /* null pointer in request list */
        !            33: #define        DIRBLK  0                       /* block used to hold directory */
        !            34: #define        DONQ    2                       /* status if request enqueued   */
        !            35: #define        DBUFSIZ 512                     /* size of disk data block      */
        !            36: #define        DREQSIZ sizeof(struct dreq)     /* size of disk request node    */
        !            37: #ifndef        NDBUFF
        !            38: #define        NDBUFF  10                      /* number of disk data buffers  */
        !            39: #endif
        !            40: #define        NDREQ   10                      /* number of disk request buf.  */
        !            41: #define        DREAD   XOREAD                  /* read command in dreq.drop    */
        !            42: #define        DWRITE  XOWRITE                 /* write   "                    */
        !            43: #define        DSEEK   XOSEEK                  /* seek    "                    */
        !            44: #define        DSYNC   XOTDR                   /* sync    "  (test-disk-ready) */
        !            45: 
        !            46: extern int     dskrbp;                 /* disk request node buffer pool*/
        !            47: extern int     dskdbp;                 /* disk data block buffer pool  */
        !            48: 
        !            49: /* disk control function codes */
        !            50: 
        !            51: #define        DSKSYNC 0                       /* synchronize (flush all I/O)  */
        !            52: #define        dssync(ddev)    control((ddev),DSKSYNC);
        !            53: 
        !            54: #define        dsdirec(ddev)   ((struct dir *)devtab[ddev].dvioblk->ddir)

unix.superglobalmegacorp.com

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