diff options
author | trociny <trociny@FreeBSD.org> | 2012-01-22 20:25:00 +0000 |
---|---|---|
committer | trociny <trociny@FreeBSD.org> | 2012-01-22 20:25:00 +0000 |
commit | fcd1c3665658a259422a5ab83d754099b36bbd46 (patch) | |
tree | 87e37d6d78b8a9e78c36d0fc7dbca8411f650152 /sys/kern/kern_resource.c | |
parent | fc1df62a26053d47f27ceb29ae7488c5b0ed82fb (diff) | |
download | FreeBSD-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.c | 15 |
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; |