aboutsummaryrefslogtreecommitdiff
path: root/sys/procfs/pfsnode.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/procfs/pfsnode.h')
-rw-r--r--sys/procfs/pfsnode.h217
1 files changed, 217 insertions, 0 deletions
diff --git a/sys/procfs/pfsnode.h b/sys/procfs/pfsnode.h
new file mode 100644
index 000000000000..6979e493e8cc
--- /dev/null
+++ b/sys/procfs/pfsnode.h
@@ -0,0 +1,217 @@
+/*
+ * Copyright (c) 1993 Paul Kranenburg
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Paul Kranenburg.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software withough specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: pfsnode.h,v 1.1 1993/12/12 12:26:39 davidg Exp $
+ */
+
+/*
+ * This structure defines the control data for the proc file system.
+ */
+
+struct pfsnode {
+ struct pfsnode *pfs_next; /* next on list */
+ struct vnode *pfs_vnode; /* vnode associated with this pfsnode */
+ pid_t pfs_pid; /* associated process */
+ u_short pfs_mode; /* mode bits for stat() */
+ uid_t pfs_uid; /* process' owner */
+ gid_t pfs_gid; /* process' group */
+ u_long pfs_vflags; /* chflags() flags */
+ u_long pfs_flags; /* open flags */
+ struct vmspace *pfs_vs;
+};
+
+struct pfsnode *pfshead;
+
+/*
+ * Format of a directory entry in /proc
+ */
+struct pfsdent {
+ unsigned long d_fileno;
+ unsigned short d_reclen;
+ unsigned short d_namlen;
+ char d_nam[8];
+};
+#define PFSDENTSIZE (sizeof(struct direct) - MAXNAMELEN + 8)
+
+#ifndef DIRBLKSIZ
+#define DIRBLKSIZ DEV_BSIZE
+#endif
+
+#ifdef DEBUG
+int pfs_debug;
+#endif
+
+/*
+ * Convert between pfsnode pointers and vnode pointers
+ */
+#define VTOPFS(vp) ((struct pfsnode *)(vp)->v_data)
+#define PFSTOV(pfsp) ((pfsp)->pfs_vnode)
+
+/*
+ * Prototypes for PFS operations on vnodes.
+ */
+int pfs_badop();
+int pfs_doio();
+int pfs_lookup __P(( \
+ struct vnode *vp, \
+ struct nameidata *ndp, \
+ struct proc *p));
+#define pfs_create ((int (*) __P(( \
+ struct nameidata *ndp, \
+ struct vattr *vap, \
+ struct proc *p))) pfs_badop)
+#define pfs_mknod ((int (*) __P(( \
+ struct nameidata *ndp, \
+ struct vattr *vap, \
+ struct ucred *cred, \
+ struct proc *p))) pfs_badop)
+int pfs_open __P((
+ struct vnode *vp,
+ int mode,
+ struct ucred *cred,
+ struct proc *p));
+int pfs_close __P((
+ struct vnode *vp,
+ int fflag,
+ struct ucred *cred,
+ struct proc *p));
+int pfs_access __P((
+ struct vnode *vp,
+ int mode,
+ struct ucred *cred,
+ struct proc *p));
+int pfs_getattr __P((
+ struct vnode *vp,
+ struct vattr *vap,
+ struct ucred *cred,
+ struct proc *p));
+int pfs_setattr __P((
+ struct vnode *vp,
+ struct vattr *vap,
+ struct ucred *cred,
+ struct proc *p));
+#define pfs_read ((int (*) __P(( \
+ struct vnode *vp, \
+ struct uio *uio, \
+ int ioflag, \
+ struct ucred *cred))) pfs_doio)
+#define pfs_write ((int (*) __P(( \
+ struct vnode *vp, \
+ struct uio *uio, \
+ int ioflag, \
+ struct ucred *cred))) pfs_doio)
+int pfs_ioctl __P((
+ struct vnode *vp,
+ int command,
+ caddr_t data,
+ int fflag,
+ struct ucred *cred,
+ struct proc *p));
+#define pfs_select ((int (*) __P(( \
+ struct vnode *vp, \
+ int which, \
+ int fflags, \
+ struct ucred *cred, \
+ struct proc *p))) pfs_badop)
+#define pfs_mmap ((int (*) __P(( \
+ struct vnode *vp, \
+ int fflags, \
+ struct ucred *cred, \
+ struct proc *p))) pfs_badop)
+#define pfs_fsync ((int (*) __P(( \
+ struct vnode *vp, \
+ int fflags, \
+ struct ucred *cred, \
+ int waitfor, \
+ struct proc *p))) pfs_badop)
+#define pfs_seek ((int (*) __P(( \
+ struct vnode *vp, \
+ off_t oldoff, \
+ off_t newoff, \
+ struct ucred *cred))) pfs_badop)
+#define pfs_remove ((int (*) __P(( \
+ struct nameidata *ndp, \
+ struct proc *p))) pfs_badop)
+#define pfs_link ((int (*) __P(( \
+ struct vnode *vp, \
+ struct nameidata *ndp, \
+ struct proc *p))) pfs_badop)
+#define pfs_rename ((int (*) __P(( \
+ struct nameidata *fndp, \
+ struct nameidata *tdnp, \
+ struct proc *p))) pfs_badop)
+#define pfs_mkdir ((int (*) __P(( \
+ struct nameidata *ndp, \
+ struct vattr *vap, \
+ struct proc *p))) pfs_badop)
+#define pfs_rmdir ((int (*) __P(( \
+ struct nameidata *ndp, \
+ struct proc *p))) pfs_badop)
+#define pfs_symlink ((int (*) __P(( \
+ struct nameidata *ndp, \
+ struct vattr *vap, \
+ char *target, \
+ struct proc *p))) pfs_badop)
+int pfs_readdir __P((
+ struct vnode *vp,
+ struct uio *uio,
+ struct ucred *cred,
+ int *eofflagp));
+#define pfs_readlink ((int (*) __P(( \
+ struct vnode *vp, \
+ struct uio *uio, \
+ struct ucred *cred))) pfs_badop)
+#define pfs_abortop ((int (*) __P(( \
+ struct nameidata *ndp))) pfs_badop)
+int pfs_inactive __P((
+ struct vnode *vp,
+ struct proc *p));
+int pfs_reclaim __P((
+ struct vnode *vp));
+#define pfs_lock ((int (*) __P(( \
+ struct vnode *vp))) nullop)
+#define pfs_unlock ((int (*) __P(( \
+ struct vnode *vp))) nullop)
+int pfs_bmap __P((
+ struct vnode *vp,
+ daddr_t bn,
+ struct vnode **vpp,
+ daddr_t *bnp));
+int pfs_strategy __P((
+ struct buf *bp));
+void pfs_print __P((
+ struct vnode *vp));
+#define pfs_islocked ((int (*) __P(( \
+ struct vnode *vp))) nullop)
+#define pfs_advlock ((int (*) __P(( \
+ struct vnode *vp, \
+ caddr_t id, \
+ int op, \
+ struct flock *fl, \
+ int flags))) pfs_badop)