more-or-less working with new proc & user structs
[unix-history] / usr / src / sys / miscfs / specfs / spec_vnops.c
index ababdc2..c1f2520 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)spec_vnops.c        7.30 (Berkeley) %G%
+ *     @(#)spec_vnops.c        7.31 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -45,8 +45,9 @@ int   spec_lookup(),
        spec_print(),
        spec_advlock(),
        spec_ebadf(),
        spec_print(),
        spec_advlock(),
        spec_ebadf(),
-       spec_badop(),
-       spec_nullop();
+       spec_badop();
+
+int    nullop();
 
 struct vnodeops spec_vnodeops = {
        spec_lookup,            /* lookup */
 
 struct vnodeops spec_vnodeops = {
        spec_lookup,            /* lookup */
@@ -62,7 +63,7 @@ struct vnodeops spec_vnodeops = {
        spec_ioctl,             /* ioctl */
        spec_select,            /* select */
        spec_badop,             /* mmap */
        spec_ioctl,             /* ioctl */
        spec_select,            /* select */
        spec_badop,             /* mmap */
-       spec_nullop,            /* fsync */
+       nullop,                 /* fsync */
        spec_badop,             /* seek */
        spec_badop,             /* remove */
        spec_badop,             /* link */
        spec_badop,             /* seek */
        spec_badop,             /* remove */
        spec_badop,             /* link */
@@ -73,14 +74,14 @@ struct vnodeops spec_vnodeops = {
        spec_badop,             /* readdir */
        spec_badop,             /* readlink */
        spec_badop,             /* abortop */
        spec_badop,             /* readdir */
        spec_badop,             /* readlink */
        spec_badop,             /* abortop */
-       spec_nullop,            /* inactive */
-       spec_nullop,            /* reclaim */
+       nullop,                 /* inactive */
+       nullop,                 /* reclaim */
        spec_lock,              /* lock */
        spec_unlock,            /* unlock */
        spec_bmap,              /* bmap */
        spec_strategy,          /* strategy */
        spec_print,             /* print */
        spec_lock,              /* lock */
        spec_unlock,            /* unlock */
        spec_bmap,              /* bmap */
        spec_strategy,          /* strategy */
        spec_print,             /* print */
-       spec_nullop,            /* islocked */
+       nullop,                 /* islocked */
        spec_advlock,           /* advlock */
 };
 
        spec_advlock,           /* advlock */
 };
 
@@ -108,6 +109,7 @@ spec_open(vp, mode, cred)
        int mode;
        struct ucred *cred;
 {
        int mode;
        struct ucred *cred;
 {
+       struct proc *p = curproc;               /* XXX */
        dev_t dev = (dev_t)vp->v_rdev;
        register int maj = major(dev);
        int error;
        dev_t dev = (dev_t)vp->v_rdev;
        register int maj = major(dev);
        int error;
@@ -120,14 +122,14 @@ spec_open(vp, mode, cred)
        case VCHR:
                if ((u_int)maj >= nchrdev)
                        return (ENXIO);
        case VCHR:
                if ((u_int)maj >= nchrdev)
                        return (ENXIO);
-               return ((*cdevsw[maj].d_open)(dev, mode, S_IFCHR));
+               return ((*cdevsw[maj].d_open)(dev, mode, S_IFCHR, p));
 
        case VBLK:
                if ((u_int)maj >= nblkdev)
                        return (ENXIO);
                if (error = mountedon(vp))
                        return (error);
 
        case VBLK:
                if ((u_int)maj >= nblkdev)
                        return (ENXIO);
                if (error = mountedon(vp))
                        return (error);
-               return ((*bdevsw[maj].d_open)(dev, mode, S_IFBLK));
+               return ((*bdevsw[maj].d_open)(dev, mode, S_IFBLK, p));
        }
        return (0);
 }
        }
        return (0);
 }
@@ -142,6 +144,7 @@ spec_read(vp, uio, ioflag, cred)
        int ioflag;
        struct ucred *cred;
 {
        int ioflag;
        struct ucred *cred;
 {
+       struct proc *p = curproc;               /* XXX */
        struct buf *bp;
        daddr_t bn;
        long bsize, bscale;
        struct buf *bp;
        daddr_t bn;
        long bsize, bscale;
@@ -165,7 +168,7 @@ spec_read(vp, uio, ioflag, cred)
                        return (EINVAL);
                VOP_UNLOCK(vp);
                error = (*cdevsw[major(vp->v_rdev)].d_read)
                        return (EINVAL);
                VOP_UNLOCK(vp);
                error = (*cdevsw[major(vp->v_rdev)].d_read)
-                       (vp->v_rdev, uio, ioflag);
+                       (vp->v_rdev, uio, ioflag, p);
                VOP_LOCK(vp);
                return (error);
 
                VOP_LOCK(vp);
                return (error);
 
@@ -174,7 +177,7 @@ spec_read(vp, uio, ioflag, cred)
                        return (EINVAL);
                bsize = BLKDEV_IOSIZE;
                if ((*bdevsw[major(vp->v_rdev)].d_ioctl)(vp->v_rdev, DIOCGPART,
                        return (EINVAL);
                bsize = BLKDEV_IOSIZE;
                if ((*bdevsw[major(vp->v_rdev)].d_ioctl)(vp->v_rdev, DIOCGPART,
-                   (caddr_t)&dpart, FREAD) == 0) {
+                   (caddr_t)&dpart, FREAD, p) == 0) {
                        if (dpart.part->p_fstype == FS_BSDFFS &&
                            dpart.part->p_frag != 0 && dpart.part->p_fsize != 0)
                                bsize = dpart.part->p_frag *
                        if (dpart.part->p_fstype == FS_BSDFFS &&
                            dpart.part->p_frag != 0 && dpart.part->p_fsize != 0)
                                bsize = dpart.part->p_frag *
@@ -219,6 +222,7 @@ spec_write(vp, uio, ioflag, cred)
        int ioflag;
        struct ucred *cred;
 {
        int ioflag;
        struct ucred *cred;
 {
+       struct proc *p = curproc;               /* XXX */
        struct buf *bp;
        daddr_t bn;
        int bsize, blkmask;
        struct buf *bp;
        daddr_t bn;
        int bsize, blkmask;
@@ -240,7 +244,7 @@ spec_write(vp, uio, ioflag, cred)
                        return (EINVAL);
                VOP_UNLOCK(vp);
                error = (*cdevsw[major(vp->v_rdev)].d_write)
                        return (EINVAL);
                VOP_UNLOCK(vp);
                error = (*cdevsw[major(vp->v_rdev)].d_write)
-                       (vp->v_rdev, uio, ioflag);
+                       (vp->v_rdev, uio, ioflag, p);
                VOP_LOCK(vp);
                return (error);
 
                VOP_LOCK(vp);
                return (error);
 
@@ -251,7 +255,7 @@ spec_write(vp, uio, ioflag, cred)
                        return (EINVAL);
                bsize = BLKDEV_IOSIZE;
                if ((*bdevsw[major(vp->v_rdev)].d_ioctl)(vp->v_rdev, DIOCGPART,
                        return (EINVAL);
                bsize = BLKDEV_IOSIZE;
                if ((*bdevsw[major(vp->v_rdev)].d_ioctl)(vp->v_rdev, DIOCGPART,
-                   (caddr_t)&dpart, FREAD) == 0) {
+                   (caddr_t)&dpart, FREAD, p) == 0) {
                        if (dpart.part->p_fstype == FS_BSDFFS &&
                            dpart.part->p_frag != 0 && dpart.part->p_fsize != 0)
                                bsize = dpart.part->p_frag *
                        if (dpart.part->p_fstype == FS_BSDFFS &&
                            dpart.part->p_frag != 0 && dpart.part->p_fsize != 0)
                                bsize = dpart.part->p_frag *
@@ -297,12 +301,14 @@ spec_ioctl(vp, com, data, fflag, cred)
        int fflag;
        struct ucred *cred;
 {
        int fflag;
        struct ucred *cred;
 {
+       struct proc *p = curproc;               /* XXX */
        dev_t dev = vp->v_rdev;
 
        switch (vp->v_type) {
 
        case VCHR:
        dev_t dev = vp->v_rdev;
 
        switch (vp->v_type) {
 
        case VCHR:
-               return ((*cdevsw[major(dev)].d_ioctl)(dev, com, data, fflag));
+               return ((*cdevsw[major(dev)].d_ioctl)(dev, com, data,
+                   fflag, p));
 
        case VBLK:
                if (com == 0 && (int)data == B_TAPE)
 
        case VBLK:
                if (com == 0 && (int)data == B_TAPE)
@@ -310,7 +316,8 @@ spec_ioctl(vp, com, data, fflag, cred)
                                return (0);
                        else
                                return (1);
                                return (0);
                        else
                                return (1);
-               return ((*bdevsw[major(dev)].d_ioctl)(dev, com, data, fflag));
+               return ((*bdevsw[major(dev)].d_ioctl)(dev, com, data,
+                  fflag, p));
 
        default:
                panic("spec_ioctl");
 
        default:
                panic("spec_ioctl");
@@ -324,6 +331,7 @@ spec_select(vp, which, fflags, cred)
        int which, fflags;
        struct ucred *cred;
 {
        int which, fflags;
        struct ucred *cred;
 {
+       struct proc *p = curproc;               /* XXX */
        register dev_t dev;
 
        switch (vp->v_type) {
        register dev_t dev;
 
        switch (vp->v_type) {
@@ -333,7 +341,7 @@ spec_select(vp, which, fflags, cred)
 
        case VCHR:
                dev = vp->v_rdev;
 
        case VCHR:
                dev = vp->v_rdev;
-               return (*cdevsw[major(dev)].d_select)(dev, which);
+               return (*cdevsw[major(dev)].d_select)(dev, which, p);
        }
 }
 
        }
 }
 
@@ -393,6 +401,7 @@ spec_close(vp, flag, cred)
        int flag;
        struct ucred *cred;
 {
        int flag;
        struct ucred *cred;
 {
+       struct proc *p = curproc;               /* XXX */
        dev_t dev = vp->v_rdev;
        int (*cfunc)();
        int mode;
        dev_t dev = vp->v_rdev;
        int (*cfunc)();
        int mode;
@@ -439,7 +448,7 @@ spec_close(vp, flag, cred)
                panic("spec_close: not special");
        }
 
                panic("spec_close: not special");
        }
 
-       return ((*cfunc)(dev, flag, mode));
+       return ((*cfunc)(dev, flag, mode, p));
 }
 
 /*
 }
 
 /*
@@ -485,12 +494,3 @@ spec_badop()
        panic("spec_badop called");
        /* NOTREACHED */
 }
        panic("spec_badop called");
        /* NOTREACHED */
 }
-
-/*
- * Special device null operation
- */
-spec_nullop()
-{
-
-       return (0);
-}