summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_resource.c
diff options
context:
space:
mode:
authortrociny <trociny@FreeBSD.org>2012-01-22 20:25:00 +0000
committertrociny <trociny@FreeBSD.org>2012-01-22 20:25:00 +0000
commitfcd1c3665658a259422a5ab83d754099b36bbd46 (patch)
tree87e37d6d78b8a9e78c36d0fc7dbca8411f650152 /sys/kern/kern_resource.c
parentfc1df62a26053d47f27ceb29ae7488c5b0ed82fb (diff)
downloadFreeBSD-src-fcd1c3665658a259422a5ab83d754099b36bbd46.zip
FreeBSD-src-fcd1c3665658a259422a5ab83d754099b36bbd46.tar.gz
Change kern.proc.rlimit sysctl to:
- retrive only one, specified limit for a process, not the whole array, as it was previously (the sysctl has been added recently and has not been backported to stable yet, so this change is ok); - allow to set a resource limit for another process. Submitted by: Andrey Zonov <andrey at zonov.org> Discussed with: kib Reviewed by: kib MFC after: 2 weeks
Diffstat (limited to 'sys/kern/kern_resource.c')
-rw-r--r--sys/kern/kern_resource.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c
index bccabc8..590cfcb 100644
--- a/sys/kern/kern_resource.c
+++ b/sys/kern/kern_resource.c
@@ -649,13 +649,17 @@ lim_cb(void *arg)
}
int
-kern_setrlimit(td, which, limp)
- struct thread *td;
- u_int which;
- struct rlimit *limp;
+kern_setrlimit(struct thread *td, u_int which, struct rlimit *limp)
+{
+
+ return (kern_proc_setrlimit(td, td->td_proc, which, limp));
+}
+
+int
+kern_proc_setrlimit(struct thread *td, struct proc *p, u_int which,
+ struct rlimit *limp)
{
struct plimit *newlim, *oldlim;
- struct proc *p;
register struct rlimit *alimp;
struct rlimit oldssiz;
int error;
@@ -672,7 +676,6 @@ kern_setrlimit(td, which, limp)
limp->rlim_max = RLIM_INFINITY;
oldssiz.rlim_cur = 0;
- p = td->td_proc;
newlim = lim_alloc();
PROC_LOCK(p);
oldlim = p->p_limit;
OpenPOWER on IntegriCloud