home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / UNIX3862.ZIP / U386-06.ZIP / U386-6.TD0 / usr / include / sys / pfdat.h < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-26  |  2.0 KB  |  65 lines

  1. /*    Copyright (c) 1984, 1986, 1987, 1988 AT&T    */
  2. /*      All Rights Reserved      */
  3.  
  4. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T    */
  5. /*    The copyright notice above does not evidence any       */
  6. /*    actual or intended publication of such source code.    */
  7.  
  8. #ident    "@(#)head.sys:pfdat.h    1.4"
  9.  
  10. typedef struct pfdat {
  11.     unsigned    pf_blkno : 24,    /* Disk block nummber.    */
  12.             pf_flags : 8;    /* page flags        */
  13.     cnt_t        pf_ndref;    /* Need ref cnt for    */
  14.                     /* shared pg stealing    */
  15.     dev_t        pf_dev;        /* Disk device code.    */
  16.     long        pf_inumber;    /* inode number of     */
  17.                     /* matching file    */
  18.     char        pf_swpi;    /* Index into swaptab.    */
  19.     char        pf_rawcnt;    /* Cnt of processes    */
  20.                     /* doing raw I/O to     */
  21.                     /* page.        */
  22.     short        pf_waitcnt;    /* Number of processes    */
  23.                     /* waiting for PG_DONE    */
  24.     struct pfdat    *pf_next;    /* Next free pfdat.    */
  25.     struct pfdat    *pf_prev;    /* Previous free pfdat.    */
  26.     struct pfdat    *pf_hchain;    /* Hash chain link.    */
  27.     ulong        pf_use;        /* dbd share use count    */
  28. } pfd_t;
  29.  
  30. #define    P_QUEUE        0x01    /* Page on free queue        */
  31. #define    P_BAD        0x02    /* Bad page (parity error, etc.)*/
  32. #define    P_HASH        0x04    /* Page on hash queue        */
  33. #define P_DONE        0x08    /* I/O to read page is done    */
  34. #define    P_SWAP        0x10    /* Page on swap (not file).    */
  35.  
  36. extern struct pfdat phead;
  37. extern struct pfdat pbad;
  38. extern struct pfdat *pfdat;
  39. extern struct pfdat **phash;
  40. extern struct pfdat ptfree;
  41. extern int phashmask;
  42. extern struct pfdat    *pfind();
  43.  
  44.  
  45. #define BLKNULL        0    /* pf_blkno null value        */
  46.  
  47. extern int    mem_lock;
  48. extern int    memlock();
  49. extern int    memunlock();
  50. extern int    memlocked();
  51.  
  52. /* DBD allocation defines */
  53. #define DBDSIZE    128
  54. #define DBDSZSHFT    7
  55. #define NDBDPP        32
  56. #define NDBDPPSHFT    5
  57. #define NPGEPDBD    32    /* Number of page entries per DBD chunk */
  58. #define PGEPDBDSHFT    5
  59. #define pgetodbd(X)    (((X) + NPGEPDBD-1) >> PGEPDBDSHFT)
  60. #define pgetodbdt(X)    ((X) >> PGEPDBDSHFT)
  61. #define dbdtopge(X)    ((X) << PGEPDBDSHFT)
  62. #define dbdtop(X)    (((X) + NDBDPP-1) >> NDBDPPSHFT)
  63. #define dbdtob(X)    ((X) << DBDSZSHFT)
  64. extern struct pfdat dbdfree;
  65.