[BACK]Return to proc.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / sys

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/sys/proc.h between version 1.253.2.3 and 1.253.2.4

version 1.253.2.3, 2007/11/08 11:00:21 version 1.253.2.4, 2008/01/09 01:58:15
Line 83 
Line 83 
   
 #include <machine/proc.h>               /* Machine-dependent proc substruct */  #include <machine/proc.h>               /* Machine-dependent proc substruct */
 #include <sys/aio.h>  #include <sys/aio.h>
 #include <sys/lock.h>  
 #include <sys/rwlock.h>  #include <sys/rwlock.h>
 #include <sys/mqueue.h>  #include <sys/mqueue.h>
 #include <sys/mutex.h>  #include <sys/mutex.h>
Line 203  struct emul {
Line 202  struct emul {
  * Field markings and the corresponding locks (not yet fully implemented,   * Field markings and the corresponding locks (not yet fully implemented,
  * more a statement of intent):   * more a statement of intent):
  *   *
    * a:   p_auxlock
  * k:   ktrace_mutex   * k:   ktrace_mutex
  * m:   proclist_mutex   * m:   proclist_mutex
  * l:   proclist_lock   * l:   proclist_lock
  * s:   p_smutex   * s:   p_smutex
  * t:   p_stmutex   * t:   p_stmutex
  * p:   p_mutex   * p:   p_mutex
  * r:   p_raslock  
  * (:   unlocked, stable   * (:   unlocked, stable
  */   */
 struct proc {  struct proc {
         LIST_ENTRY(proc) p_list;        /* l, m: List of all processes */          LIST_ENTRY(proc) p_list;        /* l, m: List of all processes */
   
         kmutex_t        p_raslock;      /* :: RAS modification lock */          kmutex_t        p_auxlock;      /* :: secondary, longer term lock */
         kmutex_t        p_mutex;        /* :: general mutex */          kmutex_t        p_mutex;        /* :: general mutex */
         kmutex_t        p_smutex;       /* :: mutex on scheduling state */          kmutex_t        p_smutex;       /* :: mutex on scheduling state */
         kmutex_t        p_stmutex;      /* :: mutex on profiling state */          kmutex_t        p_stmutex;      /* :: mutex on profiling state */
Line 254  struct proc {
Line 253  struct proc {
         LIST_ENTRY(proc) p_sibling;     /* l: List of sibling processes. */          LIST_ENTRY(proc) p_sibling;     /* l: List of sibling processes. */
         LIST_HEAD(, proc) p_children;   /* l: List of children. */          LIST_HEAD(, proc) p_children;   /* l: List of children. */
         LIST_HEAD(, lwp) p_lwps;        /* s: List of LWPs. */          LIST_HEAD(, lwp) p_lwps;        /* s: List of LWPs. */
         struct ras      *p_raslist;     /* r: List of RAS entries */          struct ras      *p_raslist;     /* a: List of RAS entries */
   
 /* The following fields are all zeroed upon creation in fork. */  /* The following fields are all zeroed upon creation in fork. */
 #define p_startzero     p_nlwps  #define p_startzero     p_nlwps
Line 278  struct proc {
Line 277  struct proc {
   
         struct proc     *p_opptr;       /* l: save parent during ptrace. */          struct proc     *p_opptr;       /* l: save parent during ptrace. */
         struct ptimers  *p_timers;      /*    Timers: real, virtual, profiling */          struct ptimers  *p_timers;      /*    Timers: real, virtual, profiling */
         struct timeval  p_rtime;        /* s: real time */          struct bintime  p_rtime;        /* s: real time */
         u_quad_t        p_uticks;       /* t: Statclock hits in user mode */          u_quad_t        p_uticks;       /* t: Statclock hits in user mode */
         u_quad_t        p_sticks;       /* t: Statclock hits in system mode */          u_quad_t        p_sticks;       /* t: Statclock hits in system mode */
         u_quad_t        p_iticks;       /* t: Statclock hits processing intr */          u_quad_t        p_iticks;       /* t: Statclock hits processing intr */
   
         int             p_traceflag;    /* k: Kernel trace points */          int             p_traceflag;    /* k: Kernel trace points */
         void            *p_tracep;      /* k: Trace private data */          void            *p_tracep;      /* k: Trace private data */
         void            *p_systrace;    /*    Back pointer to systrace */          struct vnode    *p_textvp;      /* (: Vnode of executable */
   
         struct vnode    *p_textvp;      /*    Vnode of executable */  
   
         void         (*p_userret)(void);/* p: return-to-user hook */          void         (*p_userret)(void);/* p: return-to-user hook */
         const struct emul *p_emul;      /*    Emulation information */          const struct emul *p_emul;      /*    Emulation information */
Line 298  struct proc {
Line 295  struct proc {
   
         LIST_HEAD(, lwp) p_sigwaiters;  /* s: LWPs waiting for signals */          LIST_HEAD(, lwp) p_sigwaiters;  /* s: LWPs waiting for signals */
         sigpend_t       p_sigpend;      /* s: pending signals */          sigpend_t       p_sigpend;      /* s: pending signals */
           struct lcproc   *p_lwpctl;      /* s: _lwp_ctl() information */
   
 /*  /*
  * End area that is zeroed on creation   * End area that is zeroed on creation
Line 330  struct proc {
Line 328  struct proc {
         u_short         p_xstat;        /* s: Exit status for wait; also stop signal */          u_short         p_xstat;        /* s: Exit status for wait; also stop signal */
         u_short         p_acflag;       /* p: Acc. flags; see struct lwp also */          u_short         p_acflag;       /* p: Acc. flags; see struct lwp also */
         struct mdproc   p_md;           /*    Any machine-dependent fields */          struct mdproc   p_md;           /*    Any machine-dependent fields */
           vaddr_t         p_stackbase;    /*    ASLR randomized stack base */
 };  };
   
 #define p_rlimit        p_limit->pl_rlimit  #define p_rlimit        p_limit->pl_rlimit
Line 360  struct proc {
Line 359  struct proc {
 #define PK_NOCLDWAIT    0x00020000 /* No zombies if child dies */  #define PK_NOCLDWAIT    0x00020000 /* No zombies if child dies */
 #define PK_32           0x00040000 /* 32-bit process (used on 64-bit kernels) */  #define PK_32           0x00040000 /* 32-bit process (used on 64-bit kernels) */
 #define PK_CLDSIGIGN    0x00080000 /* Process is ignoring SIGCHLD */  #define PK_CLDSIGIGN    0x00080000 /* Process is ignoring SIGCHLD */
 #define PK_SYSTRACE     0x00200000 /* Process system call tracing active */  
 #define PK_PAXMPROTECT  0x08000000 /* Explicitly enable PaX MPROTECT */  
 #define PK_PAXNOMPROTECT        0x10000000 /* Explicitly disable PaX MPROTECT */  
 #define PK_MARKER       0x80000000 /* Is a dummy marker process */  #define PK_MARKER       0x80000000 /* Is a dummy marker process */
   
 /*  /*
Line 475  CURCPU_IDLE_P(void)
Line 471  CURCPU_IDLE_P(void)
 #define curproc         (curlwp->l_proc)  #define curproc         (curlwp->l_proc)
   
 extern struct proc      proc0;          /* Process slot for swapper */  extern struct proc      proc0;          /* Process slot for swapper */
 extern int              nprocs, maxproc; /* Current and max number of procs */  extern u_int            nprocs;         /* Current number of procs */
   extern int              maxproc;        /* Max number of procs */
 #define vmspace_kernel()        (proc0.p_vmspace)  #define vmspace_kernel()        (proc0.p_vmspace)
   
 /* Process list locks; see kern_proc.c for locking protocol details */  /* Process list locks; see kern_proc.c for locking protocol details */
Line 492  extern struct proc *initproc; /* Process
Line 489  extern struct proc *initproc; /* Process
   
 extern const struct proclist_desc proclists[];  extern const struct proclist_desc proclists[];
   
 extern struct pool      proc_pool;      /* Memory pool for procs */  
 extern struct pool      pcred_pool;     /* Memory pool for pcreds */  
 extern struct pool      plimit_pool;    /* Memory pool for plimits */  
 extern struct pool      pstats_pool;    /* memory pool for pstats */  
 extern struct pool      rusage_pool;    /* Memory pool for rusages */  
 extern struct pool      ptimer_pool;    /* Memory pool for ptimers */  extern struct pool      ptimer_pool;    /* Memory pool for ptimers */
   
 struct proc *p_find(pid_t, uint);       /* Find process by id */  struct proc *p_find(pid_t, uint);       /* Find process by id */
Line 526  int mtsleep(wchan_t, pri_t, const char *
Line 518  int mtsleep(wchan_t, pri_t, const char *
 void    wakeup(wchan_t);  void    wakeup(wchan_t);
 void    wakeup_one(wchan_t);  void    wakeup_one(wchan_t);
 int     kpause(const char *, bool, int, kmutex_t *);  int     kpause(const char *, bool, int, kmutex_t *);
 void    exit1(struct lwp *, int) __attribute__((__noreturn__));  void    exit1(struct lwp *, int) __dead;
 int     do_sys_wait(struct lwp *, int *, int *, int, struct rusage *, int *);  int     do_sys_wait(struct lwp *, int *, int *, int, struct rusage *, int *);
 struct proc *proc_alloc(void);  struct proc *proc_alloc(void);
 void    proc0_init(void);  void    proc0_init(void);
 void    proc_free_pid(struct proc *);  void    proc_free_pid(struct proc *);
   void    proc_free_mem(struct proc *);
 void    exit_lwps(struct lwp *l);  void    exit_lwps(struct lwp *l);
 int     fork1(struct lwp *, int, int, void *, size_t,  int     fork1(struct lwp *, int, int, void *, size_t,
             void (*)(void *), void *, register_t *, struct proc **);              void (*)(void *), void *, register_t *, struct proc **);

Legend:
Removed from v.1.253.2.3  
changed lines
  Added in v.1.253.2.4

CVSweb <webmaster@jp.NetBSD.org>