diff options
| author | Gangadhar Mylapuram <Gangadhar.M@Sun.COM> | 2009-03-23 22:10:33 -0700 |
|---|---|---|
| committer | Gangadhar Mylapuram <Gangadhar.M@Sun.COM> | 2009-03-23 22:10:33 -0700 |
| commit | 438076eb789b90b4483862b49c4b9c62ba84ed6a (patch) | |
| tree | 2d0d62da810cfcf68e699a53630164a01c8fdb7a /usr/src/uts/common/syscall/pset.c | |
| parent | 78323854f26c30110c6477875241b76265792c09 (diff) | |
| download | illumos-joyent-438076eb789b90b4483862b49c4b9c62ba84ed6a.tar.gz | |
6618447 processor_bind(2) returned EPERM when binding bind an active non-global zone to a processor.
6791277 psrset gives wrong message when run on system processes
Diffstat (limited to 'usr/src/uts/common/syscall/pset.c')
| -rw-r--r-- | usr/src/uts/common/syscall/pset.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/usr/src/uts/common/syscall/pset.c b/usr/src/uts/common/syscall/pset.c index b0427e009e..4c1aef27c5 100644 --- a/usr/src/uts/common/syscall/pset.c +++ b/usr/src/uts/common/syscall/pset.c @@ -19,12 +19,10 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <sys/types.h> #include <sys/systm.h> #include <sys/cmn_err.h> @@ -307,7 +305,7 @@ pset_bind_process(proc_t *pp, psetid_t pset, psetid_t *oldpset, void *projbuf, /* skip kernel processes */ if ((pset != PS_QUERY) && pp->p_flag & SSYS) { *oldpset = PS_NONE; - return (0); + return (ENOTSUP); } mutex_enter(&pp->p_lock); @@ -344,9 +342,12 @@ pset_bind_task(task_t *tk, psetid_t pset, psetid_t *oldpset, void *projbuf, do { int rval; - rval = pset_bind_process(pp, pset, oldpset, projbuf, zonebuf); - if (error == 0) - error = rval; + if (!(pp->p_flag & SSYS)) { + rval = pset_bind_process(pp, pset, oldpset, projbuf, + zonebuf); + if (error == 0) + error = rval; + } } while ((pp = pp->p_tasknext) != tk->tk_memb_list); return (error); @@ -364,7 +365,7 @@ pset_bind_project(kproject_t *kpj, psetid_t pset, psetid_t *oldpset, for (pp = practive; pp != NULL; pp = pp->p_next) { if (pp->p_tlist == NULL) continue; - if (pp->p_task->tk_proj == kpj) { + if (pp->p_task->tk_proj == kpj && !(pp->p_flag & SSYS)) { int rval; rval = pset_bind_process(pp, pset, oldpset, projbuf, @@ -387,7 +388,7 @@ pset_bind_zone(zone_t *zptr, psetid_t pset, psetid_t *oldpset, void *projbuf, ASSERT(MUTEX_HELD(&pidlock)); for (pp = practive; pp != NULL; pp = pp->p_next) { - if (pp->p_zone == zptr) { + if (pp->p_zone == zptr && !(pp->p_flag & SSYS)) { int rval; rval = pset_bind_process(pp, pset, oldpset, projbuf, |
