| 1 | struct iso_node { |
| 2 | struct iso_node *i_chain[2]; /* hash chain, MUST be first */ |
| 3 | struct vnode *i_vnode; /* vnode associated with this inode */ |
| 4 | struct vnode *i_devvp; /* vnode for block I/O */ |
| 5 | u_long i_flag; /* see below */ |
| 6 | dev_t i_dev; /* device where inode resides */ |
| 7 | ino_t i_number; /* the identity of the inode */ |
| 8 | struct iso_mnt *i_mnt; /* filesystem associated with this inode */ |
| 9 | struct lockf *i_lockf; /* head of byte-level lock list */ |
| 10 | long i_diroff; /* offset in dir, where we found last entry */ |
| 11 | off_t i_endoff; /* end of useful stuff in directory */ |
| 12 | long i_spare0; |
| 13 | long i_spare1; |
| 14 | |
| 15 | |
| 16 | int iso_reclen; |
| 17 | int iso_extlen; |
| 18 | int iso_extent; |
| 19 | int i_size; |
| 20 | unsigned char iso_time[7]; |
| 21 | int iso_flags; |
| 22 | int iso_unit_size; |
| 23 | int iso_interleave_gap; |
| 24 | int iso_volume_seq; |
| 25 | int iso_namelen; |
| 26 | }; |
| 27 | |
| 28 | #define i_forw i_chain[0] |
| 29 | #define i_back i_chain[1] |
| 30 | |
| 31 | /* flags */ |
| 32 | #define ILOCKED 0x0001 /* inode is locked */ |
| 33 | #define IWANT 0x0002 /* some process waiting on lock */ |
| 34 | #define IACC 0x0020 /* inode access time to be updated */ |
| 35 | |
| 36 | #define VTOI(vp) ((struct iso_node *)(vp)->v_data) |
| 37 | #define ITOV(ip) ((ip)->i_vnode) |
| 38 | |
| 39 | #define ISO_ILOCK(ip) iso_ilock(ip) |
| 40 | #define ISO_IUNLOCK(ip) iso_iunlock(ip) |
| 41 | |
| 42 | #define VT_ISOFS (VT_MFS+1) |
| 43 | |
| 44 | /* |
| 45 | * Prototypes for ISOFS vnode operations |
| 46 | */ |
| 47 | int isofs_lookup __P((struct vnode *vp, struct nameidata *ndp, struct proc *p)); |
| 48 | int isofs_open __P((struct vnode *vp, int mode, struct ucred *cred, |
| 49 | struct proc *p)); |
| 50 | int isofs_close __P((struct vnode *vp, int fflag, struct ucred *cred, |
| 51 | struct proc *p)); |
| 52 | int isofs_access __P((struct vnode *vp, int mode, struct ucred *cred, |
| 53 | struct proc *p)); |
| 54 | int isofs_getattr __P((struct vnode *vp, struct vattr *vap, struct ucred *cred, |
| 55 | struct proc *p)); |
| 56 | int isofs_read __P((struct vnode *vp, struct uio *uio, int ioflag, |
| 57 | struct ucred *cred)); |
| 58 | int isofs_ioctl __P((struct vnode *vp, int command, caddr_t data, int fflag, |
| 59 | struct ucred *cred, struct proc *p)); |
| 60 | int isofs_select __P((struct vnode *vp, int which, int fflags, struct ucred *cred, |
| 61 | struct proc *p)); |
| 62 | int isofs_mmap __P((struct vnode *vp, int fflags, struct ucred *cred, |
| 63 | struct proc *p)); |
| 64 | int isofs_seek __P((struct vnode *vp, off_t oldoff, off_t newoff, |
| 65 | struct ucred *cred)); |
| 66 | int isofs_readdir __P((struct vnode *vp, struct uio *uio, struct ucred *cred, |
| 67 | int *eofflagp)); |
| 68 | int isofs_abortop __P((struct nameidata *ndp)); |
| 69 | int isofs_inactive __P((struct vnode *vp, struct proc *p)); |
| 70 | int isofs_reclaim __P((struct vnode *vp)); |
| 71 | int isofs_lock __P((struct vnode *vp)); |
| 72 | int isofs_unlock __P((struct vnode *vp)); |
| 73 | int isofs_strategy __P((struct buf *bp)); |
| 74 | int isofs_print __P((struct vnode *vp)); |
| 75 | int isofs_islocked __P((struct vnode *vp)); |
| 76 | |