merge in netbsd changes.
[unix-history] / usr / src / sys / miscfs / procfs / procfs.h
index 1e7869a..45b617c 100644 (file)
@@ -8,7 +8,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)procfs.h    8.4 (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,25 +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 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_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
@@ -136,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 *));