svn commit: r356659 - in head/sys: compat/linux kern sys
Edward Tomasz Napierala
trasz at FreeBSD.org
Sun Jan 12 14:25:45 UTC 2020
Author: trasz
Date: Sun Jan 12 14:25:44 2020
New Revision: 356659
URL: https://svnweb.freebsd.org/changeset/base/356659
Log:
dd kern_getpriority(), make Linuxulator use it.
Reviewed by: kib, emaste
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D22842
Modified:
head/sys/compat/linux/linux_misc.c
head/sys/kern/kern_resource.c
head/sys/sys/syscallsubr.h
Modified: head/sys/compat/linux/linux_misc.c
==============================================================================
--- head/sys/compat/linux/linux_misc.c Sun Jan 12 13:38:51 2020 (r356658)
+++ head/sys/compat/linux/linux_misc.c Sun Jan 12 14:25:44 2020 (r356659)
@@ -1613,12 +1613,9 @@ linux_nosys(struct thread *td, struct nosys_args *igno
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);
}
Modified: head/sys/kern/kern_resource.c
==============================================================================
--- head/sys/kern/kern_resource.c Sun Jan 12 13:38:51 2020 (r356658)
+++ head/sys/kern/kern_resource.c Sun Jan 12 14:25:44 2020 (r356659)
@@ -92,19 +92,26 @@ struct getpriority_args {
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 @@ sys_getpriority(struct thread *td, struct getpriority_
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 @@ sys_getpriority(struct thread *td, struct getpriority_
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;
}
Modified: head/sys/sys/syscallsubr.h
==============================================================================
--- head/sys/sys/syscallsubr.h Sun Jan 12 13:38:51 2020 (r356658)
+++ head/sys/sys/syscallsubr.h Sun Jan 12 14:25:44 2020 (r356659)
@@ -141,6 +141,7 @@ int kern_getitimer(struct thread *, u_int, struct itim
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,
More information about the svn-src-head
mailing list