aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--init/main.c4
-rw-r--r--kernel/fork.c34
2 files changed, 23 insertions, 15 deletions
diff --git a/init/main.c b/init/main.c
index a7e969d12f51..2115055faeac 100644
--- a/init/main.c
+++ b/init/main.c
@@ -91,7 +91,7 @@
91static int kernel_init(void *); 91static int kernel_init(void *);
92 92
93extern void init_IRQ(void); 93extern void init_IRQ(void);
94extern void fork_init(unsigned long); 94extern void fork_init(void);
95extern void radix_tree_init(void); 95extern void radix_tree_init(void);
96#ifndef CONFIG_DEBUG_RODATA 96#ifndef CONFIG_DEBUG_RODATA
97static inline void mark_rodata_ro(void) { } 97static inline void mark_rodata_ro(void) { }
@@ -645,7 +645,7 @@ asmlinkage __visible void __init start_kernel(void)
645#endif 645#endif
646 thread_info_cache_init(); 646 thread_info_cache_init();
647 cred_init(); 647 cred_init();
648 fork_init(totalram_pages); 648 fork_init();
649 proc_caches_init(); 649 proc_caches_init();
650 buffer_init(); 650 buffer_init();
651 key_init(); 651 key_init();
diff --git a/kernel/fork.c b/kernel/fork.c
index c507e29bcb01..01038e6f51a8 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -253,7 +253,26 @@ EXPORT_SYMBOL_GPL(__put_task_struct);
253 253
254void __init __weak arch_task_cache_init(void) { } 254void __init __weak arch_task_cache_init(void) { }
255 255
256void __init fork_init(unsigned long mempages) 256/*
257 * set_max_threads
258 */
259static void set_max_threads(void)
260{
261 /*
262 * The default maximum number of threads is set to a safe
263 * value: the thread structures can take up at most one
264 * eighth of the memory.
265 */
266 max_threads = totalram_pages / (8 * THREAD_SIZE / PAGE_SIZE);
267
268 /*
269 * we need to allow at least 20 threads to boot a system
270 */
271 if (max_threads < 20)
272 max_threads = 20;
273}
274
275void __init fork_init(void)
257{ 276{
258#ifndef CONFIG_ARCH_TASK_STRUCT_ALLOCATOR 277#ifndef CONFIG_ARCH_TASK_STRUCT_ALLOCATOR
259#ifndef ARCH_MIN_TASKALIGN 278#ifndef ARCH_MIN_TASKALIGN
@@ -268,18 +287,7 @@ void __init fork_init(unsigned long mempages)
268 /* do the arch specific task caches init */ 287 /* do the arch specific task caches init */
269 arch_task_cache_init(); 288 arch_task_cache_init();
270 289
271 /* 290 set_max_threads();
272 * The default maximum number of threads is set to a safe
273 * value: the thread structures can take up at most one
274 * eighth of the memory.
275 */
276 max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);
277
278 /*
279 * we need to allow at least 20 threads to boot a system
280 */
281 if (max_threads < 20)
282 max_threads = 20;
283 291
284 init_task.signal->rlim[RLIMIT_NPROC].rlim_cur = max_threads/2; 292 init_task.signal->rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
285 init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2; 293 init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2;