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

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

?? fd.c

?? LINUX 1.0 內核c源代碼,是一份精簡的linux內核源代碼
?? C
字號:
/*
 *  linux/fs/proc/fd.c
 *
 *  Copyright (C) 1991, 1992 Linus Torvalds
 *
 *  proc fd directory handling functions
 */

#include <asm/segment.h>

#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>

static int proc_readfd(struct inode *, struct file *, struct dirent *, int);
static int proc_lookupfd(struct inode *,const char *,int,struct inode **);

static struct file_operations proc_fd_operations = {
	NULL,			/* lseek - default */
	NULL,			/* read - bad */
	NULL,			/* write - bad */
	proc_readfd,		/* readdir */
	NULL,			/* select - default */
	NULL,			/* ioctl - default */
	NULL,			/* mmap */
	NULL,			/* no special open code */
	NULL,			/* no special release code */
	NULL			/* can't fsync */
};

/*
 * proc directories can do almost nothing..
 */
struct inode_operations proc_fd_inode_operations = {
	&proc_fd_operations,	/* default base directory file-ops */
	NULL,			/* create */
	proc_lookupfd,		/* 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 */
};

static int proc_lookupfd(struct inode * dir,const char * name, int len,
	struct inode ** result)
{
	unsigned int ino, pid, fd, c;
	struct task_struct * p;
	struct super_block * sb;
	int i;

	*result = NULL;
	ino = dir->i_ino;
	pid = ino >> 16;
	ino &= 0x0000ffff;
	ino -= 7;
	if (!dir)
		return -ENOENT;
	sb = dir->i_sb;
	if (!pid || ino > 1 || !S_ISDIR(dir->i_mode)) {
		iput(dir);
		return -ENOENT;
	}
	if (!len || (name[0] == '.' && (len == 1 ||
	    (name[1] == '.' && len == 2)))) {
		if (len < 2) {
			*result = dir;
			return 0;
		}
		if (!(*result = iget(sb,(pid << 16)+2))) {
			iput(dir);
			return -ENOENT;
		}
		iput(dir);
		return 0;
	}
	iput(dir);
	fd = 0;
	while (len-- > 0) {
		c = *name - '0';
		name++;
		if (c > 9) {
			fd = 0xfffff;
			break;
		}
		fd *= 10;
		fd += c;
		if (fd & 0xffff0000) {
			fd = 0xfffff;
			break;
		}
	}
	for (i = 0 ; i < NR_TASKS ; i++)
		if ((p = task[i]) && p->pid == pid)
			break;
	if (!pid || i >= NR_TASKS)
		return -ENOENT;
	if (!ino) {
		if (fd >= NR_OPEN || !p->filp[fd] || !p->filp[fd]->f_inode)
			return -ENOENT;
		ino = (pid << 16) + 0x100 + fd;
	} else {
		int j = 0;
		struct vm_area_struct * mpnt;
		for (mpnt = p->mmap; mpnt; mpnt = mpnt->vm_next)
			if (mpnt->vm_inode)
				j++;
		if (fd >= j)
			return -ENOENT;
		ino = (pid << 16) + 0x200 + fd;
	}
	if (!(*result = iget(sb,ino)))
		return -ENOENT;
	return 0;
}

static int proc_readfd(struct inode * inode, struct file * filp,
	struct dirent * dirent, int count)
{
	struct task_struct * p;
	unsigned int fd, pid, ino;
	int i,j;

