diff options
author | alc <alc@FreeBSD.org> | 2010-04-11 16:26:07 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2010-04-11 16:26:07 +0000 |
commit | 89e5d72c2bae413a546416f4726ffd31bebc7964 (patch) | |
tree | 96448d31d8c87e8d23d208c2b250f9d407c81ae2 /sys/kern/init_main.c | |
parent | 02f2ab87a28d7815613d690ceff6e2d7e408cbd6 (diff) | |
download | FreeBSD-src-89e5d72c2bae413a546416f4726ffd31bebc7964.zip FreeBSD-src-89e5d72c2bae413a546416f4726ffd31bebc7964.tar.gz |
Initialize the virtual memory-related resource limits in a single place.
Previously, one of these limits was initialized in two places to a
different value in each place. Moreover, because an unsigned int was used
to represent the amount of pageable physical memory, some of these limits
were incorrectly initialized on 64-bit architectures. (Currently, this
error is masked by login.conf's default settings.)
Make vm_thread_swapin() and vm_thread_swapout() static.
Submitted by: bde (an earlier version)
Reviewed by: kib
Diffstat (limited to 'sys/kern/init_main.c')
-rw-r--r-- | sys/kern/init_main.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index 4499679..e9090fb 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -382,8 +382,9 @@ static void proc0_init(void *dummy __unused) { struct proc *p; - unsigned i; struct thread *td; + vm_paddr_t pageablemem; + int i; GIANT_REQUIRED; p = &proc0; @@ -493,10 +494,16 @@ proc0_init(void *dummy __unused) p->p_limit->pl_rlimit[RLIMIT_NOFILE].rlim_max = maxfiles; p->p_limit->pl_rlimit[RLIMIT_NPROC].rlim_cur = p->p_limit->pl_rlimit[RLIMIT_NPROC].rlim_max = maxproc; - i = ptoa(cnt.v_free_count); - p->p_limit->pl_rlimit[RLIMIT_RSS].rlim_max = i; - p->p_limit->pl_rlimit[RLIMIT_MEMLOCK].rlim_max = i; - p->p_limit->pl_rlimit[RLIMIT_MEMLOCK].rlim_cur = i / 3; + p->p_limit->pl_rlimit[RLIMIT_DATA].rlim_cur = dfldsiz; + p->p_limit->pl_rlimit[RLIMIT_DATA].rlim_max = maxdsiz; + p->p_limit->pl_rlimit[RLIMIT_STACK].rlim_cur = dflssiz; + p->p_limit->pl_rlimit[RLIMIT_STACK].rlim_max = maxssiz; + /* Cast to avoid overflow on i386/PAE. */ + pageablemem = ptoa((vm_paddr_t)cnt.v_free_count); + p->p_limit->pl_rlimit[RLIMIT_RSS].rlim_cur = + p->p_limit->pl_rlimit[RLIMIT_RSS].rlim_max = pageablemem; + p->p_limit->pl_rlimit[RLIMIT_MEMLOCK].rlim_cur = pageablemem / 3; + p->p_limit->pl_rlimit[RLIMIT_MEMLOCK].rlim_max = pageablemem; p->p_cpulimit = RLIM_INFINITY; p->p_stats = pstats_alloc(); |