|
|
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)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.