From 769cf79bf8a899212d5ceb433f86ba7b8d576b19 Mon Sep 17 00:00:00 2001 From: NAKAMURA Gou Date: Wed, 7 May 2014 20:28:07 +0900 Subject: [PATCH] move vrflag_to_ptattr() to arch/x86/kernel/memory.c refs #18 --- arch/x86/kernel/memory.c | 8 ++++++++ kernel/include/process.h | 2 ++ kernel/process.c | 19 +++++++++---------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/arch/x86/kernel/memory.c b/arch/x86/kernel/memory.c index 18ce51b6..2fde8a9e 100644 --- a/arch/x86/kernel/memory.c +++ b/arch/x86/kernel/memory.c @@ -1617,6 +1617,14 @@ out: return error; } +enum ihk_mc_pt_attribute arch_vrflag_to_ptattr(unsigned long flag) +{ + enum ihk_mc_pt_attribute attr; + + attr = common_vrflag_to_ptattr(flag); + return attr; +} + void load_page_table(struct page_table *pt) { unsigned long pt_addr; diff --git a/kernel/include/process.h b/kernel/include/process.h index cfc0c3e5..8b91b6ba 100644 --- a/kernel/include/process.h +++ b/kernel/include/process.h @@ -247,6 +247,8 @@ int init_process_stack(struct process *process, struct program_load_desc *pn, unsigned long extend_process_region(struct process *proc, unsigned long start, unsigned long end, unsigned long address, unsigned long flag); +extern enum ihk_mc_pt_attribute arch_vrflag_to_ptattr(unsigned long flag); +enum ihk_mc_pt_attribute common_vrflag_to_ptattr(unsigned long flag); void schedule(void); void runq_add_proc(struct process *proc, int cpu_id); diff --git a/kernel/process.c b/kernel/process.c index 8945f6c7..21d6723d 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -50,8 +50,7 @@ extern long do_arch_prctl(unsigned long code, unsigned long address); static void insert_vm_range_list(struct process_vm *vm, struct vm_range *newrange); static int copy_user_ranges(struct process *proc, struct process *org); -enum ihk_mc_pt_attribute vrflag_to_ptattr(unsigned long flag); - + void hold_fork_tree_node(struct fork_tree_node *ftn) { @@ -381,7 +380,7 @@ static int copy_user_ranges(struct process *proc, struct process *org) dkprintf("copy_user_ranges(): memcpy OK\n", pgsize); /* Set up new PTE */ - attr = vrflag_to_ptattr(range->flag); + attr = arch_vrflag_to_ptattr(range->flag); if (ihk_mc_pt_set_range(proc->vm->page_table, vaddr, vaddr + pgsize, virt_to_phys(pg_vaddr), attr)) { kprintf("ERROR: copy_user_ranges() " @@ -750,7 +749,7 @@ static void insert_vm_range_list(struct process_vm *vm, struct vm_range *newrang return; } -enum ihk_mc_pt_attribute vrflag_to_ptattr(unsigned long flag) +enum ihk_mc_pt_attribute common_vrflag_to_ptattr(unsigned long flag) { enum ihk_mc_pt_attribute attr; @@ -778,7 +777,6 @@ enum ihk_mc_pt_attribute vrflag_to_ptattr(unsigned long flag) return attr; } - int add_process_memory_range(struct process *process, unsigned long start, unsigned long end, unsigned long phys, unsigned long flag, @@ -945,8 +943,8 @@ int change_prot_process_memory_range(struct process *proc, goto out; } - oldattr = vrflag_to_ptattr(range->flag); - newattr = vrflag_to_ptattr(newflag); + oldattr = arch_vrflag_to_ptattr(range->flag); + newattr = arch_vrflag_to_ptattr(newflag); clrattr = oldattr & ~newattr; setattr = newattr & ~oldattr; @@ -1113,7 +1111,7 @@ static int page_fault_process_memory_range(struct process_vm *vm, } /* (5) mapping */ - attr = vrflag_to_ptattr(range->flag); + attr = arch_vrflag_to_ptattr(range->flag); if (range->memobj && (range->flag & VR_PRIVATE) && (range->flag & VR_PROT_WRITE)) { /* for copy-on-write */ attr &= ~PTATTR_WRITABLE; @@ -1239,7 +1237,7 @@ static int protection_fault_process_memory_range(struct process_vm *vm, struct v page_map(phys_to_page(newpa)); } - attr = vrflag_to_ptattr(range->flag); + attr = arch_vrflag_to_ptattr(range->flag); attr |= PTATTR_DIRTY; error = ihk_mc_pt_set_pte(vm->page_table, ptep, pgsize, newpa, attr); if (error) { @@ -1434,7 +1432,8 @@ int init_process_stack(struct process *process, struct program_load_desc *pn, memset(stack, 0, minsz); error = ihk_mc_pt_set_range(process->vm->page_table, (void *)(end-minsz), (void *)end, - virt_to_phys(stack), vrflag_to_ptattr(vrflag)); + virt_to_phys(stack), + arch_vrflag_to_ptattr(vrflag)); if (error) { kprintf("init_process_stack:" "set range %lx-%lx %lx failed. %d\n",