mm: consolidate init_mm definition
* create mm/init-mm.c, move init_mm there * remove INIT_MM, initialize init_mm with C99 initializer * unexport init_mm on all arches: init_mm is already unexported on x86. One strange place is some OMAP driver (drivers/video/omap/) which won't build modular, but it's already wants get_vm_area() export. Somebody should look there. [akpm@linux-foundation.org: add missing #includes] Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Cc: Mike Frysinger <vapier.adi@gmail.com> Cc: Americo Wang <xiyou.wangcong@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									3b0fde0fac
								
							
						
					
					
						commit
						bb1f17b037
					
				| @ -10,10 +10,7 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| struct task_struct init_task = INIT_TASK(init_task); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| EXPORT_SYMBOL(init_task); | ||||
| 
 | ||||
| union thread_union init_thread_union | ||||
|  | ||||
| @ -14,10 +14,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  * | ||||
|  | ||||
| @ -15,10 +15,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. Must be aligned on an 8192-byte boundary. | ||||
|  */ | ||||
|  | ||||
| @ -35,10 +35,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| 
 | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial task structure. | ||||
|  * | ||||
|  | ||||
| @ -38,10 +38,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  * | ||||
|  | ||||
| @ -12,10 +12,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  * | ||||
|  | ||||
| @ -14,10 +14,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial task structure. | ||||
|  * | ||||
|  | ||||
| @ -19,10 +19,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial task structure. | ||||
|  * | ||||
|  | ||||
| @ -13,10 +13,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  * | ||||
|  | ||||
| @ -42,10 +42,6 @@ | ||||
|  */ | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| union thread_union init_thread_union | ||||
| __attribute__((section(".data.init_task"), aligned(THREAD_SIZE))) | ||||
|        = { INIT_THREAD_INFO(init_task) }; | ||||
|  | ||||
| @ -14,10 +14,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial task structure. | ||||
|  * | ||||
|  | ||||
| @ -11,10 +11,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  * | ||||
|  | ||||
| @ -20,9 +20,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  * | ||||
|  | ||||
| @ -36,10 +36,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial task structure. | ||||
|  * | ||||
|  | ||||
| @ -9,10 +9,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  * | ||||
|  | ||||
| @ -18,10 +18,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  * | ||||
|  | ||||
| @ -10,9 +10,6 @@ | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct pt_regs fake_swapper_regs; | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  * | ||||
|  | ||||
| @ -10,10 +10,7 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| struct task_struct init_task = INIT_TASK(init_task); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| EXPORT_SYMBOL(init_task); | ||||
| 
 | ||||
| /* .text section in head.S is aligned at 8k boundary and this gets linked
 | ||||
|  | ||||
| @ -10,11 +10,8 @@ | ||||
| #include "linux/mqueue.h" | ||||
| #include "asm/uaccess.h" | ||||
| 
 | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial task structure. | ||||
|  * | ||||
|  | ||||
| @ -12,7 +12,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initial thread structure. | ||||
|  | ||||
| @ -23,10 +23,6 @@ | ||||
| 
 | ||||
| static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||||
| static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||||
| struct mm_struct init_mm = INIT_MM(init_mm); | ||||
| 
 | ||||
| EXPORT_SYMBOL(init_mm); | ||||
| 
 | ||||
| union thread_union init_thread_union | ||||
| 	__attribute__((__section__(".data.init_task"))) = | ||||
| { INIT_THREAD_INFO(init_task) }; | ||||
|  | ||||
| @ -15,18 +15,6 @@ | ||||
| extern struct files_struct init_files; | ||||
| extern struct fs_struct init_fs; | ||||
| 
 | ||||
| #define INIT_MM(name) \ | ||||
| {			 					\ | ||||
| 	.mm_rb		= RB_ROOT,				\ | ||||
| 	.pgd		= swapper_pg_dir, 			\ | ||||
| 	.mm_users	= ATOMIC_INIT(2), 			\ | ||||
| 	.mm_count	= ATOMIC_INIT(1), 			\ | ||||
| 	.mmap_sem	= __RWSEM_INITIALIZER(name.mmap_sem),	\ | ||||
| 	.page_table_lock =  __SPIN_LOCK_UNLOCKED(name.page_table_lock),	\ | ||||
| 	.mmlist		= LIST_HEAD_INIT(name.mmlist),		\ | ||||
| 	.cpu_vm_mask	= CPU_MASK_ALL,				\ | ||||
| } | ||||
| 
 | ||||
| #define INIT_SIGNALS(sig) {						\ | ||||
| 	.count		= ATOMIC_INIT(1), 				\ | ||||
| 	.wait_chldexit	= __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\ | ||||
|  | ||||
| @ -12,6 +12,7 @@ obj-y			:= bootmem.o filemap.o mempool.o oom_kill.o fadvise.o \ | ||||
| 			   readahead.o swap.o truncate.o vmscan.o shmem.o \
 | ||||
| 			   prio_tree.o util.o mmzone.o vmstat.o backing-dev.o \
 | ||||
| 			   page_isolation.o mm_init.o $(mmu-y) | ||||
| obj-y += init-mm.o | ||||
| 
 | ||||
| obj-$(CONFIG_PROC_PAGE_MONITOR) += pagewalk.o | ||||
| obj-$(CONFIG_BOUNCE)	+= bounce.o | ||||
|  | ||||
							
								
								
									
										20
									
								
								mm/init-mm.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								mm/init-mm.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| #include <linux/mm_types.h> | ||||
| #include <linux/rbtree.h> | ||||
| #include <linux/rwsem.h> | ||||
| #include <linux/spinlock.h> | ||||
| #include <linux/list.h> | ||||
| #include <linux/cpumask.h> | ||||
| 
 | ||||
| #include <asm/atomic.h> | ||||
| #include <asm/pgtable.h> | ||||
| 
 | ||||
| struct mm_struct init_mm = { | ||||
| 	.mm_rb		= RB_ROOT, | ||||
| 	.pgd		= swapper_pg_dir, | ||||
| 	.mm_users	= ATOMIC_INIT(2), | ||||
| 	.mm_count	= ATOMIC_INIT(1), | ||||
| 	.mmap_sem	= __RWSEM_INITIALIZER(init_mm.mmap_sem), | ||||
| 	.page_table_lock =  __SPIN_LOCK_UNLOCKED(init_mm.page_table_lock), | ||||
| 	.mmlist		= LIST_HEAD_INIT(init_mm.mmlist), | ||||
| 	.cpu_vm_mask	= CPU_MASK_ALL, | ||||
| }; | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user