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

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

?? fifo.c

?? LINUX1.0源代碼,代碼條理清晰
?? C
字號:
/*
 *  linux/fs/fifo.c
 *
 *  written by Paul H. Hargrove
 */

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

static int fifo_open(struct inode * inode,struct file * filp)
{
	int retval = 0;
	unsigned long page;

	switch( filp->f_mode ) {

	case 1:
	/*
	 *  O_RDONLY
	 *  POSIX.1 says that O_NONBLOCK means return with the FIFO
	 *  opened, even when there is no process writing the FIFO.
	 */
		filp->f_op = &connecting_fifo_fops;
		if (!PIPE_READERS(*inode)++)
			wake_up_interruptible(&PIPE_WAIT(*inode));
		if (!(filp->f_flags & O_NONBLOCK) && !PIPE_WRITERS(*inode)) {
			PIPE_RD_OPENERS(*inode)++;
			while (!PIPE_WRITERS(*inode)) {
				if (current->signal & ~current->blocked) {
					retval = -ERESTARTSYS;
					break;
				}
				interruptible_sleep_on(&PIPE_WAIT(*inode));
			}
			if (!--PIPE_RD_OPENERS(*inode))
				wake_up_interruptible(&PIPE_WAIT(*inode));
		}
		while (PIPE_WR_OPENERS(*inode))
			interruptible_sleep_on(&PIPE_WAIT(*inode));
		if (PIPE_WRITERS(*inode))
			filp->f_op = &read_fifo_fops;
		if (retval && !--PIPE_READERS(*inode))
			wake_up_interruptible(&PIPE_WAIT(*inode));
		break;
	
	case 2:
	/*
	 *  O_WRONLY
	 *  POSIX.1 says that O_NONBLOCK means return -1 with
	 *  errno=ENXIO when there is no process reading the FIFO.
	 */
		if ((filp->f_flags & O_NONBLOCK) && !PIPE_READERS(*inode)) {
			retval = -ENXIO;
			break;
		}
		filp->f_op = &write_fifo_fops;
		if (!PIPE_WRITERS(*inode)++)
			wake_up_interruptible(&PIPE_WAIT(*inode));
		if (!PIPE_READERS(*inode)) {
			PIPE_WR_OPENERS(*inode)++;
			while (!PIPE_READERS(*inode)) {
				if (current->signal & ~current->blocked) {
					retval = -ERESTARTSYS;
					break;
				}
				interruptible_sleep_on(&PIPE_WAIT(*inode));
			}
			if (!--PIPE_WR_OPENERS(*inode))
				wake_up_interruptible(&PIPE_WAIT(*inode));
		}
		while (PIPE_RD_OPENERS(*inode))
			interruptible_sleep_on(&PIPE_WAIT(*inode));
		if (retval && !--PIPE_WRITERS(*inode))
			wake_up_interruptible(&PIPE_WAIT(*inode));
		break;
	
	case 3:
	/*
	 *  O_RDWR
	 *  POSIX.1 leaves this case "undefined" when O_NONBLOCK is set.
	 *  This implementation will NEVER block on a O_RDWR open, since
	 *  the process can at least talk to itself.
	 */
		filp->f_op = &rdwr_fifo_fops;
		if (!PIPE_READERS(*inode)++)
			wake_up_interruptible(&PIPE_WAIT(*inode));
		while (PIPE_WR_OPENERS(*inode))
			interruptible_sleep_on(&PIPE_WAIT(*inode));
		if (!PIPE_WRITERS(*inode)++)
			wake_up_interruptible(&PIPE_WAIT(*inode));
		while (PIPE_RD_OPENERS(*inode))
			interruptible_sleep_on(&PIPE_WAIT(*inode));
		break;

	default:
		retval = -EINVAL;
	}
	if (retval || PIPE_BASE(*inode))
		return retval;
	page = __get_free_page(GFP_KERNEL);
	if (PIPE_BASE(*inode)) {
		free_page(page);
		return 0;
	}
	if (!page)
		return -ENOMEM;
	PIPE_LOCK(*inode) = 0;
	PIPE_START(*inode) = PIPE_LEN(*inode) = 0;
	PIPE_BASE(*inode) = (char *) page;
	return 0;
}

