* Copyright (c) 1993 Paul Kranenburg
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 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.6 1993/09/07 15:41:24 ws Exp $
* This structure defines the control data for the proc file system.
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 */
* Format of a directory entry in /proc
#define PFSDENTSIZE (sizeof(struct direct) - MAXNAMELEN + 8)
#define DIRBLKSIZ DEV_BSIZE
* 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.
#define pfs_create ((int (*) __P(( \
struct proc *p))) pfs_badop)
#define pfs_mknod ((int (*) __P(( \
struct proc *p))) pfs_badop)
#define pfs_read ((int (*) __P(( \
struct ucred *cred))) pfs_doio)
#define pfs_write ((int (*) __P(( \
struct ucred *cred))) pfs_doio)
#define pfs_select ((int (*) __P(( \
struct proc *p))) pfs_badop)
#define pfs_mmap ((int (*) __P(( \
struct proc *p))) pfs_badop)
#define pfs_fsync ((int (*) __P(( \
struct proc *p))) pfs_badop)
#define pfs_seek ((int (*) __P(( \
struct ucred *cred))) pfs_badop)
#define pfs_remove ((int (*) __P(( \
struct proc *p))) pfs_badop)
#define pfs_link ((int (*) __P(( \
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 proc *p))) pfs_badop)
#define pfs_rmdir ((int (*) __P(( \
struct proc *p))) pfs_badop)
#define pfs_symlink ((int (*) __P(( \
struct proc *p))) pfs_badop)
#define pfs_readlink ((int (*) __P(( \
struct ucred *cred))) pfs_badop)
#define pfs_abortop ((int (*) __P(( \
struct nameidata *ndp))) pfs_badop)
#define pfs_lock ((int (*) __P(( \
struct vnode *vp))) nullop)
#define pfs_unlock ((int (*) __P(( \
struct vnode *vp))) nullop)
#define pfs_islocked ((int (*) __P(( \
struct vnode *vp))) nullop)
#define pfs_advlock ((int (*) __P(( \