139388Smckusick /* 239388Smckusick * Copyright (c) 1989 The Regents of the University of California. 339388Smckusick * All rights reserved. 439388Smckusick * 544536Sbostic * %sccs.include.redist.c% 639388Smckusick * 7*48033Smckusick * @(#)mfsnode.h 7.3 (Berkeley) 04/16/91 839388Smckusick */ 939388Smckusick 1039388Smckusick /* 1139388Smckusick * This structure defines the control data for the memory 1239388Smckusick * based file system. 1339388Smckusick */ 1439388Smckusick 1539388Smckusick struct mfsnode { 1639388Smckusick struct vnode *mfs_vnode; /* vnode associated with this mfsnode */ 1739388Smckusick caddr_t mfs_baseoff; /* base of file system in memory */ 1839388Smckusick long mfs_size; /* size of memory file system */ 1939388Smckusick pid_t mfs_pid; /* supporting process pid */ 2039388Smckusick struct buf *mfs_buflist; /* list of I/O requests */ 2139388Smckusick long mfs_spare[4]; 2239388Smckusick }; 2339388Smckusick 2439388Smckusick /* 2539388Smckusick * Convert between mfsnode pointers and vnode pointers 2639388Smckusick */ 2739388Smckusick #define VTOMFS(vp) ((struct mfsnode *)(vp)->v_data) 2839388Smckusick #define MFSTOV(mfsp) ((mfsp)->mfs_vnode) 29*48033Smckusick 30*48033Smckusick /* 31*48033Smckusick * Prototypes for MFS operations on vnodes. 32*48033Smckusick */ 33*48033Smckusick int mfs_badop(); 34*48033Smckusick #define mfs_lookup ((int (*) __P(( \ 35*48033Smckusick struct vnode *vp, \ 36*48033Smckusick struct nameidata *ndp, \ 37*48033Smckusick struct proc *p))) mfs_badop) 38*48033Smckusick #define mfs_create ((int (*) __P(( \ 39*48033Smckusick struct nameidata *ndp, \ 40*48033Smckusick struct vattr *vap, \ 41*48033Smckusick struct proc *p))) mfs_badop) 42*48033Smckusick #define mfs_mknod ((int (*) __P(( \ 43*48033Smckusick struct nameidata *ndp, \ 44*48033Smckusick struct vattr *vap, \ 45*48033Smckusick struct ucred *cred, \ 46*48033Smckusick struct proc *p))) mfs_badop) 47*48033Smckusick int mfs_open __P(( 48*48033Smckusick struct vnode *vp, 49*48033Smckusick int mode, 50*48033Smckusick struct ucred *cred, 51*48033Smckusick struct proc *p)); 52*48033Smckusick int mfs_close __P(( 53*48033Smckusick struct vnode *vp, 54*48033Smckusick int fflag, 55*48033Smckusick struct ucred *cred, 56*48033Smckusick struct proc *p)); 57*48033Smckusick #define mfs_access ((int (*) __P(( \ 58*48033Smckusick struct vnode *vp, \ 59*48033Smckusick int mode, \ 60*48033Smckusick struct ucred *cred, \ 61*48033Smckusick struct proc *p))) mfs_badop) 62*48033Smckusick #define mfs_getattr ((int (*) __P(( \ 63*48033Smckusick struct vnode *vp, \ 64*48033Smckusick struct vattr *vap, \ 65*48033Smckusick struct ucred *cred, \ 66*48033Smckusick struct proc *p))) mfs_badop) 67*48033Smckusick #define mfs_setattr ((int (*) __P(( \ 68*48033Smckusick struct vnode *vp, \ 69*48033Smckusick struct vattr *vap, \ 70*48033Smckusick struct ucred *cred, \ 71*48033Smckusick struct proc *p))) mfs_badop) 72*48033Smckusick #define mfs_read ((int (*) __P(( \ 73*48033Smckusick struct vnode *vp, \ 74*48033Smckusick struct uio *uio, \ 75*48033Smckusick int ioflag, \ 76*48033Smckusick struct ucred *cred))) mfs_badop) 77*48033Smckusick #define mfs_write ((int (*) __P(( \ 78*48033Smckusick struct vnode *vp, \ 79*48033Smckusick struct uio *uio, \ 80*48033Smckusick int ioflag, \ 81*48033Smckusick struct ucred *cred))) mfs_badop) 82*48033Smckusick int mfs_ioctl __P(( 83*48033Smckusick struct vnode *vp, 84*48033Smckusick int command, 85*48033Smckusick caddr_t data, 86*48033Smckusick int fflag, 87*48033Smckusick struct ucred *cred, 88*48033Smckusick struct proc *p)); 89*48033Smckusick #define mfs_select ((int (*) __P(( \ 90*48033Smckusick struct vnode *vp, \ 91*48033Smckusick int which, \ 92*48033Smckusick int fflags, \ 93*48033Smckusick struct ucred *cred, \ 94*48033Smckusick struct proc *p))) mfs_badop) 95*48033Smckusick #define mfs_mmap ((int (*) __P(( \ 96*48033Smckusick struct vnode *vp, \ 97*48033Smckusick int fflags, \ 98*48033Smckusick struct ucred *cred, \ 99*48033Smckusick struct proc *p))) mfs_badop) 100*48033Smckusick #define mfs_fsync ((int (*) __P(( \ 101*48033Smckusick struct vnode *vp, \ 102*48033Smckusick int fflags, \ 103*48033Smckusick struct ucred *cred, \ 104*48033Smckusick int waitfor, \ 105*48033Smckusick struct proc *p))) mfs_badop) 106*48033Smckusick #define mfs_seek ((int (*) __P(( \ 107*48033Smckusick struct vnode *vp, \ 108*48033Smckusick off_t oldoff, \ 109*48033Smckusick off_t newoff, \ 110*48033Smckusick struct ucred *cred))) mfs_badop) 111*48033Smckusick #define mfs_remove ((int (*) __P(( \ 112*48033Smckusick struct nameidata *ndp, \ 113*48033Smckusick struct proc *p))) mfs_badop) 114*48033Smckusick #define mfs_link ((int (*) __P(( \ 115*48033Smckusick struct vnode *vp, \ 116*48033Smckusick struct nameidata *ndp, \ 117*48033Smckusick struct proc *p))) mfs_badop) 118*48033Smckusick #define mfs_rename ((int (*) __P(( \ 119*48033Smckusick struct nameidata *fndp, \ 120*48033Smckusick struct nameidata *tdnp, \ 121*48033Smckusick struct proc *p))) mfs_badop) 122*48033Smckusick #define mfs_mkdir ((int (*) __P(( \ 123*48033Smckusick struct nameidata *ndp, \ 124*48033Smckusick struct vattr *vap, \ 125*48033Smckusick struct proc *p))) mfs_badop) 126*48033Smckusick #define mfs_rmdir ((int (*) __P(( \ 127*48033Smckusick struct nameidata *ndp, \ 128*48033Smckusick struct proc *p))) mfs_badop) 129*48033Smckusick #define mfs_symlink ((int (*) __P(( \ 130*48033Smckusick struct nameidata *ndp, \ 131*48033Smckusick struct vattr *vap, \ 132*48033Smckusick char *target, \ 133*48033Smckusick struct proc *p))) mfs_badop) 134*48033Smckusick #define mfs_readdir ((int (*) __P(( \ 135*48033Smckusick struct vnode *vp, \ 136*48033Smckusick struct uio *uio, \ 137*48033Smckusick struct ucred *cred, \ 138*48033Smckusick int *eofflagp))) mfs_badop) 139*48033Smckusick #define mfs_readlink ((int (*) __P(( \ 140*48033Smckusick struct vnode *vp, \ 141*48033Smckusick struct uio *uio, \ 142*48033Smckusick struct ucred *cred))) mfs_badop) 143*48033Smckusick #define mfs_abortop ((int (*) __P(( \ 144*48033Smckusick struct nameidata *ndp))) mfs_badop) 145*48033Smckusick int mfs_inactive __P(( 146*48033Smckusick struct vnode *vp, 147*48033Smckusick struct proc *p)); 148*48033Smckusick #define mfs_reclaim ((int (*) __P(( \ 149*48033Smckusick struct vnode *vp))) nullop) 150*48033Smckusick #define mfs_lock ((int (*) __P(( \ 151*48033Smckusick struct vnode *vp))) nullop) 152*48033Smckusick #define mfs_unlock ((int (*) __P(( \ 153*48033Smckusick struct vnode *vp))) nullop) 154*48033Smckusick int mfs_bmap __P(( 155*48033Smckusick struct vnode *vp, 156*48033Smckusick daddr_t bn, 157*48033Smckusick struct vnode **vpp, 158*48033Smckusick daddr_t *bnp)); 159*48033Smckusick int mfs_strategy __P(( 160*48033Smckusick struct buf *bp)); 161*48033Smckusick int mfs_print __P(( 162*48033Smckusick struct vnode *vp)); 163*48033Smckusick #define mfs_islocked ((int (*) __P(( \ 164*48033Smckusick struct vnode *vp))) nullop) 165*48033Smckusick #define mfs_advlock ((int (*) __P(( \ 166*48033Smckusick struct vnode *vp, \ 167*48033Smckusick caddr_t id, \ 168*48033Smckusick int op, \ 169*48033Smckusick struct flock *fl, \ 170*48033Smckusick int flags))) mfs_badop) 171