BSD 4_4_Lite2 release
[unix-history] / usr / src / sys / miscfs / procfs / procfs.h
index f7b8fa3..792a73b 100644 (file)
@@ -34,7 +34,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     @(#)procfs.h    8.6 (Berkeley) 2/3/94
+ *     @(#)procfs.h    8.9 (Berkeley) 5/14/95
  *
  * From:
  *     $Id: procfs.h,v 3.2 1993/12/15 09:40:17 jsp Exp $
  *
  * From:
  *     $Id: procfs.h,v 3.2 1993/12/15 09:40:17 jsp Exp $
@@ -45,6 +45,7 @@
  */
 typedef enum {
        Proot,          /* the filesystem root */
  */
 typedef enum {
        Proot,          /* the filesystem root */
+       Pcurproc,       /* symbolic link for curproc */
        Pproc,          /* a process-specific sub-directory */
        Pfile,          /* the executable file */
        Pmem,           /* the process's memory image */
        Pproc,          /* a process-specific sub-directory */
        Pfile,          /* the executable file */
        Pmem,           /* the process's memory image */
@@ -94,9 +95,9 @@ struct pfsdent {
 };
 #define UIO_MX sizeof(struct pfsdent)
 #define PROCFS_FILENO(pid, type) \
 };
 #define UIO_MX sizeof(struct pfsdent)
 #define PROCFS_FILENO(pid, type) \
-       (((type) == Proot) ? \
-                       2 : \
-                       ((((pid)+1) << 3) + ((int) (type))))
+       (((type) < Pproc) ? \
+                       ((type) + 2) : \
+                       ((((pid)+1) << 4) + ((int) (type))))
 
 /*
  * Convert between pfsnode vnode
 
 /*
  * Convert between pfsnode vnode
@@ -110,29 +111,34 @@ struct vfs_namemap {
        int nm_val;
 };
 
        int nm_val;
 };
 
-extern int vfs_getuserstr __P((struct uio *, char *, int *));
-extern vfs_namemap_t *vfs_findname __P((vfs_namemap_t *, char *, int));
+int vfs_getuserstr __P((struct uio *, char *, int *));
+vfs_namemap_t *vfs_findname __P((vfs_namemap_t *, char *, int));
 
 /* <machine/reg.h> */
 struct reg;
 struct fpreg;
 
 #define PFIND(pid) ((pid) ? pfind(pid) : &proc0)
 
 /* <machine/reg.h> */
 struct reg;
 struct fpreg;
 
 #define PFIND(pid) ((pid) ? pfind(pid) : &proc0)
-extern int procfs_freevp __P((struct vnode *));
-extern int procfs_allocvp __P((struct mount *, struct vnode **, long, pfstype));
-extern struct vnode *procfs_findtextvp __P((struct proc *));
-extern int procfs_sstep __P((struct proc *));
-extern void procfs_fix_sstep __P((struct proc *));
-extern int procfs_read_regs __P((struct proc *, struct reg *));
-extern int procfs_write_regs __P((struct proc *, struct reg *));
-extern int procfs_read_fpregs __P((struct proc *, struct fpreg *));
-extern int procfs_write_fpregs __P((struct proc *, struct fpreg *));
-extern int procfs_donote __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
-extern int procfs_doregs __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
-extern int procfs_dofpregs __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
-extern int procfs_domem __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
-extern int procfs_doctl __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
-extern int procfs_dostatus __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
+int procfs_freevp __P((struct vnode *));
+int procfs_allocvp __P((struct mount *, struct vnode **, long, pfstype));
+struct vnode *procfs_findtextvp __P((struct proc *));
+int procfs_sstep __P((struct proc *, int));
+void procfs_fix_sstep __P((struct proc *));
+int procfs_read_regs __P((struct proc *, struct reg *));
+int procfs_write_regs __P((struct proc *, struct reg *));
+int procfs_read_fpregs __P((struct proc *, struct fpreg *));
+int procfs_write_fpregs __P((struct proc *, struct fpreg *));
+int procfs_donote __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
+int procfs_doregs __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
+int procfs_dofpregs __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
+int procfs_domem __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
+int procfs_doctl __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
+int procfs_dostatus __P((struct proc *, struct proc *, struct pfsnode *pfsp, struct uio *uio));
+
+/* functions to check whether or not files should be displayed */
+int procfs_validfile __P((struct proc *));
+int procfs_validfpregs __P((struct proc *));
+int procfs_validregs __P((struct proc *));
 
 #define PROCFS_LOCKED  0x01
 #define PROCFS_WANT    0x02
 
 #define PROCFS_LOCKED  0x01
 #define PROCFS_WANT    0x02
@@ -158,6 +164,7 @@ int procfs_setattr __P((struct vop_setattr_args *));
 int    procfs_ioctl __P((struct vop_ioctl_args *));
 #define procfs_select ((int (*) __P((struct vop_select_args *))) procfs_badop)
 #define procfs_mmap ((int (*) __P((struct vop_mmap_args *))) procfs_badop)
 int    procfs_ioctl __P((struct vop_ioctl_args *));
 #define procfs_select ((int (*) __P((struct vop_select_args *))) procfs_badop)
 #define procfs_mmap ((int (*) __P((struct vop_mmap_args *))) procfs_badop)
+#define        procfs_revoke vop_revoke
 #define procfs_fsync ((int (*) __P((struct vop_fsync_args *))) procfs_badop)
 #define procfs_seek ((int (*) __P((struct vop_seek_args *))) procfs_badop)
 #define procfs_remove ((int (*) __P((struct vop_remove_args *))) procfs_badop)
 #define procfs_fsync ((int (*) __P((struct vop_fsync_args *))) procfs_badop)
 #define procfs_seek ((int (*) __P((struct vop_seek_args *))) procfs_badop)
 #define procfs_remove ((int (*) __P((struct vop_remove_args *))) procfs_badop)
@@ -167,16 +174,17 @@ int       procfs_ioctl __P((struct vop_ioctl_args *));
 #define procfs_rmdir ((int (*) __P((struct vop_rmdir_args *))) procfs_badop)
 #define procfs_symlink ((int (*) __P((struct vop_symlink_args *))) procfs_badop)
 int    procfs_readdir __P((struct vop_readdir_args *));
 #define procfs_rmdir ((int (*) __P((struct vop_rmdir_args *))) procfs_badop)
 #define procfs_symlink ((int (*) __P((struct vop_symlink_args *))) procfs_badop)
 int    procfs_readdir __P((struct vop_readdir_args *));
-#define procfs_readlink ((int (*) __P((struct vop_readlink_args *))) procfs_badop)
+int    procfs_readlink __P((struct vop_readlink_args *));
 int    procfs_abortop __P((struct vop_abortop_args *));
 int    procfs_inactive __P((struct vop_inactive_args *));
 int    procfs_reclaim __P((struct vop_reclaim_args *));
 int    procfs_abortop __P((struct vop_abortop_args *));
 int    procfs_inactive __P((struct vop_inactive_args *));
 int    procfs_reclaim __P((struct vop_reclaim_args *));
-#define procfs_lock ((int (*) __P((struct vop_lock_args *))) nullop)
-#define procfs_unlock ((int (*) __P((struct vop_unlock_args *))) nullop)
+#define procfs_lock ((int (*) __P((struct  vop_lock_args *)))vop_nolock)
+#define procfs_unlock ((int (*) __P((struct  vop_unlock_args *)))vop_nounlock)
 int    procfs_bmap __P((struct vop_bmap_args *));
 #define        procfs_strategy ((int (*) __P((struct vop_strategy_args *))) procfs_badop)
 int    procfs_print __P((struct vop_print_args *));
 int    procfs_bmap __P((struct vop_bmap_args *));
 #define        procfs_strategy ((int (*) __P((struct vop_strategy_args *))) procfs_badop)
 int    procfs_print __P((struct vop_print_args *));
-#define procfs_islocked ((int (*) __P((struct vop_islocked_args *))) nullop)
+#define procfs_islocked \
+       ((int (*) __P((struct vop_islocked_args *)))vop_noislocked)
 #define procfs_advlock ((int (*) __P((struct vop_advlock_args *))) procfs_badop)
 #define procfs_blkatoff ((int (*) __P((struct vop_blkatoff_args *))) procfs_badop)
 #define procfs_valloc ((int (*) __P((struct vop_valloc_args *))) procfs_badop)
 #define procfs_advlock ((int (*) __P((struct vop_advlock_args *))) procfs_badop)
 #define procfs_blkatoff ((int (*) __P((struct vop_blkatoff_args *))) procfs_badop)
 #define procfs_valloc ((int (*) __P((struct vop_valloc_args *))) procfs_badop)