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

1.1       root        1: /* disk.h - dssync, dsdirec */
                      2: 
                      3: #include <xebec.h>                     /* disk controller constants    */
1.1.1.2 ! root        4: #include <dtc86.h>                     /* disk interface constants     */
1.1       root        5: 
1.1.1.2 ! root        6: typedef        unsigned short  DBADDR;         /* disk data block addresses    */
        !             7: #define        DBNULL          (DBADDR) 0xffff /* null disk block address      */
1.1       root        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: 
1.1.1.2 ! root       46: #ifdef mc68000
        !            47: #define        BUS_COM (0x000000)
        !            48: #define BUS_BUF        (0x000000+sizeof(struct xbdcb))
        !            49: #define        MULTI(address)  (address + 0x100000)
        !            50: #endif
        !            51: 
1.1       root       52: extern int     dskrbp;                 /* disk request node buffer pool*/
                     53: extern int     dskdbp;                 /* disk data block buffer pool  */
                     54: 
                     55: /* disk control function codes */
                     56: 
                     57: #define        DSKSYNC 0                       /* synchronize (flush all I/O)  */
                     58: #define        dssync(ddev)    control((ddev),DSKSYNC);
                     59: 
1.1.1.2 ! root       60: #define        dsdirec(ddev)   (struct dir *) (((struct dsblk *)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.