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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? fd.c

?? 基于linux1.0內(nèi)核的linux源碼
?? C
字號(hào):
/*
 *  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;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品伦理在线| 一本久道久久综合中文字幕| 国产成人精品一区二区三区四区 | 精品视频在线免费看| 这里只有精品99re| 欧美国产精品久久| 天天av天天翘天天综合网 | 久久久九九九九| 亚洲日穴在线视频| 老司机午夜精品99久久| 成人sese在线| 91精品国产欧美一区二区18 | 成人综合在线视频| 欧美日韩视频在线观看一区二区三区 | 欧美不卡在线视频| 国产精品久久午夜夜伦鲁鲁| 日韩精品一区第一页| 粉嫩aⅴ一区二区三区四区五区| 在线观看日韩毛片| 国产清纯白嫩初高生在线观看91| 亚洲一区二区三区视频在线| 国产精品自拍在线| 制服丝袜成人动漫| 亚洲摸摸操操av| 久久超碰97中文字幕| 一本大道久久a久久综合| 欧美不卡一二三| 亚洲综合在线免费观看| 国产乱理伦片在线观看夜一区| 欧美天堂一区二区三区| 中文字幕免费不卡| 精品在线播放免费| 欧美色欧美亚洲另类二区| 亚洲国产高清在线| 美女视频黄免费的久久| 欧美在线免费观看视频| 成人免费在线观看入口| 九色综合国产一区二区三区| 欧美伦理影视网| 中文字幕亚洲视频| 国产成人在线免费| 精品国产三级a在线观看| 亚洲一区二区精品视频| 一本到不卡免费一区二区| 欧美激情一区二区三区全黄 | 国产欧美日韩精品一区| 老司机午夜精品| 91精品午夜视频| 亚洲最大的成人av| 色哟哟一区二区| 国产精品国产自产拍在线| 国产乱码字幕精品高清av| 欧美一区二区三级| 全部av―极品视觉盛宴亚洲| 欧美日韩三级视频| 一区二区三区不卡视频| 99精品视频在线播放观看| 欧美韩国日本不卡| 国产精品一区在线| 久久亚洲一区二区三区明星换脸| 免费在线看一区| 欧美一级午夜免费电影| 天天操天天干天天综合网| 欧美日韩dvd在线观看| 午夜国产精品一区| 欧美日韩免费观看一区三区| 亚洲伊人伊色伊影伊综合网| 91国产视频在线观看| 亚洲黄色av一区| 色琪琪一区二区三区亚洲区| 亚洲乱码国产乱码精品精可以看 | 夜夜嗨av一区二区三区| 日本韩国一区二区三区视频| 亚洲精品免费在线| 欧美亚洲高清一区| 午夜激情一区二区| 欧美一区二区三区视频免费| 美国一区二区三区在线播放| 日韩免费高清视频| 国模一区二区三区白浆| 国产亚洲综合性久久久影院| 从欧美一区二区三区| 国产精品夫妻自拍| 91国偷自产一区二区使用方法| 亚洲在线视频一区| 欧美美女网站色| 久88久久88久久久| 日本一区二区免费在线 | 亚洲成av人片一区二区三区 | 蜜臀久久99精品久久久久宅男| 精品欧美一区二区久久| 国内成人免费视频| 国产精品国产精品国产专区不片| 一本大道久久a久久精二百| 亚洲自拍都市欧美小说| 欧美一区二区三区免费在线看| 狠狠色丁香婷综合久久| 欧美高清一级片在线观看| 色美美综合视频| 日韩精品五月天| 国产亚洲欧美日韩俺去了| 99国产精品国产精品毛片| 亚洲成人一二三| 久久久蜜桃精品| 91福利社在线观看| 免费精品视频在线| 国产精品久久一卡二卡| 欧美日韩一区二区三区在线看| 精东粉嫩av免费一区二区三区| 国产精品美女久久久久久2018| 欧美视频在线一区| 国产一区二区三区四| 亚洲精品ww久久久久久p站| 日韩一区二区三区免费看 | 中文字幕在线不卡| 欧美日韩一区成人| 国产馆精品极品| 亚洲bt欧美bt精品| 国产亚洲精品7777| 欧美在线一二三| 国产成人在线视频免费播放| 亚洲一区二区三区在线| 久久久一区二区三区| 欧美午夜一区二区三区| 国产在线看一区| 亚洲第一久久影院| 国产精品女主播在线观看| 欧美一区二区三区四区视频| 9i看片成人免费高清| 裸体歌舞表演一区二区| 一区二区三区欧美日| 精品成人在线观看| 欧美日韩中文另类| 99热精品一区二区| 九色porny丨国产精品| 亚洲专区一二三| 国产精品久久久久久妇女6080| 欧美一区二区三区爱爱| 在线中文字幕一区二区| 高清免费成人av| 久久精品国内一区二区三区| 亚洲一区二区视频| 18欧美亚洲精品| 久久久一区二区三区| 这里只有精品免费| 欧美性三三影院| 97精品电影院| 国产白丝精品91爽爽久久 | 久久―日本道色综合久久 | 精品一区二区综合| 日韩精品久久理论片| 一区二区三区中文字幕电影| 国产欧美精品一区| 久久只精品国产| 日韩一区二区视频| 7799精品视频| 欧美视频一区二区| 色av成人天堂桃色av| 丁香五精品蜜臀久久久久99网站| 久久精品国产澳门| 日韩1区2区3区| 亚洲国产毛片aaaaa无费看| 中文字幕一区二区不卡| 国产欧美一区二区三区沐欲| 久久久美女毛片| 久久亚洲综合av| 精品国产乱码久久久久久久 | 国产精品77777| 国内久久精品视频| 精品一区二区三区在线播放| 天堂成人国产精品一区| 亚洲a一区二区| 午夜影视日本亚洲欧洲精品| 亚洲午夜私人影院| 一区二区激情视频| 又紧又大又爽精品一区二区| 亚洲视频一区二区在线| 亚洲欧美综合色| 亚洲色图一区二区| 一区二区在线观看免费| 亚洲最新在线观看| 亚洲电影一区二区三区| 午夜精品久久久久久久久| 亚洲成人精品一区| 天天射综合影视| 日本不卡视频在线| 精久久久久久久久久久| 国产美女一区二区三区| 国产一区二区视频在线| 国产老女人精品毛片久久| 国产91在线观看| 不卡的电影网站| 91女厕偷拍女厕偷拍高清| 色香蕉成人二区免费| 欧美少妇bbb| 日韩精品中文字幕在线一区| 久久这里只有精品6| 国产精品情趣视频| 一区二区三区中文在线| 水野朝阳av一区二区三区|