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>

@@ -19,10 +19,11 @@
  * CDDL HEADER END
  */
 
 /*
  * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014 Joyent, Inc.  All rights reserved.
  */
 
 /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
 /*        All Rights Reserved   */
 

@@ -346,12 +347,14 @@
         uint_t          p_poolflag;     /* pool-related flags (see below) */
         uintptr_t       p_portcnt;      /* event ports counter */
         struct zone     *p_zone;        /* zone in which process lives */
         struct vnode    *p_execdir;     /* directory that p_exec came from */
         struct brand    *p_brand;       /* process's brand  */
-        void            *p_brand_data;  /* per-process brand state */
 
+        /* per-process brand state */
+        void            *p_brand_data;
+
         /* additional lock to protect p_sessp (but not its contents) */
         kmutex_t p_splock;
         rctl_qty_t      p_locked_mem;   /* locked memory charged to proc */
                                         /* protected by p_lock */
         rctl_qty_t      p_crypto_mem;   /* /dev/crypto memory charged to proc */

@@ -361,11 +364,10 @@
         /*
          * The user structure
          */
         struct user p_user;             /* (see sys/user.h) */
 } proc_t;
-
 #define PROC_T                          /* headers relying on proc_t are OK */
 
 #ifdef _KERNEL
 
 /* active process chain */

@@ -627,10 +629,11 @@
 extern int eat_signal(kthread_t *, int);
 extern int signal_is_blocked(kthread_t *, int);
 extern int sigcheck(proc_t *, kthread_t *);
 extern void sigdefault(proc_t *);
 
+extern struct pid *pid_find(pid_t pid);
 extern void pid_setmin(void);
 extern pid_t pid_allocate(proc_t *, pid_t, int);
 extern int pid_rele(struct pid *);
 extern void pid_exit(proc_t *, struct task *);
 extern void proc_entry_free(struct pid *);

@@ -642,10 +645,11 @@
 extern proc_t *sprlock_zone(pid_t, zoneid_t);
 extern int sprtrylock_proc(proc_t *);
 extern void sprwaitlock_proc(proc_t *);
 extern void sprlock_proc(proc_t *);
 extern void sprunlock(proc_t *);
+extern void sprunprlock(proc_t *);
 extern void pid_init(void);
 extern proc_t *pid_entry(int);
 extern int pid_slot(proc_t *);
 extern void signal(pid_t, int);
 extern void prsignal(struct pid *, int);

@@ -757,11 +761,11 @@
 extern  int     holdwatch(void);
 extern  void    pokelwps(proc_t *);
 extern  void    continuelwps(proc_t *);
 extern  int     exitlwps(int);
 extern  void    lwp_ctmpl_copy(klwp_t *, klwp_t *);
-extern  void    lwp_ctmpl_clear(klwp_t *);
+extern  void    lwp_ctmpl_clear(klwp_t *, boolean_t);
 extern  klwp_t  *forklwp(klwp_t *, proc_t *, id_t);
 extern  void    lwp_load(klwp_t *, gregset_t, uintptr_t);
 extern  void    lwp_setrval(klwp_t *, int, int);
 extern  void    lwp_forkregs(klwp_t *, klwp_t *);
 extern  void    lwp_freeregs(klwp_t *, int);