	if (!inode || !S_ISDIR(inode->i_mode))
		return -EBADF;
	ino = inode->i_ino;
	pid = ino >> 16;
	ino &= 0x0000ffff;
	ino -= 7;
	if (ino > 1)
		return 0;
	while (1) {
		fd = filp->f_pos;
		filp->f_pos++;
		if (fd < 2) {
			i = j = fd+1;
			if (!fd)
				fd = inode->i_ino;
			else
				fd = (inode->i_ino & 0xffff0000) | 2;
			put_fs_long(fd, &dirent->d_ino);
			put_fs_word(i, &dirent->d_reclen);
			put_fs_byte(0, i+dirent->d_name);
			while (i--)
				put_fs_byte('.', i+dirent->d_name);
			return j;
		}
		fd -= 2;
		for (i = 1 ; i < NR_TASKS ; i++)
			if ((p = task[i]) && p->pid == pid)
				break;
		if (i >= NR_TASKS)
			return 0;
		if (!ino) {
			if (fd >= NR_OPEN)
				break;
			if (!p->filp[fd] || !p->filp[fd]->f_inode)
				continue;
		} else {
			int j = 0;
			struct vm_area_struct * mpnt;
			for (mpnt = p->mmap ; mpnt ; mpnt = mpnt->vm_next)
				if (mpnt->vm_inode)
					j++;
			if (fd >= j)
				break;
		}
		j = 10;
		i = 1;
		while (fd >= j) {
			j *= 10;
			i++;
		}
		j = i;
		if (!ino)
			ino = (pid << 16) + 0x100 + fd;
		else
			ino = (pid << 16) + 0x200 + fd;
		put_fs_long(ino, &dirent->d_ino);
		put_fs_word(i, &dirent->d_reclen);
		put_fs_byte(0, i+dirent->d_name);
		while (i--) {
			put_fs_byte('0'+(fd % 10), i+dirent->d_name);
			fd /= 10;
		}
		return j;
	}
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区免费在线观看| 欧美一级夜夜爽| 欧美精品高清视频| 国产校园另类小说区| 亚洲午夜一区二区| 成人一级片在线观看| 日韩欧美一卡二卡| 亚洲图片欧美色图| 97久久人人超碰| 国产调教视频一区| 国内精品嫩模私拍在线| 欧美日韩极品在线观看一区| 1024成人网色www| 国内精品在线播放| 日韩亚洲欧美成人一区| 亚洲一区在线观看免费观看电影高清| 韩日欧美一区二区三区| 91精品国产综合久久国产大片 | 福利电影一区二区| 欧美哺乳videos| 五月综合激情日本mⅴ| av在线播放成人| 国产清纯在线一区二区www| 久久se这里有精品| 欧美肥妇bbw| 亚洲h动漫在线| 欧美最猛性xxxxx直播| 国产精品久久久久久久久免费相片 | 欧美日韩国产天堂| 亚洲一二三级电影| 在线看国产一区二区| 亚洲免费视频中文字幕| 91亚洲男人天堂| 中文字幕一区在线观看视频| 国产成人av电影在线| 久久综合色婷婷| 国产精品一区2区| 久久久www免费人成精品| 国产成人在线观看免费网站| 国产校园另类小说区| 高清免费成人av| 国产精品传媒在线| 欧美午夜精品一区二区蜜桃| 亚洲一区影音先锋| 欧美一区二区三区免费在线看| 五月天激情综合网| 日韩精品一区二区三区中文精品| 美脚の诱脚舐め脚责91| 久久综合久久综合九色| 成av人片一区二区| 亚洲精品美国一| 欧美电影一区二区三区| 美女视频网站黄色亚洲| 国产日韩精品一区| 91黄色免费观看| 日本不卡视频在线| 国产亚洲欧美激情| 91国内精品野花午夜精品| 天天做天天摸天天爽国产一区| 欧美岛国在线观看| 波多野结衣精品在线| 午夜久久久久久电影| 久久精品一区二区| 欧美曰成人黄网| 免费观看日韩av| 国产精品久久三| 制服视频三区第一页精品| 韩国精品在线观看| 亚洲美女偷拍久久| www日韩大片| 色94色欧美sute亚洲13| 久久99久久99| 一区二区三区四区中文字幕| 日韩欧美国产1| 99久久久无码国产精品| 日韩精品一级二级| 国产精品网曝门| 欧美一区二区三区公司| www.av精品| 精品中文av资源站在线观看| 亚洲女子a中天字幕| 精品国产一区二区三区四区四 | 欧美日韩中文国产| 国产成人亚洲综合色影视| 亚洲国产三级在线| 国产精品你懂的在线| 日韩一区二区三区视频在线 | 欧美日韩亚洲高清一区二区| 成人免费视频网站在线观看| 免费xxxx性欧美18vr| 夜夜精品视频一区二区| 亚洲国产精品成人久久综合一区 | 琪琪久久久久日韩精品| 亚洲美女屁股眼交| 国产精品私人影院| 精品国一区二区三区| 欧美日韩1区2区| 91蝌蚪国产九色| 豆国产96在线|亚洲| 久久国产三级精品| 日本亚洲视频在线| 亚洲图片自拍偷拍| 一区二区三区免费网站| 中文字幕一区二区三区乱码在线| 久久综合视频网| 精品久久久久久久一区二区蜜臀| 555www色欧美视频| 欧美性猛交一区二区三区精品| 99久久精品一区二区| 成人一区二区视频| 成人深夜福利app| 成人听书哪个软件好| 丁香一区二区三区| 成人动漫视频在线| 97久久精品人人做人人爽| 9久草视频在线视频精品| youjizz国产精品| 97国产一区二区| 91在线视频播放| 91福利资源站| 精品视频999| 911精品国产一区二区在线| 欧美久久久久免费| 777亚洲妇女| 欧美zozo另类异族| 国产欧美一区二区三区沐欲 | 成人国产精品免费观看视频| 99久久精品费精品国产一区二区| 99久久精品久久久久久清纯| 一本大道av一区二区在线播放| 色婷婷久久99综合精品jk白丝 | 成人激情开心网| 91丨九色丨尤物| 欧美日韩高清不卡| 日韩一区二区三区三四区视频在线观看| 69成人精品免费视频| 日韩午夜三级在线| 精品美女一区二区| 欧美激情一区在线观看| 亚洲美女视频在线| 日韩高清在线电影| 风间由美一区二区av101| 91亚洲午夜精品久久久久久| 在线观看成人免费视频| 日韩视频免费观看高清完整版| 26uuu欧美| 一区二区在线免费观看| 秋霞电影一区二区| 成人精品电影在线观看| 欧美日本韩国一区二区三区视频| 欧美一区二区三区系列电影| 国产日韩欧美高清| 午夜电影网亚洲视频| 国产成人超碰人人澡人人澡| 色综合久久88色综合天天免费| 日韩一区二区三区四区| 国产精品九色蝌蚪自拍| 日本网站在线观看一区二区三区| 国产盗摄视频一区二区三区| 欧美色中文字幕| 日本一区二区在线不卡| 视频在线观看一区二区三区| 成人小视频在线观看| 4438亚洲最大| 亚洲日韩欧美一区二区在线| 麻豆91在线播放| 91极品视觉盛宴| 国产精品久久久久婷婷二区次| 日本视频在线一区| 91国内精品野花午夜精品| 国产喂奶挤奶一区二区三区| 午夜精品久久久| 91亚洲资源网| 欧美高清一级片在线观看| 青青草国产精品亚洲专区无| 色94色欧美sute亚洲线路一ni| 国产日韩欧美一区二区三区乱码| 亚洲国产欧美在线| 色综合久久中文字幕| 欧美国产日产图区| 久久99精品久久久久婷婷| 欧美在线观看视频一区二区三区| 国产精品免费久久| 国产在线精品一区在线观看麻豆| 91精品一区二区三区在线观看| 亚洲精品视频观看| kk眼镜猥琐国模调教系列一区二区| 精品国产乱码久久久久久蜜臀| 日韩av在线免费观看不卡| 欧美午夜在线观看| 亚洲一区二区精品3399| 91福利精品第一导航| 亚洲免费在线看| 色婷婷综合久久| 亚洲精品欧美在线| 色婷婷久久综合| 一区二区三区四区不卡在线 | 亚洲色图清纯唯美| 成人ar影院免费观看视频| 国产精品女主播av|