1 /* 1 /* 2 * This file is subject to the terms and condi 2 * This file is subject to the terms and conditions of the GNU General Public 3 * License. See the file "COPYING" in the mai 3 * License. See the file "COPYING" in the main directory of this archive 4 * for more details. 4 * for more details. 5 */ 5 */ 6 #include <linux/export.h> 6 #include <linux/export.h> 7 #include <linux/mm.h> 7 #include <linux/mm.h> 8 #include <linux/string.h> 8 #include <linux/string.h> 9 #include <asm/pgalloc.h> 9 #include <asm/pgalloc.h> 10 10 11 pgd_t *pgd_alloc(struct mm_struct *mm) 11 pgd_t *pgd_alloc(struct mm_struct *mm) 12 { 12 { 13 pgd_t *init, *ret = NULL; 13 pgd_t *init, *ret = NULL; 14 struct ptdesc *ptdesc = pagetable_allo 14 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL & ~__GFP_HIGHMEM, 15 PGD_TABLE_ORDER); 15 PGD_TABLE_ORDER); 16 16 17 if (ptdesc) { 17 if (ptdesc) { 18 ret = ptdesc_address(ptdesc); 18 ret = ptdesc_address(ptdesc); 19 init = pgd_offset(&init_mm, 0U 19 init = pgd_offset(&init_mm, 0UL); 20 pgd_init(ret); 20 pgd_init(ret); 21 memcpy(ret + USER_PTRS_PER_PGD 21 memcpy(ret + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD, 22 (PTRS_PER_PGD - USER_PT 22 (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); 23 } 23 } 24 24 25 return ret; 25 return ret; 26 } 26 } 27 EXPORT_SYMBOL_GPL(pgd_alloc); 27 EXPORT_SYMBOL_GPL(pgd_alloc); 28 28
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.