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

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

?? mem.c

?? LINUX1.0源代碼,代碼條理清晰
?? C
字號:
/*
 *  linux/fs/proc/mem.c
 *
 *  Copyright (C) 1991, 1992  Linus Torvalds
 */

#include <linux/types.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>

#include <asm/segment.h>
#include <asm/io.h>

/*
 * mem_write isn't really a good idea right now. It needs
 * to check a lot more: if the process we try to write to 
 * dies in the middle right now, mem_write will overwrite
 * kernel memory.. This disables it altogether.
 */
#define mem_write NULL

static int mem_read(struct inode * inode, struct file * file,char * buf, int count)
{
	unsigned long addr, pid, cr3;
	char *tmp;
	unsigned long pte, page;
	int i;

	if (count < 0)
		return -EINVAL;
	pid = inode->i_ino;
	pid >>= 16;
	cr3 = 0;
	for (i = 1 ; i < NR_TASKS ; i++)
		if (task[i] && task[i]->pid == pid) {
			cr3 = task[i]->tss.cr3;
			break;
		}
	if (!cr3)
		return -EACCES;
	addr = file->f_pos;
	tmp = buf;
	while (count > 0) {
		if (current->signal & ~current->blocked)
			break;
		pte = *PAGE_DIR_OFFSET(cr3,addr);
		if (!(pte & PAGE_PRESENT))
			break;
		pte &= PAGE_MASK;
		pte += PAGE_PTR(addr);
		page = *(unsigned long *) pte;
		if (!(page & 1))
			break;
		page &= PAGE_MASK;
		page += addr & ~PAGE_MASK;
		i = PAGE_SIZE-(addr & ~PAGE_MASK);
		if (i > count)
			i = count;
		memcpy_tofs(tmp,(void *) page,i);
		addr += i;
		tmp += i;
		count -= i;
	}
	file->f_pos = addr;
	return tmp-buf;
}

#ifndef mem_write

static int mem_write(struct inode * inode, struct file * file,char * buf, int count)
{
	unsigned long addr, pid, cr3;
	char *tmp;
	unsigned long pte, page;
	int i;

	if (count < 0)
		return -EINVAL;
	addr = file->f_pos;
	pid = inode->i_ino;
	pid >>= 16;
	cr3 = 0;
	for (i = 1 ; i < NR_TASKS ; i++)
		if (task[i] && task[i]->pid == pid) {
			cr3 = task[i]->tss.cr3;
			break;
		}
	if (!cr3)
		return -EACCES;
	tmp = buf;
	while (count > 0) {
		if (current->signal & ~current->blocked)
			break;
		pte = *PAGE_DIR_OFFSET(cr3,addr);
		if (!(pte & PAGE_PRESENT))
			break;
		pte &= PAGE_MASK;
		pte += PAGE_PTR(addr);
		page = *(unsigned long *) pte;
		if (!(page & PAGE_PRESENT))
			break;
		if (!(page & 2)) {
			do_wp_page(0,addr,current,0);
			continue;
		}
		page &= PAGE_MASK;
		page += addr & ~PAGE_MASK;
		i = PAGE_SIZE-(addr & ~PAGE_MASK);
		if (i > count)
			i = count;
		memcpy_fromfs((void *) page,tmp,i);
		addr += i;
		tmp += i;
		count -= i;
	}
	file->f_pos = addr;
	if (tmp != buf)
		return tmp-buf;
	if (current->signal & ~current->blocked)
		return -ERESTARTSYS;
	return 0;
}

#endif

static int mem_lseek(struct inode * inode, struct file * file, off_t offset, int orig)
{
	switch (orig) {
		case 0:
			file->f_pos = offset;
			return file->f_pos;
		case 1:
			file->f_pos += offset;
			return file->f_pos;
		default:
			return -EINVAL;
	}
}

static struct file_operations proc_mem_operations = {
	mem_lseek,
	mem_read,
	mem_write,
	NULL,		/* mem_readdir */
	NULL,		/* mem_select */
	NULL,		/* mem_ioctl */
	NULL,		/* mmap */
	NULL,		/* no special open code */
	NULL,		/* no special release code */
	NULL		/* can't fsync */
};

