|
|
1.1 ! root 1: /* (-lgl ! 2: * COHERENT Version 4.0 ! 3: * Copyright (c) 1982, 1992 by Mark Williams Company. ! 4: * All rights reserved. May not be copied without permission. ! 5: -lgl) */ ! 6: /* ! 7: * /usr/include/sys/buf.h ! 8: * ! 9: * Buffer header. ! 10: * ! 11: * Revised: Wed Apr 7 15:05:36 1993 CDT ! 12: */ ! 13: #ifndef __SYS_BUF_H__ ! 14: #define __SYS_BUF_H__ ! 15: ! 16: #include <sys/__paddr.h> ! 17: #include <sys/types.h> ! 18: #include <sys/ksynch.h> ! 19: ! 20: typedef struct buf { ! 21: struct buf *b_actf; /* First in queue */ ! 22: struct buf *b_actl; /* Last in queue */ ! 23: GATE b_gate; /* Gate */ ! 24: unsigned b_flag; /* Flags */ ! 25: dev_t b_dev; /* Device */ ! 26: daddr_t b_bno; /* Block number */ ! 27: char b_req; /* I/O type */ ! 28: char b_err; /* Error */ ! 29: unsigned b_seqn; /* Buffer sequence number */ ! 30: #ifndef _I386 ! 31: bold_t b_map; /* Old map */ ! 32: vaddr_t b_count; /* Size of I/O */ ! 33: vaddr_t b_resid; /* Driver returns count here */ ! 34: faddr_t b_faddr; /* Far Virtual address */ ! 35: __paddr_t b_paddr; /* Physical address */ ! 36: #else ! 37: off_t b_count; /* Size of I/O */ ! 38: off_t b_resid; /* Driver returns count here */ ! 39: __paddr_t b_paddr; /* physical address (bytes) */ ! 40: caddr_t b_vaddr; /* kernel virtual address (bytes) */ ! 41: unsigned long b_hashval; /* used to index into hasharray[] */ ! 42: struct buf *b_LRUf; /* Next (older) in LRU chain */ ! 43: struct buf *b_LRUb; /* Previous (newer) in LRU chain */ ! 44: struct buf *b_hashf; /* Next in this hash chain */ ! 45: struct buf *b_hashb; /* Previous in this hash chain */ ! 46: #endif /* _I386 */ ! 47: } BUF; ! 48: ! 49: /* ! 50: * Flags (b_flags). ! 51: */ ! 52: #define BFNTP 0x0001 /* Buffer not valid */ ! 53: #define BFREQ 0x0002 /* Buffer requested */ ! 54: #define BFERR 0x0004 /* Error */ ! 55: #define BFMOD 0x0008 /* Data has been modified */ ! 56: #define BFASY 0x0010 /* Asynchrous */ ! 57: #define BFMAP 0x0020 /* Buffer has been mapped */ ! 58: #define BFRAW 0x0040 /* Request is raw */ ! 59: #define BFTAP 0x0080 /* Request is to a tape */ ! 60: ! 61: #define BFBLK 0x4000 /* Aligned on a block boundary */ ! 62: #define BFIOC 0x8000 /* Perform bounds checking */ ! 63: ! 64: /* ! 65: * Requests. ! 66: */ ! 67: #define BREAD 1 /* Read */ ! 68: #define BWRITE 2 /* Write */ ! 69: /* sad but true, floppy driver uses these: */ ! 70: #define BFLSTAT 3 /* Floppy Drive Status */ ! 71: #define BFLFMT 4 /* Floppy Disk Format */ ! 72: ! 73: #define BNULL ((BUF *)0) ! 74: ! 75: #ifdef KERNEL ! 76: /* ! 77: * Functions. ! 78: */ ! 79: extern BUF *bread(); /* bio.c */ ! 80: extern BUF *bclaim(); /* bio.c */ ! 81: extern BUF *vread(); /* fs3.c */ ! 82: extern BUF *aread(); /* fs3.c */ ! 83: extern daddr_t vmap(); /* fs3.c */ ! 84: extern int *lmap(); /* fs3.c */ ! 85: ! 86: /* ! 87: * Global variables. ! 88: */ ! 89: extern unsigned bufseqn; /* Buffer sequencer */ ! 90: extern int bufneed; /* Buffer is needed */ ! 91: extern BUF swapbuf; /* Buffer for swap I/O */ ! 92: extern BUF *bufl; /* Buffer headers */ ! 93: #endif /* KERNEL */ ! 94: ! 95: #endif /* BUF_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.