亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? umap.c

?? 該文件是rt_linux
?? C
字號:
/* * (C) Copyright 1994 Linus Torvalds * * Changes: * * Modified from Linus source to removing active mappings from any * task.  This is required for implementing the virtual graphics * interface for direct rendering on the SGI - miguel. * * Added a routine to map a vmalloc()ed area into user space, this one * is required by the /dev/shmiq driver - miguel. */#include <linux/stat.h>#include <linux/sched.h>#include <linux/kernel.h>#include <linux/mm.h>#include <linux/smp.h>#include <linux/smp_lock.h>#include <linux/shm.h>#include <linux/errno.h>#include <linux/mman.h>#include <linux/module.h>#include <linux/string.h>#include <linux/vmalloc.h>#include <linux/swap.h>#include <asm/system.h>#include <asm/pgalloc.h>#include <asm/page.h>static inline voidremove_mapping_pte_range (pmd_t *pmd, unsigned long address, unsigned long size){	pte_t *pte;	unsigned long end;	if (pmd_none (*pmd))		return;	if (pmd_bad (*pmd)){		printk ("remove_graphics_pte_range: bad pmd (%08lx)\n", pmd_val (*pmd));		pmd_clear (pmd);		return;	}	pte = pte_offset (pmd, address);	address &= ~PMD_MASK;	end = address + size;	if (end > PMD_SIZE)		end = PMD_SIZE;	do {		pte_t entry = *pte;		if (pte_present (entry))			set_pte (pte, pte_modify (entry, PAGE_NONE));		address += PAGE_SIZE;		pte++;	} while (address < end);}static inline voidremove_mapping_pmd_range (pgd_t *pgd, unsigned long address, unsigned long size){	pmd_t *pmd;	unsigned long end;	if (pgd_none (*pgd))		return;	if (pgd_bad (*pgd)){		printk ("remove_graphics_pmd_range: bad pgd (%08lx)\n", pgd_val (*pgd));		pgd_clear (pgd);		return;	}	pmd = pmd_offset (pgd, address);	address &= ~PGDIR_MASK;	end = address + size;	if (end > PGDIR_SIZE)		end = PGDIR_SIZE;	do {		remove_mapping_pte_range (pmd, address, end - address);		address = (address + PMD_SIZE) & PMD_MASK;		pmd++;	} while (address < end);}/* * This routine is called from the page fault handler to remove a * range of active mappings at this point */voidremove_mapping (struct task_struct *task, unsigned long start, unsigned long end){	unsigned long beg = start;	pgd_t *dir;	down_write (&task->mm->mmap_sem);	dir = pgd_offset (task->mm, start);	flush_cache_range (task->mm, beg, end);	while (start < end){		remove_mapping_pmd_range (dir, start, end - start);		start = (start + PGDIR_SIZE) & PGDIR_MASK;		dir++;	}	local_flush_tlb_range (task->mm, beg, end);	up_write (&task->mm->mmap_sem);}EXPORT_SYMBOL(remove_mapping);void *vmalloc_uncached (unsigned long size){	return __vmalloc (size, GFP_KERNEL | __GFP_HIGHMEM,	                  PAGE_KERNEL_UNCACHED);}static inline void free_pte(pte_t page){	if (pte_present(page)) {		struct page *ptpage = pte_page(page);		if ((!VALID_PAGE(ptpage)) || PageReserved(ptpage))			return;		__free_page(ptpage);		if (current->mm->rss <= 0)			return;		current->mm->rss--;		return;	}	swap_free(pte_to_swp_entry(page));}static inline void forget_pte(pte_t page){	if (!pte_none(page)) {		printk("forget_pte: old mapping existed!\n");		free_pte(page);	}}/* * maps a range of vmalloc()ed memory into the requested pages. the old * mappings are removed. */static inline voidvmap_pte_range (pte_t *pte, unsigned long address, unsigned long size, unsigned long vaddr){	unsigned long end;	pgd_t *vdir;	pmd_t *vpmd;	pte_t *vpte;	address &= ~PMD_MASK;	end = address + size;	if (end > PMD_SIZE)		end = PMD_SIZE;	do {		pte_t oldpage = *pte;		struct page * page;		pte_clear(pte);		vdir = pgd_offset_k (vaddr);		vpmd = pmd_offset (vdir, vaddr);		vpte = pte_offset (vpmd, vaddr);		page = pte_page (*vpte);		set_pte(pte, mk_pte(page, PAGE_USERIO));		forget_pte(oldpage);		address += PAGE_SIZE;		vaddr += PAGE_SIZE;		pte++;	} while (address < end);}static inline intvmap_pmd_range (pmd_t *pmd, unsigned long address, unsigned long size, unsigned long vaddr){	unsigned long end;	address &= ~PGDIR_MASK;	end = address + size;	if (end > PGDIR_SIZE)		end = PGDIR_SIZE;	vaddr -= address;	do {		pte_t * pte = pte_alloc(current->mm, pmd, address);		if (!pte)			return -ENOMEM;		vmap_pte_range(pte, address, end - address, address + vaddr);		address = (address + PMD_SIZE) & PMD_MASK;		pmd++;	} while (address < end);	return 0;}intvmap_page_range (unsigned long from, unsigned long size, unsigned long vaddr){	int error = 0;	pgd_t * dir;	unsigned long beg = from;	unsigned long end = from + size;	vaddr -= from;	dir = pgd_offset(current->mm, from);	flush_cache_range(current->mm, beg, end);	while (from < end) {		pmd_t *pmd = pmd_alloc(current->mm, dir, from);		error = -ENOMEM;		if (!pmd)			break;		error = vmap_pmd_range(pmd, from, end - from, vaddr + from);		if (error)			break;		from = (from + PGDIR_SIZE) & PGDIR_MASK;		dir++;	}	local_flush_tlb_range(current->mm, beg, end);	return error;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产又黄又大久久| 一区二区三区.www| 狠狠色伊人亚洲综合成人| 欧美日韩一区精品| 亚洲天堂精品在线观看| av成人老司机| 亚洲gay无套男同| 91精品国产91久久久久久一区二区| 日韩成人一级片| 欧美精品一区二区久久婷婷| 国产乱码精品1区2区3区| 国产精品网站在线观看| 97久久精品人人爽人人爽蜜臀| 亚洲在线中文字幕| 日韩视频中午一区| 粉嫩嫩av羞羞动漫久久久| 亚洲精品久久久久久国产精华液 | 国产美女精品人人做人人爽| 久久久久久毛片| 99久久伊人网影院| 日韩精品电影在线观看| 久久精品在线免费观看| 欧洲亚洲精品在线| 精品一二三四在线| 亚洲日本一区二区| 欧美一区二区三区视频免费播放| 国产伦精品一区二区三区视频青涩| 国产精品国产三级国产aⅴ原创| 欧美日韩国产综合草草| 国产精品69久久久久水密桃| 一区二区久久久久| 精品88久久久久88久久久| 91一区一区三区| 国精产品一区一区三区mba桃花 | 亚洲激情图片qvod| 欧美成人官网二区| 色综合久久六月婷婷中文字幕| 蜜臀av一区二区三区| 亚洲视频免费在线| 久久婷婷色综合| 欧美精品亚洲二区| youjizz国产精品| 久久99精品网久久| 亚洲国产精品综合小说图片区| 久久久久久久久久久久电影| 欧美日韩另类国产亚洲欧美一级| 粉嫩aⅴ一区二区三区四区五区| 日韩av不卡一区二区| 日韩一区在线看| 国产亚洲一区二区在线观看| 欧美乱妇一区二区三区不卡视频| 99精品桃花视频在线观看| 国产一区二区三区免费观看| 亚洲日本乱码在线观看| 国产三级欧美三级| 精品国产网站在线观看| 欧美美女bb生活片| 欧美亚洲动漫精品| 色婷婷久久久综合中文字幕| 成人一区二区三区在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 午夜精品在线看| 亚洲综合色婷婷| 亚洲欧洲日韩一区二区三区| 国产日韩视频一区二区三区| 日韩欧美一级精品久久| 欧美日韩国产精选| 精品视频1区2区3区| 一本大道av一区二区在线播放| 成人av集中营| 成人aa视频在线观看| 成人美女视频在线观看18| 国产精品1区二区.| 国产一二精品视频| 国产精品资源在线| 国产黄色精品视频| 国产高清精品网站| 国产盗摄视频一区二区三区| 国产麻豆91精品| 国产精品一区二区x88av| 国产激情偷乱视频一区二区三区| 国产精品一二三区| 国产大片一区二区| 99久久er热在这里只有精品66| kk眼镜猥琐国模调教系列一区二区| 粉嫩一区二区三区性色av| 成人av中文字幕| 91福利视频网站| 欧美精品三级日韩久久| 欧美一区二区三区白人| 日韩欧美精品在线| 26uuu欧美| 国产精品卡一卡二卡三| 亚洲精品成人精品456| 亚洲在线中文字幕| 美女www一区二区| 国内精品伊人久久久久av一坑| 国内外成人在线| 成人午夜视频在线| 欧美性受极品xxxx喷水| 欧美精品久久久久久久多人混战 | 色诱视频网站一区| 91精彩视频在线| 欧美福利视频一区| 久久综合av免费| 国产精品久久久久精k8| 亚洲午夜羞羞片| 六月婷婷色综合| 成人在线视频一区二区| 在线观看日产精品| 日韩精品在线网站| 亚洲视频每日更新| 日韩福利视频网| 大美女一区二区三区| 欧美在线观看视频一区二区| 日韩精品一区二区三区三区免费| 亚洲国产精品成人综合色在线婷婷 | 粉嫩av一区二区三区| 欧美性猛片xxxx免费看久爱| 欧美成人精品二区三区99精品| 亚洲国产精品高清| 三级亚洲高清视频| 成人国产精品免费观看动漫 | 日韩一区二区影院| 1区2区3区国产精品| 男人的j进女人的j一区| 99re6这里只有精品视频在线观看| 91精品国产麻豆国产自产在线| 国产色产综合色产在线视频| 天天综合网 天天综合色| 成人18视频日本| 欧美成人女星排名| 亚洲成av人片在线观看| 97久久精品人人爽人人爽蜜臀| 精品免费一区二区三区| 亚洲福利一区二区| 成人看片黄a免费看在线| 91精品国产品国语在线不卡| 自拍偷拍欧美精品| 激情久久五月天| 欧美午夜片在线看| 综合久久给合久久狠狠狠97色 | 成人福利视频在线看| 精品免费国产二区三区| 五月天一区二区三区| 97久久精品人人做人人爽| 国产欧美日韩视频在线观看| 六月丁香综合在线视频| 69堂国产成人免费视频| 亚洲精品国产精华液| 99精品国产99久久久久久白柏| 久久午夜电影网| 精久久久久久久久久久| 欧美丰满少妇xxxxx高潮对白| 亚洲欧美日韩国产另类专区| 风间由美一区二区三区在线观看 | 亚洲人成精品久久久久| 成人妖精视频yjsp地址| 2020日本不卡一区二区视频| 日本女人一区二区三区| 欧美日本国产视频| 亚洲成人一区在线| 欧美亚洲图片小说| 亚洲午夜羞羞片| 欧美日韩一区 二区 三区 久久精品| 中文字幕一区二区三区不卡在线 | 国产欧美日韩在线看| 国产精品99久久久久久久女警| 久久看人人爽人人| 国产一区二区免费视频| 26uuu久久综合| 国产在线播精品第三| xf在线a精品一区二区视频网站| 久99久精品视频免费观看| 日韩精品一区二区三区中文精品| 久久国产精品色婷婷| www久久久久| 成人爱爱电影网址| 亚洲精品国产成人久久av盗摄| 99v久久综合狠狠综合久久| 亚洲天堂精品在线观看| 在线视频中文字幕一区二区| 亚洲韩国精品一区| 91精品国产日韩91久久久久久| 极品少妇xxxx精品少妇| 久久久美女毛片| 99国产一区二区三精品乱码| 亚洲精品视频免费看| 5月丁香婷婷综合| 麻豆91在线观看| 国产欧美日韩在线观看| 在线一区二区视频| 美腿丝袜亚洲综合| 国产校园另类小说区| 日本高清无吗v一区| 日韩激情av在线| 欧美激情中文字幕| 欧洲av在线精品| 韩国成人福利片在线播放| 一区二区中文视频|