struct inode_operations proc_mem_inode_operations = {
	&proc_mem_operations,	/* default base directory file-ops */
	NULL,			/* create */
	NULL,			/* lookup */
	NULL,			/* link */
	NULL,			/* unlink */
	NULL,			/* symlink */
	NULL,			/* mkdir */
	NULL,			/* rmdir */
	NULL,			/* mknod */
	NULL,			/* rename */
	NULL,			/* readlink */
	NULL,			/* follow_link */
	NULL,			/* bmap */
	NULL,			/* truncate */
	NULL			/* permission */
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av电影在线观看| 国产三级欧美三级| 国产农村妇女毛片精品久久麻豆| 中文字幕一区日韩精品欧美| 奇米色一区二区| 99久久伊人精品| 久久久噜噜噜久久中文字幕色伊伊| 亚洲激情图片一区| 成人v精品蜜桃久久一区| 7777精品伊人久久久大香线蕉完整版| 中文字幕精品一区二区三区精品| 日韩av电影天堂| 在线免费一区三区| 中文字幕一区二区三区四区| 韩国一区二区三区| 欧美一卡在线观看| 天堂va蜜桃一区二区三区| 99国产精品久久久久久久久久久| 久久综合狠狠综合| 免费av成人在线| 欧美日韩中文另类| 亚洲在线免费播放| 在线一区二区三区| 亚洲男人天堂av| 成人免费视频国产在线观看| 久久综合久久鬼色| 国产伦精品一区二区三区视频青涩 | 欧美一二区视频| 午夜精品久久久久久| 91丨九色丨蝌蚪丨老版| 综合av第一页| 色综合天天综合网天天看片| 一区二区三区成人| 成人动漫精品一区二区| 国产精品少妇自拍| 95精品视频在线| 亚洲日本护士毛茸茸| 91麻豆精东视频| 亚洲综合色区另类av| 欧美影视一区在线| 日韩精彩视频在线观看| 日韩三级视频在线观看| 久久成人久久爱| 久久久精品黄色| 成人精品一区二区三区中文字幕| 亚洲欧洲日韩一区二区三区| 波多野结衣中文字幕一区二区三区| 国产精品―色哟哟| 欧美在线观看视频在线| 香蕉成人伊视频在线观看| 欧美一级欧美三级在线观看| 九色综合国产一区二区三区| 欧美激情中文不卡| 在线观看日韩av先锋影音电影院| 日韩av电影天堂| 久久久www成人免费毛片麻豆| 风间由美一区二区av101| 亚洲乱码国产乱码精品精小说| 欧美日韩一区二区欧美激情| 麻豆高清免费国产一区| 欧美国产丝袜视频| 欧美色综合久久| 韩国av一区二区三区| 中文字幕亚洲成人| 91精品在线麻豆| 国产成人精品1024| 亚洲一区二区三区视频在线| 日韩欧美一级片| 99re成人精品视频| 免费三级欧美电影| 亚洲欧美另类在线| 精品国产sm最大网站免费看| 91日韩在线专区| 精品一区二区三区视频| 亚洲老司机在线| 337p日本欧洲亚洲大胆精品| 在线观看日韩国产| 国产精品88av| 日韩不卡手机在线v区| 国产精品人妖ts系列视频| 在线电影院国产精品| 成人免费视频免费观看| 美女国产一区二区三区| 玉足女爽爽91| 国产亚洲精品aa| 91精品麻豆日日躁夜夜躁| 99久久精品国产一区二区三区| 麻豆久久久久久久| 亚洲成人tv网| 亚洲日本一区二区三区| 久久久精品免费网站| 日韩一区二区免费在线观看| 色综合天天视频在线观看| 国产福利不卡视频| 免费不卡在线观看| 日韩高清欧美激情| 亚洲最色的网站| 成人欧美一区二区三区小说| 久久久午夜精品| 欧美va亚洲va| 欧美肥妇毛茸茸| 欧美手机在线视频| 色又黄又爽网站www久久| 成人精品免费视频| 国产成人在线视频免费播放| 捆绑调教美女网站视频一区| 男男成人高潮片免费网站| 五月天婷婷综合| 亚洲成人av资源| 午夜伦理一区二区| 亚洲成人自拍一区| 亚洲一区免费在线观看| 亚洲综合一二区| 亚洲午夜在线观看视频在线| 亚洲日本va在线观看| 亚洲色图在线看| 一区二区国产视频| 亚洲午夜影视影院在线观看| 亚洲卡通欧美制服中文| 亚洲综合色丁香婷婷六月图片| 一区二区三区中文字幕在线观看| 亚洲伦在线观看| 一区二区三区91| 午夜精品福利视频网站| 天堂久久久久va久久久久| 婷婷综合在线观看| 毛片av中文字幕一区二区| 经典三级一区二区| 处破女av一区二区| 一本大道久久a久久精品综合| 日本丰满少妇一区二区三区| 欧美三日本三级三级在线播放| 欧美日韩精品福利| 精品福利av导航| 中文字幕第一区二区| 一区二区三区中文字幕精品精品 | 樱花影视一区二区| 日韩精品久久理论片| 九九精品一区二区| 99视频精品在线| 欧美日韩成人综合天天影院| 日韩午夜中文字幕| 国产精品视频一二三区| 亚洲综合在线视频| 激情丁香综合五月| 97国产精品videossex| 欧美美女bb生活片| 国产免费久久精品| 亚洲一区二区综合| 国产一区二区美女| 欧美图片一区二区三区| 精品久久久久久久久久久久包黑料| 久久精品人人做人人综合| 亚洲免费在线观看视频| 免费一级片91| 91免费国产视频网站| 日韩欧美一二三四区| 综合久久久久久| 美女诱惑一区二区| 一本到不卡精品视频在线观看| 日韩亚洲欧美高清| 一区二区三区91| 国产成人免费网站| 欧美日本精品一区二区三区| 久久精品一区二区三区不卡牛牛 | 日本欧美一区二区| 成人av网站在线观看| 欧美日韩成人在线| 亚洲天天做日日做天天谢日日欢 | 成人亚洲精品久久久久软件| 欧美日韩电影在线| 18欧美亚洲精品| 国产成人精品影院| 欧美剧情片在线观看| 亚洲欧美日韩国产中文在线| 国产精品资源站在线| 欧美一级二级在线观看| 亚洲午夜精品17c| 91亚洲精品乱码久久久久久蜜桃| 精品国产乱码久久久久久蜜臀 | 国产精品久久二区二区| 麻豆成人久久精品二区三区红| 欧美三级视频在线| 一区二区三区免费看视频| 成人国产精品免费网站| 国产视频一区不卡| 精品在线播放午夜| 欧美一区日本一区韩国一区| 亚洲一级二级三级在线免费观看| 99久久综合精品| 亚洲天堂免费在线观看视频| 国产成人精品亚洲日本在线桃色| 日韩久久久精品| 麻豆91免费看| 精品欧美黑人一区二区三区| 久久超碰97人人做人人爱| 日韩精品在线网站| 国内一区二区在线| 国产亚洲成av人在线观看导航| 精品在线一区二区三区|