X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/d839edef977180bcdf3b23a3197dc4465670e5f8..422c9c215b3f4d9dde18865ab5c92cd51e8f5348:/usr/src/sys/miscfs/deadfs/dead_vnops.c diff --git a/usr/src/sys/miscfs/deadfs/dead_vnops.c b/usr/src/sys/miscfs/deadfs/dead_vnops.c index 8e2967d484..5bf607394e 100644 --- a/usr/src/sys/miscfs/deadfs/dead_vnops.c +++ b/usr/src/sys/miscfs/deadfs/dead_vnops.c @@ -4,75 +4,254 @@ * * %sccs.include.redist.c% * - * @(#)dead_vnops.c 7.11 (Berkeley) %G% + * @(#)dead_vnops.c 7.17 (Berkeley) %G% */ #include "param.h" +#include "systm.h" #include "time.h" #include "vnode.h" #include "errno.h" #include "namei.h" #include "buf.h" -int dead_lookup(), - dead_open(), - dead_read(), - dead_write(), - dead_strategy(), - dead_ioctl(), - dead_select(), - dead_lock(), - dead_bmap(), - dead_print(), - dead_ebadf(), - dead_badop(), - dead_nullop(); +/* + * Prototypes for dead operations on vnodes. + */ +int dead_badop(), + dead_ebadf(); +int dead_lookup __P(( + struct vnode *dvp, + struct vnode **vpp, + struct componentname *cnp)); +#define dead_create ((int (*) __P(( \ + struct vnode *dvp, \ + struct vnode **vpp, \ + struct componentname *cnp, \ + struct vattr *vap))) dead_badop) +#define dead_mknod ((int (*) __P(( \ + struct vnode *dvp, \ + struct vnode **vpp, \ + struct componentname *cnp, \ + struct vattr *vap))) dead_badop) +int dead_open __P(( + struct vnode *vp, + int mode, + struct ucred *cred, + struct proc *p)); +#define dead_close ((int (*) __P(( \ + struct vnode *vp, \ + int fflag, \ + struct ucred *cred, \ + struct proc *p))) nullop) +#define dead_access ((int (*) __P(( \ + struct vnode *vp, \ + int mode, \ + struct ucred *cred, \ + struct proc *p))) dead_ebadf) +#define dead_getattr ((int (*) __P(( \ + struct vnode *vp, \ + struct vattr *vap, \ + struct ucred *cred, \ + struct proc *p))) dead_ebadf) +#define dead_setattr ((int (*) __P(( \ + struct vnode *vp, \ + struct vattr *vap, \ + struct ucred *cred, \ + struct proc *p))) dead_ebadf) +int dead_read __P(( + struct vnode *vp, + struct uio *uio, + int ioflag, + struct ucred *cred)); +int dead_write __P(( + struct vnode *vp, + struct uio *uio, + int ioflag, + struct ucred *cred)); +int dead_ioctl __P(( + struct vnode *vp, + int command, + caddr_t data, + int fflag, + struct ucred *cred, + struct proc *p)); +int dead_select __P(( + struct vnode *vp, + int which, + int fflags, + struct ucred *cred, + struct proc *p)); +#define dead_mmap ((int (*) __P(( \ + struct vnode *vp, \ + int fflags, \ + struct ucred *cred, \ + struct proc *p))) dead_badop) +#define dead_fsync ((int (*) __P(( \ + struct vnode *vp, \ + int fflags, \ + struct ucred *cred, \ + int waitfor, \ + struct proc *p))) nullop) +#define dead_seek ((int (*) __P(( \ + struct vnode *vp, \ + off_t oldoff, \ + off_t newoff, \ + struct ucred *cred))) nullop) +#define dead_remove ((int (*) __P(( \ + struct vnode *dvp, \ + struct vnode *vp, \ + struct componentname *cnp))) dead_badop) +#define dead_link ((int (*) __P(( \ + register struct vnode *vp, \ + struct vnode *tdvp, \ + struct componentname *cnp))) dead_badop) +#define dead_rename ((int (*) __P(( \ + struct vnode *fdvp, \ + struct vnode *fvp, \ + struct componentname *fcnp, \ + struct vnode *tdvp, \ + struct vnode *tvp, \ + struct componentname *tcnp))) dead_badop) +#define dead_mkdir ((int (*) __P(( \ + struct vnode *dvp, \ + struct vnode **vpp, \ + struct componentname *cnp, \ + struct vattr *vap))) dead_badop) +#define dead_rmdir ((int (*) __P(( \ + struct vnode *dvp, \ + struct vnode *vp, \ + struct componentname *cnp))) dead_badop) +#define dead_symlink ((int (*) __P(( \ + struct vnode *dvp, \ + struct vnode **vpp, \ + struct componentname *cnp, \ + struct vattr *vap, \ + char *target))) dead_badop) +#define dead_readdir ((int (*) __P(( \ + struct vnode *vp, \ + struct uio *uio, \ + struct ucred *cred, \ + int *eofflagp))) dead_ebadf) +#define dead_readlink ((int (*) __P(( \ + struct vnode *vp, \ + struct uio *uio, \ + struct ucred *cred))) dead_ebadf) +#define dead_abortop ((int (*) __P(( \ + struct vnode *dvp, \ + struct componentname *cnp))) dead_badop) +#define dead_inactive ((int (*) __P(( \ + struct vnode *vp, \ + struct proc *p))) nullop) +#define dead_reclaim ((int (*) __P(( \ + struct vnode *vp))) nullop) +int dead_lock __P(( + struct vnode *vp)); +#define dead_unlock ((int (*) __P(( \ + struct vnode *vp))) nullop) +int dead_bmap __P(( + struct vnode *vp, + daddr_t bn, + struct vnode **vpp, + daddr_t *bnp)); +int dead_strategy __P(( + struct buf *bp)); +int dead_print __P(( + struct vnode *vp)); +#define dead_islocked ((int (*) __P(( \ + struct vnode *vp))) nullop) +#define dead_advlock ((int (*) __P(( \ + struct vnode *vp, \ + caddr_t id, \ + int op, \ + struct flock *fl, \ + int flags))) dead_ebadf) +#define dead_blkatoff ((int (*) __P(( \ + struct vnode *vp, \ + off_t offset, \ + char **res, \ + struct buf **bpp))) dead_badop) +#define dead_vget ((int (*) __P(( \ + struct mount *mp, \ + ino_t ino, \ + struct vnode **vpp))) dead_badop) +#define dead_valloc ((int (*) __P(( \ + struct vnode *pvp, \ + int mode, \ + struct ucred *cred, \ + struct vnode **vpp))) dead_badop) +#define dead_vfree ((void (*) __P(( \ + struct vnode *pvp, \ + ino_t ino, \ + int mode))) dead_badop) +#define dead_truncate ((int (*) __P(( \ + struct vnode *vp, \ + off_t length, \ + int flags, \ + struct ucred *cred))) nullop) +#define dead_update ((int (*) __P(( \ + struct vnode *vp, \ + struct timeval *ta, \ + struct timeval *tm, \ + int waitfor))) nullop) +#define dead_bwrite ((int (*) __P(( \ + struct buf *bp))) nullop) struct vnodeops dead_vnodeops = { dead_lookup, /* lookup */ - dead_badop, /* create */ - dead_badop, /* mknod */ + dead_create, /* create */ + dead_mknod, /* mknod */ dead_open, /* open */ - dead_nullop, /* close */ - dead_ebadf, /* access */ - dead_ebadf, /* getattr */ - dead_ebadf, /* setattr */ + dead_close, /* close */ + dead_access, /* access */ + dead_getattr, /* getattr */ + dead_setattr, /* setattr */ dead_read, /* read */ dead_write, /* write */ dead_ioctl, /* ioctl */ dead_select, /* select */ - dead_badop, /* mmap */ - dead_nullop, /* fsync */ - dead_nullop, /* seek */ - dead_badop, /* remove */ - dead_badop, /* link */ - dead_badop, /* rename */ - dead_badop, /* mkdir */ - dead_badop, /* rmdir */ - dead_badop, /* symlink */ - dead_ebadf, /* readdir */ - dead_ebadf, /* readlink */ - dead_badop, /* abortop */ - dead_nullop, /* inactive */ - dead_nullop, /* reclaim */ + dead_mmap, /* mmap */ + dead_fsync, /* fsync */ + dead_seek, /* seek */ + dead_remove, /* remove */ + dead_link, /* link */ + dead_rename, /* rename */ + dead_mkdir, /* mkdir */ + dead_rmdir, /* rmdir */ + dead_symlink, /* symlink */ + dead_readdir, /* readdir */ + dead_readlink, /* readlink */ + dead_abortop, /* abortop */ + dead_inactive, /* inactive */ + dead_reclaim, /* reclaim */ dead_lock, /* lock */ - dead_nullop, /* unlock */ + dead_unlock, /* unlock */ dead_bmap, /* bmap */ dead_strategy, /* strategy */ dead_print, /* print */ - dead_nullop, /* islocked */ + dead_islocked, /* islocked */ + dead_advlock, /* advlock */ + dead_blkatoff, /* blkatoff */ + dead_vget, /* vget */ + dead_valloc, /* valloc */ + dead_vfree, /* vfree */ + dead_truncate, /* truncate */ + dead_update, /* update */ + dead_bwrite, /* bwrite */ }; /* * Trivial lookup routine that always fails. */ -dead_lookup(vp, ndp) - struct vnode *vp; - struct nameidata *ndp; +/* ARGSUSED */ +int +dead_lookup(dvp, vpp, cnp) + struct vnode *dvp; + struct vnode **vpp; + struct componentname *cnp; { - ndp->ni_dvp = vp; - ndp->ni_vp = NULL; + *vpp = NULL; return (ENOTDIR); } @@ -80,10 +259,11 @@ dead_lookup(vp, ndp) * Open always fails as if device did not exist. */ /* ARGSUSED */ -dead_open(vp, mode, cred) +dead_open(vp, mode, cred, p) struct vnode *vp; int mode; struct ucred *cred; + struct proc *p; { return (ENXIO); @@ -130,24 +310,26 @@ dead_write(vp, uio, ioflag, cred) * Device ioctl operation. */ /* ARGSUSED */ -dead_ioctl(vp, com, data, fflag, cred) +dead_ioctl(vp, com, data, fflag, cred, p) struct vnode *vp; register int com; caddr_t data; int fflag; struct ucred *cred; + struct proc *p; { if (!chkvnlock(vp)) return (EBADF); - return (VOP_IOCTL(vp, com, data, fflag, cred)); + return (VOP_IOCTL(vp, com, data, fflag, cred, p)); } /* ARGSUSED */ -dead_select(vp, which, fflags, cred) +dead_select(vp, which, fflags, cred, p) struct vnode *vp; int which, fflags; struct ucred *cred; + struct proc *p; { /*