diff options
author | Alan Cox <alc@FreeBSD.org> | 2010-04-11 16:26:07 +0000 |
---|---|---|
committer | Alan Cox <alc@FreeBSD.org> | 2010-04-11 16:26:07 +0000 |
commit | ac45ee97c924b1c922bc8c56de6a92a436765e00 (patch) | |
tree | 96448d31d8c87e8d23d208c2b250f9d407c81ae2 /sys/kern | |
parent | 36e51f655d4a2852642e9691ef50ede6465a6c2e (diff) | |
download | src-ac45ee97c924b1c922bc8c56de6a92a436765e00.tar.gz src-ac45ee97c924b1c922bc8c56de6a92a436765e00.zip |
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
Notes
Notes:
svn path=/head/; revision=206483
Diffstat (limited to 'sys/kern')
-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 449967943ebc..e9090fb077ba 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(); |