diff options
Diffstat (limited to 'usr/src/uts/common/os/lwp.c')
| -rw-r--r-- | usr/src/uts/common/os/lwp.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/usr/src/uts/common/os/lwp.c b/usr/src/uts/common/os/lwp.c index 6d518e1aae..a94cb6515a 100644 --- a/usr/src/uts/common/os/lwp.c +++ b/usr/src/uts/common/os/lwp.c @@ -146,6 +146,7 @@ lwp_create(void (*proc)(), caddr_t arg, size_t len, proc_t *p, if (rctlfail) { mutex_exit(&p->p_zone->zone_nlwps_lock); mutex_exit(&p->p_lock); + atomic_add_32(&p->p_zone->zone_ffcap, 1); return (NULL); } p->p_task->tk_nlwps++; @@ -204,6 +205,7 @@ lwp_create(void (*proc)(), caddr_t arg, size_t len, proc_t *p, p->p_zone->zone_nlwps--; mutex_exit(&p->p_zone->zone_nlwps_lock); mutex_exit(&p->p_lock); + atomic_add_32(&p->p_zone->zone_ffnomem, 1); return (NULL); } } else { @@ -217,6 +219,7 @@ lwp_create(void (*proc)(), caddr_t arg, size_t len, proc_t *p, p->p_zone->zone_nlwps--; mutex_exit(&p->p_zone->zone_nlwps_lock); mutex_exit(&p->p_lock); + atomic_add_32(&p->p_zone->zone_ffnomem, 1); return (NULL); } } @@ -582,10 +585,12 @@ grow: err = CL_FORK(curthread, t, bufp); t->t_cid = cid; } - if (err) + if (err) { + atomic_add_32(&p->p_zone->zone_ffmisc, 1); goto error; - else + } else { bufp = NULL; + } } /* @@ -612,6 +617,7 @@ grow: * All lwpids are allocated; fail the request. */ err = 1; + atomic_add_32(&p->p_zone->zone_ffnoproc, 1); goto error; } /* @@ -631,6 +637,7 @@ grow: if (PROC_IS_BRANDED(p)) { if (BROP(p)->b_initlwp(lwp)) { err = 1; + atomic_add_32(&p->p_zone->zone_ffmisc, 1); goto error; } branded = 1; |
