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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vmalloc.c

?? linux 1.0 源代碼
?? C
字號:
/* *  linux/mm/vmalloc.c * *  Copyright (C) 1993  Linus Torvalds */#include <asm/system.h>#include <linux/config.h>#include <linux/signal.h>#include <linux/sched.h>#include <linux/head.h>#include <linux/kernel.h>#include <linux/errno.h>#include <linux/types.h>#include <linux/malloc.h>#include <asm/segment.h>struct vm_struct {	unsigned long flags;	void * addr;	unsigned long size;	struct vm_struct * next;};static struct vm_struct * vmlist = NULL;/* Just any arbitrary offset to the start of the vmalloc VM area: the * current 8MB value just means that there will be a 8MB "hole" after the * physical memory until the kernel virtual memory starts.  That means that * any out-of-bounds memory accesses will hopefully be caught. * The vmalloc() routines leaves a hole of 4kB between each vmalloced * area for the same reason. ;) */#define VMALLOC_OFFSET	(8*1024*1024)static inline void set_pgdir(unsigned long dindex, unsigned long value){	struct task_struct * p;	p = &init_task;	do {		((unsigned long *) p->tss.cr3)[dindex] = value;		p = p->next_task;	} while (p != &init_task);}static int free_area_pages(unsigned long dindex, unsigned long index, unsigned long nr){	unsigned long page, *pte;	if (!(PAGE_PRESENT & (page = swapper_pg_dir[dindex])))		return 0;	page &= PAGE_MASK;	pte = index + (unsigned long *) page;	do {		unsigned long pg = *pte;		*pte = 0;		if (pg & PAGE_PRESENT)			free_page(pg);		pte++;	} while (--nr);	pte = (unsigned long *) page;	for (nr = 0 ; nr < 1024 ; nr++, pte++)		if (*pte)			return 0;	set_pgdir(dindex,0);	mem_map[MAP_NR(page)] = 1;	free_page(page);	invalidate();	return 0;}static int alloc_area_pages(unsigned long dindex, unsigned long index, unsigned long nr){	unsigned long page, *pte;	page = swapper_pg_dir[dindex];	if (!page) {		page = get_free_page(GFP_KERNEL);		if (!page)			return -ENOMEM;		if (swapper_pg_dir[dindex]) {			free_page(page);			page = swapper_pg_dir[dindex];		} else {			mem_map[MAP_NR(page)] = MAP_PAGE_RESERVED;			set_pgdir(dindex, page | PAGE_SHARED);		}	}	page &= PAGE_MASK;	pte = index + (unsigned long *) page;	*pte = PAGE_SHARED;		/* remove a race with vfree() */	do {		unsigned long pg = get_free_page(GFP_KERNEL);		if (!pg)			return -ENOMEM;		*pte = pg | PAGE_SHARED;		pte++;	} while (--nr);	invalidate();	return 0;}static int do_area(void * addr, unsigned long size,	int (*area_fn)(unsigned long,unsigned long,unsigned long)){	unsigned long nr, dindex, index;	nr = size >> PAGE_SHIFT;	dindex = (TASK_SIZE + (unsigned long) addr) >> 22;	index = (((unsigned long) addr) >> PAGE_SHIFT) & (PTRS_PER_PAGE-1);	while (nr > 0) {		unsigned long i = PTRS_PER_PAGE - index;		if (i > nr)			i = nr;		nr -= i;		if (area_fn(dindex, index, i))			return -1;		index = 0;		dindex++;	}	return 0;}void vfree(void * addr){	struct vm_struct **p, *tmp;	if (!addr)		return;	if ((PAGE_SIZE-1) & (unsigned long) addr) {		printk("Trying to vfree() bad address (%p)\n", addr);		return;	}	for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) {		if (tmp->addr == addr) {			*p = tmp->next;			do_area(tmp->addr, tmp->size, free_area_pages);			kfree(tmp);			return;		}	}	printk("Trying to vfree() nonexistent vm area (%p)\n", addr);}void * vmalloc(unsigned long size){	void * addr;	struct vm_struct **p, *tmp, *area;	size = PAGE_ALIGN(size);	if (!size || size > high_memory)		return NULL;	area = (struct vm_struct *) kmalloc(sizeof(*area), GFP_KERNEL);	if (!area)		return NULL;	addr = (void *) ((high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1));	area->size = size + PAGE_SIZE;	area->next = NULL;	for (p = &vmlist; (tmp = *p) ; p = &tmp->next) {		if (size + (unsigned long) addr < (unsigned long) tmp->addr)			break;		addr = (void *) (tmp->size + (unsigned long) tmp->addr);	}	area->addr = addr;	area->next = *p;	*p = area;	if (do_area(addr, size, alloc_area_pages)) {		vfree(addr);		return NULL;	}	return addr;}int vread(char *buf, char *addr, int count){	struct vm_struct **p, *tmp;	char *vaddr, *buf_start = buf;	int n;	for (p = &vmlist; (tmp = *p) ; p = &tmp->next) {		vaddr = (char *) tmp->addr;		while (addr < vaddr) {			if (count == 0)				goto finished;			put_fs_byte('\0', buf++), addr++, count--;		}		n = tmp->size - PAGE_SIZE;		if (addr > vaddr)			n -= addr - vaddr;		while (--n >= 0) {			if (count == 0)				goto finished;			put_fs_byte(*addr++, buf++), count--;		}	}finished:	return buf - buf_start;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区在线免费观看视频| 久久网站最新地址| 国产成人在线视频网站| 狠狠色丁香婷婷综合久久片| 日韩成人av影视| 全部av―极品视觉盛宴亚洲| 日韩精品亚洲专区| 日韩电影一区二区三区| 免费成人在线观看视频| 精品一区二区三区香蕉蜜桃| 韩国成人精品a∨在线观看| 国产高清不卡一区二区| 国产福利一区二区| 99国产精品久| 欧美色网站导航| 91精品国产美女浴室洗澡无遮挡| 欧美大尺度电影在线| 26uuu久久综合| 国产欧美一区二区三区沐欲| 国产精品福利影院| 亚洲一二三专区| 美国十次了思思久久精品导航| 精品一区二区影视| 成人精品国产一区二区4080| 91麻豆国产精品久久| 欧美精品久久99| 欧美xxxxxxxxx| 亚洲欧洲日产国码二区| 丝袜亚洲另类欧美| 国产成人精品一区二| 欧美天天综合网| 精品国产一区a| 中文字幕一区视频| 蜜桃视频在线观看一区| 成人av在线影院| 欧美挠脚心视频网站| 国产亚洲一区字幕| 亚洲电影一区二区三区| 国产成人亚洲综合色影视| 欧美亚洲一区二区在线观看| 久久人人爽人人爽| 一区二区在线看| 国产真实乱子伦精品视频| 91九色最新地址| 久久久国产综合精品女国产盗摄| 亚洲观看高清完整版在线观看| 国产一区二区精品在线观看| 精品视频在线看| 中文字幕av免费专区久久| 日韩福利电影在线观看| 91浏览器在线视频| 国产亚洲va综合人人澡精品 | 中文字幕欧美区| 亚洲成a人v欧美综合天堂下载| 高清shemale亚洲人妖| 日韩欧美一区二区不卡| 香蕉久久夜色精品国产使用方法 | 亚洲你懂的在线视频| 国模冰冰炮一区二区| 7777精品久久久大香线蕉| 一区二区三区在线免费播放 | 亚洲综合在线视频| 国产+成+人+亚洲欧洲自线| 欧美va亚洲va香蕉在线| 香港成人在线视频| 欧美婷婷六月丁香综合色| 亚洲私人黄色宅男| 波多野结衣亚洲一区| 久久久久国产精品人| 免费人成黄页网站在线一区二区| 欧美亚洲综合网| 亚洲最快最全在线视频| 在线观看日韩国产| 伊人性伊人情综合网| 日本福利一区二区| 亚洲激情欧美激情| 在线观看一区二区视频| 伊人一区二区三区| 欧美日韩一区国产| 免费在线成人网| 日韩欧美一级二级三级久久久| 免费久久99精品国产| 久久亚洲影视婷婷| 国产寡妇亲子伦一区二区| 国产精品美女久久久久久久久久久 | 99re视频这里只有精品| 国产精品高潮呻吟| 97se亚洲国产综合在线| 亚洲人成在线播放网站岛国| 在线观看网站黄不卡| 亚洲一区二区三区四区五区中文| 欧美午夜影院一区| 免费人成在线不卡| 久久久www免费人成精品| 成人激情电影免费在线观看| 亚洲免费色视频| 欧美精品18+| 国产一区二区三区在线看麻豆 | 91麻豆国产福利在线观看| 亚洲自拍与偷拍| 精品国产免费人成电影在线观看四季 | 亚洲精品国产品国语在线app| 色婷婷综合五月| 日韩黄色一级片| 欧美国产日韩在线观看| 欧美系列亚洲系列| 国产在线精品免费| 亚洲人成电影网站色mp4| 91精品国产一区二区三区蜜臀| 国产另类ts人妖一区二区| 亚洲女女做受ⅹxx高潮| 日韩精品一区在线观看| av激情成人网| 久久精品国产亚洲高清剧情介绍| 欧美国产欧美综合| 91精品国产91久久久久久最新毛片 | 亚洲一区日韩精品中文字幕| 91精品国产乱| av中文字幕在线不卡| 日韩电影一区二区三区四区| 中文字幕一区二区三区在线不卡| 91精品国产综合久久久久久漫画| 国产91在线|亚洲| 日韩综合一区二区| 亚洲三级视频在线观看| 精品国免费一区二区三区| 欧洲一区二区三区在线| 福利电影一区二区三区| 免费xxxx性欧美18vr| 亚洲黄色av一区| 国产日韩在线不卡| 日韩一区二区高清| 欧美日韩一区二区三区在线看| 福利一区二区在线| 国产美女av一区二区三区| 日韩精品电影在线| 亚洲黄色录像片| |精品福利一区二区三区| 精品国产sm最大网站| 91精品国产高清一区二区三区 | 欧美mv日韩mv国产| 7777精品伊人久久久大香线蕉最新版| www.成人网.com| 成人精品免费视频| 国产米奇在线777精品观看| 美腿丝袜亚洲三区| 美女性感视频久久| 美日韩一区二区| 美洲天堂一区二卡三卡四卡视频 | eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产成人在线电影| 国产在线日韩欧美| 蜜桃91丨九色丨蝌蚪91桃色| 日韩av在线发布| 奇米综合一区二区三区精品视频 | 国产精品网曝门| 国产三级久久久| 久久久久久久电影| 国产日韩欧美制服另类| 久久久久久久久一| 国产亚洲人成网站| 国产精品久久久久影院色老大| 国产精品私房写真福利视频| 国产精品午夜久久| 自拍视频在线观看一区二区| 亚洲精品乱码久久久久久黑人| 一区二区三区蜜桃网| 亚洲一区二区成人在线观看| 婷婷中文字幕综合| 久久精品国产77777蜜臀| 国精产品一区一区三区mba桃花 | 国产精品88av| 成人深夜在线观看| 91玉足脚交白嫩脚丫在线播放| 色婷婷亚洲一区二区三区| 欧美丝袜丝交足nylons图片| 欧美一区二区三区在线观看| 久久一二三国产| 亚洲欧洲美洲综合色网| 午夜精品久久久久久久99樱桃| 久久99久久精品| 成人a免费在线看| 欧美精品一二三四| 久久久不卡网国产精品一区| 亚洲人成影院在线观看| 秋霞电影一区二区| youjizz国产精品| 欧美日韩精品系列| 国产日韩欧美高清在线| 夜夜爽夜夜爽精品视频| 奇米四色…亚洲| 99免费精品视频| 欧美一区二区视频在线观看2020 | 中文字幕视频一区二区三区久| 一区二区三区四区视频精品免费 | 久久精品国产久精国产| 色视频一区二区| 26uuu久久天堂性欧美| 亚洲一区二区欧美日韩| 成人性生交大片免费看中文 |