Print this page
OS-4818 contract template disappears on exec
OS-4937 lxbrand ptracer count updates can race
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
OS-4188 NULL dereference in lwp_hash_in
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
OS-4129 lxbrand should not abuse p_brand_data for storing exit signal
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
OS-3149 lx brand always sends SIGCHLD to parent processes, regardless of how clone was invoked
OS-2887 lxbrand add WALL, WCLONE, WNOTHREAD support to waitid
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/proc.h
          +++ new/usr/src/uts/common/sys/proc.h
↓ open down ↓ 13 lines elided ↑ open up ↑
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved.
       24 + * Copyright (c) 2014 Joyent, Inc.  All rights reserved.
  24   25   */
  25   26  
  26   27  /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
  27   28  /*        All Rights Reserved   */
  28   29  
  29   30  #ifndef _SYS_PROC_H
  30   31  #define _SYS_PROC_H
  31   32  
  32   33  #include <sys/time.h>
  33   34  #include <sys/thread.h>
↓ open down ↓ 307 lines elided ↑ open up ↑
 341  342                                          /* (protected by P_PR_LOCK) */
 342  343          void            *p_dtrace_helpers; /* DTrace helpers, if any */
 343  344          struct pool     *p_pool;        /* pointer to containing pool */
 344  345          kcondvar_t      p_poolcv;       /* synchronization with pools */
 345  346          uint_t          p_poolcnt;      /* # threads inside pool barrier */
 346  347          uint_t          p_poolflag;     /* pool-related flags (see below) */
 347  348          uintptr_t       p_portcnt;      /* event ports counter */
 348  349          struct zone     *p_zone;        /* zone in which process lives */
 349  350          struct vnode    *p_execdir;     /* directory that p_exec came from */
 350  351          struct brand    *p_brand;       /* process's brand  */
 351      -        void            *p_brand_data;  /* per-process brand state */
 352  352  
      353 +        /* per-process brand state */
      354 +        void            *p_brand_data;
      355 +
 353  356          /* additional lock to protect p_sessp (but not its contents) */
 354  357          kmutex_t p_splock;
 355  358          rctl_qty_t      p_locked_mem;   /* locked memory charged to proc */
 356  359                                          /* protected by p_lock */
 357  360          rctl_qty_t      p_crypto_mem;   /* /dev/crypto memory charged to proc */
 358  361                                          /* protected by p_lock */
 359  362          clock_t p_ttime;                /* buffered task time */
 360  363  
 361  364          /*
 362  365           * The user structure
 363  366           */
 364  367          struct user p_user;             /* (see sys/user.h) */
 365  368  } proc_t;
 366      -
 367  369  #define PROC_T                          /* headers relying on proc_t are OK */
 368  370  
 369  371  #ifdef _KERNEL
 370  372  
 371  373  /* active process chain */
 372  374  
 373  375  extern proc_t *practive;
 374  376  
 375  377  /* Well known processes */
 376  378  
↓ open down ↓ 245 lines elided ↑ open up ↑
 622  624  extern void psignal(proc_t *, int);
 623  625  extern void tsignal(kthread_t *, int);
 624  626  extern void sigtoproc(proc_t *, kthread_t *, int);
 625  627  extern void trapsig(k_siginfo_t *, int);
 626  628  extern void realsigprof(int, int, int);
 627  629  extern int eat_signal(kthread_t *, int);
 628  630  extern int signal_is_blocked(kthread_t *, int);
 629  631  extern int sigcheck(proc_t *, kthread_t *);
 630  632  extern void sigdefault(proc_t *);
 631  633  
      634 +extern struct pid *pid_find(pid_t pid);
 632  635  extern void pid_setmin(void);
 633  636  extern pid_t pid_allocate(proc_t *, pid_t, int);
 634  637  extern int pid_rele(struct pid *);
 635  638  extern void pid_exit(proc_t *, struct task *);
 636  639  extern void proc_entry_free(struct pid *);
 637  640  extern proc_t *prfind(pid_t);
 638  641  extern proc_t *prfind_zone(pid_t, zoneid_t);
 639  642  extern proc_t *pgfind(pid_t);
 640  643  extern proc_t *pgfind_zone(pid_t, zoneid_t);
 641  644  extern proc_t *sprlock(pid_t);
 642  645  extern proc_t *sprlock_zone(pid_t, zoneid_t);
 643  646  extern int sprtrylock_proc(proc_t *);
 644  647  extern void sprwaitlock_proc(proc_t *);
 645  648  extern void sprlock_proc(proc_t *);
 646  649  extern void sprunlock(proc_t *);
      650 +extern void sprunprlock(proc_t *);
 647  651  extern void pid_init(void);
 648  652  extern proc_t *pid_entry(int);
 649  653  extern int pid_slot(proc_t *);
 650  654  extern void signal(pid_t, int);
 651  655  extern void prsignal(struct pid *, int);
 652  656  extern int uread(proc_t *, void *, size_t, uintptr_t);
 653  657  extern int uwrite(proc_t *, void *, size_t, uintptr_t);
 654  658  
 655  659  extern void pgsignal(struct pid *, int);
 656  660  extern void pgjoin(proc_t *, struct pid *);
↓ open down ↓ 95 lines elided ↑ open up ↑
 752  756  extern  int     lwp_suspend(kthread_t *);
 753  757  extern  void    lwp_continue(kthread_t *);
 754  758  extern  void    holdlwp(void);
 755  759  extern  void    stoplwp(void);
 756  760  extern  int     holdlwps(int);
 757  761  extern  int     holdwatch(void);
 758  762  extern  void    pokelwps(proc_t *);
 759  763  extern  void    continuelwps(proc_t *);
 760  764  extern  int     exitlwps(int);
 761  765  extern  void    lwp_ctmpl_copy(klwp_t *, klwp_t *);
 762      -extern  void    lwp_ctmpl_clear(klwp_t *);
      766 +extern  void    lwp_ctmpl_clear(klwp_t *, boolean_t);
 763  767  extern  klwp_t  *forklwp(klwp_t *, proc_t *, id_t);
 764  768  extern  void    lwp_load(klwp_t *, gregset_t, uintptr_t);
 765  769  extern  void    lwp_setrval(klwp_t *, int, int);
 766  770  extern  void    lwp_forkregs(klwp_t *, klwp_t *);
 767  771  extern  void    lwp_freeregs(klwp_t *, int);
 768  772  extern  caddr_t lwp_stk_init(klwp_t *, caddr_t);
 769  773  extern  void    lwp_stk_cache_init(void);
 770  774  extern  void    lwp_stk_fini(klwp_t *);
 771  775  extern  void    lwp_installctx(klwp_t *);
 772  776  extern  void    lwp_rtt(void);
↓ open down ↓ 50 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX