Page MenuHomeFreeBSD

D22842.diff
No OneTemporary

D22842.diff

Index: head/sys/compat/linux/linux_misc.c
===================================================================
--- head/sys/compat/linux/linux_misc.c
+++ head/sys/compat/linux/linux_misc.c
@@ -1613,12 +1613,9 @@
int
linux_getpriority(struct thread *td, struct linux_getpriority_args *args)
{
- struct getpriority_args bsd_args;
int error;
- bsd_args.which = args->which;
- bsd_args.who = args->who;
- error = sys_getpriority(td, &bsd_args);
+ error = kern_getpriority(td, args->which, args->who);
td->td_retval[0] = 20 - td->td_retval[0];
return (error);
}
Index: head/sys/kern/kern_resource.c
===================================================================
--- head/sys/kern/kern_resource.c
+++ head/sys/kern/kern_resource.c
@@ -92,19 +92,26 @@
int
sys_getpriority(struct thread *td, struct getpriority_args *uap)
{
+
+ return (kern_getpriority(td, uap->which, uap->who));
+}
+
+int
+kern_getpriority(struct thread *td, int which, int who)
+{
struct proc *p;
struct pgrp *pg;
int error, low;
error = 0;
low = PRIO_MAX + 1;
- switch (uap->which) {
+ switch (which) {
case PRIO_PROCESS:
- if (uap->who == 0)
+ if (who == 0)
low = td->td_proc->p_nice;
else {
- p = pfind(uap->who);
+ p = pfind(who);
if (p == NULL)
break;
if (p_cansee(td, p) == 0)
@@ -115,11 +122,11 @@
case PRIO_PGRP:
sx_slock(&proctree_lock);
- if (uap->who == 0) {
+ if (who == 0) {
pg = td->td_proc->p_pgrp;
PGRP_LOCK(pg);
} else {
- pg = pgfind(uap->who);
+ pg = pgfind(who);
if (pg == NULL) {
sx_sunlock(&proctree_lock);
break;
@@ -139,14 +146,14 @@
break;
case PRIO_USER:
- if (uap->who == 0)
- uap->who = td->td_ucred->cr_uid;
+ if (who == 0)
+ who = td->td_ucred->cr_uid;
sx_slock(&allproc_lock);
FOREACH_PROC_IN_SYSTEM(p) {
PROC_LOCK(p);
if (p->p_state == PRS_NORMAL &&
p_cansee(td, p) == 0 &&
- p->p_ucred->cr_uid == uap->who) {
+ p->p_ucred->cr_uid == who) {
if (p->p_nice < low)
low = p->p_nice;
}
Index: head/sys/sys/syscallsubr.h
===================================================================
--- head/sys/sys/syscallsubr.h
+++ head/sys/sys/syscallsubr.h
@@ -141,6 +141,7 @@
int kern_getppid(struct thread *);
int kern_getpeername(struct thread *td, int fd, struct sockaddr **sa,
socklen_t *alen);
+int kern_getpriority(struct thread *td, int which, int who);
int kern_getrusage(struct thread *td, int who, struct rusage *rup);
int kern_getsid(struct thread *td, pid_t pid);
int kern_getsockname(struct thread *td, int fd, struct sockaddr **sa,

File Metadata

Mime Type
text/plain
Expires
Mon, Jun 15, 12:19 AM (6 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33961619
Default Alt Text
D22842.diff (2 KB)

Event Timeline