merge in netbsd changes.
[unix-history] / usr / src / sys / miscfs / procfs / procfs.h
index 0e89da5..45b617c 100644 (file)
@@ -1,14 +1,14 @@
 /*
 /*
- * Copyright (c) 1993 The Regents of the University of California.
  * Copyright (c) 1993 Jan-Simon Pendry
  * Copyright (c) 1993 Jan-Simon Pendry
- * All rights reserved.
+ * Copyright (c) 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from software contributed to Berkeley by
  * Jan-Simon Pendry.
  *
  * %sccs.include.redist.c%
  *
  *
  * This code is derived from software contributed to Berkeley by
  * Jan-Simon Pendry.
  *
  * %sccs.include.redist.c%
  *
- *     @(#)procfs.h    8.1 (Berkeley) %G%
+ *     @(#)procfs.h    8.7 (Berkeley) %G%
  *
  * 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 $
  */
 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 */
        Pregs,          /* the process's register set */
        Pproc,          /* a process-specific sub-directory */
        Pfile,          /* the executable file */
        Pmem,           /* the process's memory image */
        Pregs,          /* the process's register set */
+       Pfpregs,        /* the process's FP register set */
        Pctl,           /* process control */
        Pstatus,        /* process status */
        Pnote,          /* process notifier */
        Pctl,           /* process control */
        Pstatus,        /* process status */
        Pnote,          /* process notifier */
@@ -67,9 +69,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
@@ -83,24 +85,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;
 
 /* <machine/reg.h> */
 struct reg;
+struct fpreg;
 
 #define PFIND(pid) ((pid) ? pfind(pid) : &proc0)
 
 #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 int procfs_read_regs __P((struct proc *, struct reg *));
-extern int procfs_write_regs __P((struct proc *, struct reg *));
-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_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
@@ -135,7 +147,7 @@ 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 *));
@@ -146,7 +158,6 @@ int procfs_bmap __P((struct vop_bmap_args *));
 int    procfs_print __P((struct vop_print_args *));
 #define procfs_islocked ((int (*) __P((struct vop_islocked_args *))) nullop)
 #define procfs_advlock ((int (*) __P((struct vop_advlock_args *))) procfs_badop)
 int    procfs_print __P((struct vop_print_args *));
 #define procfs_islocked ((int (*) __P((struct vop_islocked_args *))) nullop)
 #define procfs_advlock ((int (*) __P((struct vop_advlock_args *))) procfs_badop)
-#define procfs_pathconf ((int (*) __P((struct vop_pathconf_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_vfree ((int (*) __P((struct vop_vfree_args *))) nullop)
 #define procfs_blkatoff ((int (*) __P((struct vop_blkatoff_args *))) procfs_badop)
 #define procfs_valloc ((int (*) __P((struct vop_valloc_args *))) procfs_badop)
 #define procfs_vfree ((int (*) __P((struct vop_vfree_args *))) nullop)