1/*-
2 * Copyright (c) 1982, 1986, 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 * (c) UNIX System Laboratories, Inc.
5 * All or some portions of this file are derived from material licensed
6 * to the University of California by American Telephone and Telegraph
7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
8 * the permission of UNIX System Laboratories, Inc.
--- 22 unchanged lines hidden (view full) ---
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * @(#)kern_resource.c 8.5 (Berkeley) 1/21/94
39 * $FreeBSD: head/sys/kern/kern_resource.c 91140 2002-02-23 11:12:57Z tanimura $
40 */
41
42#include "opt_compat.h"
43
44#include <sys/param.h>
45#include <sys/systm.h>
46#include <sys/sysproto.h>
47#include <sys/file.h>
--- 58 unchanged lines hidden (view full) ---
106 low = p->p_ksegrp.kg_nice /* XXXKSE */ ;
107 PROC_UNLOCK(p);
108 }
109 break;
110
111 case PRIO_PGRP: {
112 register struct pgrp *pg;
113
114 PGRPSESS_SLOCK();
115 if (uap->who == 0) {
116 pg = curp->p_pgrp;
117 PGRP_LOCK(pg);
118 } else {
119 pg = pgfind(uap->who);
120 if (pg == NULL) {
121 PGRPSESS_SUNLOCK();
122 break;
123 }
124 }
125 PGRPSESS_SUNLOCK();
126 LIST_FOREACH(p, &pg->pg_members, p_pglist) {
127 PROC_LOCK(p);
128 if (!p_cansee(curp, p) && p->p_ksegrp.kg_nice /* XXXKSE */ < low)
129 low = p->p_ksegrp.kg_nice /* XXXKSE */ ;
130 PROC_UNLOCK(p);
131 }
132 PGRP_UNLOCK(pg);
133 break;
134 }
135
136 case PRIO_USER:
137 if (uap->who == 0)
138 uap->who = curp->p_ucred->cr_uid;
139 sx_slock(&allproc_lock);
140 LIST_FOREACH(p, &allproc, p_list)
--- 50 unchanged lines hidden (view full) ---
191 PROC_UNLOCK(p);
192 }
193 found++;
194 break;
195
196 case PRIO_PGRP: {
197 register struct pgrp *pg;
198
199 PGRPSESS_SLOCK();
200 if (uap->who == 0) {
201 pg = curp->p_pgrp;
202 PGRP_LOCK(pg);
203 } else {
204 pg = pgfind(uap->who);
205 if (pg == NULL) {
206 PGRPSESS_SUNLOCK();
207 break;
208 }
209 }
210 PGRPSESS_SUNLOCK();
211 LIST_FOREACH(p, &pg->pg_members, p_pglist) {
212 PROC_LOCK(p);
213 if (!p_cansee(curp, p)) {
214 error = donice(curp, p, uap->prio);
215 found++;
216 }
217 PROC_UNLOCK(p);
218 }
219 PGRP_UNLOCK(pg);
220 break;
221 }
222
223 case PRIO_USER:
224 if (uap->who == 0)
225 uap->who = curp->p_ucred->cr_uid;
226 sx_slock(&allproc_lock);
227 FOREACH_PROC_IN_SYSTEM(p) {
--- 790 unchanged lines hidden ---
2 * Copyright (c) 1982, 1986, 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 * (c) UNIX System Laboratories, Inc.
5 * All or some portions of this file are derived from material licensed
6 * to the University of California by American Telephone and Telegraph
7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
8 * the permission of UNIX System Laboratories, Inc.
--- 22 unchanged lines hidden (view full) ---
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * @(#)kern_resource.c 8.5 (Berkeley) 1/21/94
39 * $FreeBSD: head/sys/kern/kern_resource.c 91140 2002-02-23 11:12:57Z tanimura $
40 */
41
42#include "opt_compat.h"
43
44#include <sys/param.h>
45#include <sys/systm.h>
46#include <sys/sysproto.h>
47#include <sys/file.h>
--- 58 unchanged lines hidden (view full) ---
106 low = p->p_ksegrp.kg_nice /* XXXKSE */ ;
107 PROC_UNLOCK(p);
108 }
109 break;
110
111 case PRIO_PGRP: {
112 register struct pgrp *pg;
113
114 PGRPSESS_SLOCK();
115 if (uap->who == 0) {
116 pg = curp->p_pgrp;
117 PGRP_LOCK(pg);
118 } else {
119 pg = pgfind(uap->who);
120 if (pg == NULL) {
121 PGRPSESS_SUNLOCK();
122 break;
123 }
124 }
125 PGRPSESS_SUNLOCK();
126 LIST_FOREACH(p, &pg->pg_members, p_pglist) {
127 PROC_LOCK(p);
128 if (!p_cansee(curp, p) && p->p_ksegrp.kg_nice /* XXXKSE */ < low)
129 low = p->p_ksegrp.kg_nice /* XXXKSE */ ;
130 PROC_UNLOCK(p);
131 }
132 PGRP_UNLOCK(pg);
133 break;
134 }
135
136 case PRIO_USER:
137 if (uap->who == 0)
138 uap->who = curp->p_ucred->cr_uid;
139 sx_slock(&allproc_lock);
140 LIST_FOREACH(p, &allproc, p_list)
--- 50 unchanged lines hidden (view full) ---
191 PROC_UNLOCK(p);
192 }
193 found++;
194 break;
195
196 case PRIO_PGRP: {
197 register struct pgrp *pg;
198
199 PGRPSESS_SLOCK();
200 if (uap->who == 0) {
201 pg = curp->p_pgrp;
202 PGRP_LOCK(pg);
203 } else {
204 pg = pgfind(uap->who);
205 if (pg == NULL) {
206 PGRPSESS_SUNLOCK();
207 break;
208 }
209 }
210 PGRPSESS_SUNLOCK();
211 LIST_FOREACH(p, &pg->pg_members, p_pglist) {
212 PROC_LOCK(p);
213 if (!p_cansee(curp, p)) {
214 error = donice(curp, p, uap->prio);
215 found++;
216 }
217 PROC_UNLOCK(p);
218 }
219 PGRP_UNLOCK(pg);
220 break;
221 }
222
223 case PRIO_USER:
224 if (uap->who == 0)
225 uap->who = curp->p_ucred->cr_uid;
226 sx_slock(&allproc_lock);
227 FOREACH_PROC_IN_SYSTEM(p) {
--- 790 unchanged lines hidden ---