BSD 4_4_Lite1 release
[unix-history] / usr / src / sys / sys / user.h
index a4e6a5b..85fdd13 100644 (file)
@@ -1,97 +1,91 @@
 /*
 /*
- * Copyright (c) 1982, 1986, 1989 Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1982, 1986, 1989, 1991, 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  *
- * %sccs.include.redist.c%
+ * 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 the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
  *
  *
- *     @(#)user.h      7.16 (Berkeley) %G%
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
+ *
+ *     @(#)user.h      8.2 (Berkeley) 9/23/93
  */
 
 #include <machine/pcb.h>
  */
 
 #include <machine/pcb.h>
-#include <sys/dmap.h>
+#ifndef KERNEL
+/* stuff that *used* to be included by user.h, or is now needed */
+#include <errno.h>
 #include <sys/time.h>
 #include <sys/resource.h>
 #include <sys/time.h>
 #include <sys/resource.h>
-#include <sys/namei.h>
 #include <sys/ucred.h>
 #include <sys/ucred.h>
+#include <sys/uio.h>
+#endif
+#include <sys/resourcevar.h>
+#include <sys/signalvar.h>
+#include <vm/vm.h>             /* XXX */
+#include <sys/sysctl.h>
+
 
 /*
 
 /*
- * Per process structure containing data that
- * isn't needed in core when the process is swapped out.
+ * Per process structure containing data that isn't needed in core
+ * when the process isn't running (esp. when swapped out).
+ * This structure may or may not be at the same kernel address
+ * in all processes.
  */
  
 struct user {
        struct  pcb u_pcb;
  */
  
 struct user {
        struct  pcb u_pcb;
-       struct  proc *u_procp;          /* pointer to proc structure */
-       int     *u_ar0;                 /* address of users saved R0 */
-
-/* 1.1 - processes and protection */
-#define u_cred u_nd.ni_cred
-#define u_uid  u_cred->cr_uid          /* effective user id */
-#define u_gid  u_cred->cr_gid          /* effective group id */
-
-/* 1.2 - memory management */
-       segsz_t u_tsize;                /* text size (clicks) */
-       segsz_t u_dsize;                /* data size (clicks) */
-       segsz_t u_ssize;                /* stack size (clicks) */
-       struct  dmap u_pad1[4];
-       label_t u_ssave;                /* label variable for swapping */
-       caddr_t u_taddr;                /* user virtual address of text */
-       caddr_t u_daddr;                /* user virtual address of data */
-       time_t  u_outime;               /* user time at last sample */
-       caddr_t u_maxsaddr;             /* user VA at max stack growth */
-
-/* 1.3 - signal management */
-       sig_t   u_signal[NSIG];         /* disposition of signals */
-       int     u_sigmask[NSIG];        /* signals to be blocked */
-       int     u_sigonstack;           /* signals to take on sigstack */
-       int     u_sigintr;              /* signals that interrupt syscalls */
-       int     u_oldmask;              /* saved mask from before sigpause */
-       struct  sigstack u_sigstack;    /* sp & on stack state variable */
-#define        u_onstack       u_sigstack.ss_onstack
-#define        u_sigsp         u_sigstack.ss_sp
-       int     u_sig;                  /* for core dump/debugger XXX */
-       int     u_code;                 /* for core dump/debugger XXX */
-
-/* 1.4 - descriptor management */
-       long    u_pad2[82];
 
 
-/* 1.5 - timing and statistics */
-       struct  rusage u_ru;            /* stats for this proc */
-       struct  rusage u_cru;           /* sum of stats for reaped children */
-       struct  itimerval u_timer[3];
-       struct  timeval u_start;
-       short   u_acflag;
+       struct  sigacts u_sigacts;      /* p_sigacts points here (use it!) */
+       struct  pstats u_stats;         /* p_stats points here (use it!) */
 
 
-       struct uprof {                  /* profile arguments */
-               short   *pr_base;       /* buffer base */
-               unsigned pr_size;       /* buffer size */
-               unsigned pr_off;        /* pc offset */
-               unsigned pr_scale;      /* pc scaling */
-       } u_prof;
-
-/* 1.6 - resource controls */
-       struct  rlimit u_rlimit[RLIM_NLIMITS];
-
-/* namei & co. */
-       struct  nameidata u_nd;
-
-       long    u_spare[8];
-       int     u_stack[1];
+       /*
+        * Remaining fields only for core dump and/or ptrace--
+        * not valid at other times!
+        */
+       struct  kinfo_proc u_kproc;     /* proc + eproc */
+       struct  md_coredump u_md;       /* machine dependent glop */
 };
 
 };
 
-/* u_error codes */
-#ifdef KERNEL
-#include "errno.h"
-#else
-#include <errno.h>
-#endif
+/*
+ * Redefinitions to make the debuggers happy for now...  This subterfuge
+ * brought to you by coredump() and trace_req().  These fields are *only*
+ * valid at those times!
+ */
+#define        U_ar0   u_kproc.kp_proc.p_md.md_regs /* copy of curproc->p_md.md_regs */
+#define        U_tsize u_kproc.kp_eproc.e_vm.vm_tsize
+#define        U_dsize u_kproc.kp_eproc.e_vm.vm_dsize
+#define        U_ssize u_kproc.kp_eproc.e_vm.vm_ssize
+#define        U_sig   u_sigacts.ps_sig
+#define        U_code  u_sigacts.ps_code
 
 
-#ifdef KERNEL
-extern struct user u;
-extern struct user *swaputl;
-extern struct user *forkutl;
-extern struct user *xswaputl;
-extern struct user *xswap2utl;
-extern struct user *pushutl;
-extern struct user *vfutl;
-#endif
+#ifndef KERNEL
+#define        u_ar0   U_ar0
+#define        u_tsize U_tsize
+#define        u_dsize U_dsize
+#define        u_ssize U_ssize
+#define        u_sig   U_sig
+#define        u_code  U_code
+#endif /* KERNEL */