/*
 * Dummy default file-operations: the only thing this does
 * is contain the open that then fills in the correct operations
 * depending on the access mode of the file...
 */
static struct file_operations def_fifo_fops = {
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	fifo_open,		/* will set read or write pipe_fops */
	NULL,
	NULL
};

static struct inode_operations fifo_inode_operations = {
	&def_fifo_fops,		/* default file operations */
	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 */
};

void init_fifo(struct inode * inode)
{
	inode->i_op = &fifo_inode_operations;
	inode->i_pipe = 1;
	PIPE_LOCK(*inode) = 0;
	PIPE_BASE(*inode) = NULL;
	PIPE_START(*inode) = PIPE_LEN(*inode) = 0;
	PIPE_RD_OPENERS(*inode) = PIPE_WR_OPENERS(*inode) = 0;
	PIPE_WAIT(*inode) = NULL;
	PIPE_READERS(*inode) = PIPE_WRITERS(*inode) = 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美私人免费视频| 欧美日韩国产综合一区二区| 久久精品国产亚洲a| 石原莉奈在线亚洲二区| 日韩不卡一区二区三区 | 不卡的看片网站| 岛国一区二区在线观看| 懂色av一区二区在线播放| 成人av网址在线观看| 91黄色免费看| 正在播放亚洲一区| 欧美tk丨vk视频| 国产亚洲精品7777| 自拍偷在线精品自拍偷无码专区 | 91麻豆swag| 欧美丝袜自拍制服另类| 日韩欧美国产精品| 欧美国产精品中文字幕| 一区二区三区在线观看国产| 日韩电影网1区2区| 国产大陆亚洲精品国产| 91蜜桃网址入口| 91精品国产入口| 国产午夜亚洲精品不卡| 亚洲人成网站精品片在线观看| 亚洲综合清纯丝袜自拍| 激情综合网av| 色伊人久久综合中文字幕| 欧美日韩国产一二三| 久久精品一区四区| 亚洲一卡二卡三卡四卡| 国产一区二区三区在线观看免费 | 欧美特级限制片免费在线观看| 日韩欧美区一区二| 一区二区三区中文字幕电影| 久久99国产精品久久99| 色综合天天综合狠狠| 精品乱人伦一区二区三区| 国产色综合一区| 日韩精品三区四区| 99久久免费精品高清特色大片| 91精品国产91热久久久做人人 | 日韩精品视频网站| a级高清视频欧美日韩| 日韩精品最新网址| 一区二区三区免费在线观看| 国产一区二区福利视频| 欧美日产在线观看| 一区二区三区欧美久久| 成人中文字幕在线| 精品欧美一区二区久久| 香蕉成人啪国产精品视频综合网| 成人的网站免费观看| 日韩欧美一级二级三级久久久| 一区二区三区中文字幕电影| 成人激情电影免费在线观看| 精品欧美一区二区三区精品久久| 亚洲成人动漫精品| 色婷婷久久一区二区三区麻豆| 国产偷v国产偷v亚洲高清| 美女视频网站黄色亚洲| 欧美日韩一区二区三区不卡| 中文字幕亚洲区| 成人午夜在线免费| 久久精品视频在线看| 国产做a爰片久久毛片| 91麻豆精品久久久久蜜臀| 亚洲一区二区三区影院| 在线观看国产91| 亚洲国产欧美日韩另类综合| 91欧美激情一区二区三区成人| 亚洲国产电影在线观看| 懂色av中文字幕一区二区三区| 国产日产欧产精品推荐色 | 久久精品人人做人人综合| 韩国欧美国产一区| 久久精品男人的天堂| 国产盗摄视频一区二区三区| 国产欧美精品一区| 成人99免费视频| 亚洲美女视频在线观看| 欧洲视频一区二区| 午夜精品成人在线视频| 欧美一区二区三区在线观看视频| 天堂久久一区二区三区| 日韩一二三区视频| 国产一区二区视频在线| 国产精品人妖ts系列视频| 色哟哟一区二区在线观看| 亚洲电影一级片| 欧美不卡激情三级在线观看| 成人污视频在线观看| 一区二区免费在线| 欧美一区二区观看视频| 国产一区二区精品久久| 亚洲欧美电影一区二区| 在线播放亚洲一区| 国产一区二区三区日韩| 亚洲你懂的在线视频| 日韩一区二区在线看| 国产成人在线视频网站| 一区二区三区中文字幕在线观看| 欧美猛男超大videosgay| 国产伦精品一区二区三区免费| 国产精品久久久久久久第一福利| 欧美三区免费完整视频在线观看| 黄色资源网久久资源365| 成人欧美一区二区三区视频网页| 欧美性色aⅴ视频一区日韩精品| 麻豆国产欧美一区二区三区| 91亚洲午夜精品久久久久久| 成人免费在线视频| 91丨九色porny丨蝌蚪| 久久 天天综合| 亚洲黄色免费网站| 国产午夜精品久久| 欧美丰满嫩嫩电影| 97精品国产97久久久久久久久久久久| 亚洲国产综合在线| 国产精品三级av| 日韩精品在线一区二区| 欧美性猛交一区二区三区精品| 国产精品亚洲成人| 日韩av午夜在线观看| 亚洲一区二区三区中文字幕在线| 国产三级精品三级| 久久久久久久久蜜桃| 在线综合视频播放| 欧洲精品一区二区| 大胆亚洲人体视频| 黑人巨大精品欧美黑白配亚洲| 一区二区成人在线观看| 中文字幕视频一区二区三区久| 欧美一区二区啪啪| 欧美日韩视频在线一区二区| 96av麻豆蜜桃一区二区| 国产91精品入口| 国产乱码精品一区二区三区av| 日韩高清一区二区| 亚洲成人精品影院| 一区二区三区免费在线观看| 亚洲日本丝袜连裤袜办公室| 国产欧美综合色| 国产欧美中文在线| 亚洲国产精品99久久久久久久久| 久久综合久久久久88| 日韩欧美在线不卡| 日韩欧美一级片| 26uuu另类欧美| 精品国产一区久久| 久久一区二区三区四区| 26uuu久久天堂性欧美| 2019国产精品| 中文字幕免费在线观看视频一区| 国产婷婷色一区二区三区四区| 久久影院视频免费| 久久午夜免费电影| 国产拍揄自揄精品视频麻豆| 中文字幕av一区 二区| 中文字幕一区视频| 亚洲精品菠萝久久久久久久| 亚洲精品老司机| 日韩经典中文字幕一区| 国内精品久久久久影院色| 福利电影一区二区| 91啪亚洲精品| 91精品一区二区三区久久久久久| 欧美一区二区三区免费视频| 日韩女优av电影在线观看| 久久久不卡网国产精品二区 | 精品一区二区三区免费| 国产高清精品在线| 一本到不卡精品视频在线观看| 欧美羞羞免费网站| 欧美电影免费提供在线观看| 中文字幕欧美日本乱码一线二线| 亚洲免费毛片网站| 免费久久精品视频| 成人动漫中文字幕| 欧美精品日韩精品| 亚洲国产精品精华液2区45| 亚洲精品ww久久久久久p站 | 99久久精品国产麻豆演员表| 欧美视频日韩视频在线观看| 欧美大尺度电影在线| 国产欧美日韩麻豆91| 亚洲午夜久久久久久久久久久| 久久99精品国产.久久久久| 99这里都是精品| 日韩欧美亚洲国产另类| 亚洲日本免费电影| 极品销魂美女一区二区三区| 一本大道久久a久久精二百| 日韩精品中午字幕| 亚洲一区中文在线| 成人激情校园春色| 精品国产一区二区三区久久影院| 国产精品成人午夜| 韩国v欧美v亚洲v日本v| 欧美午夜影院一区|