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

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

?? sock.c

?? 內核是系統的心臟
?? C
字號:
/*
 *  linux/fs/nfs/sock.c
 *
 *  Copyright (C) 1992, 1993  Rick Sladkey
 *
 *  low-level nfs remote procedure call interface
 */

#include <linux/config.h>
#include <linux/sched.h>
#include <linux/nfs_fs.h>
#include <linux/errno.h>
#include <linux/socket.h>
#include <linux/fcntl.h>
#include <asm/segment.h>
#include <linux/in.h>
#include <linux/net.h>


extern struct socket *socki_lookup(struct inode *inode);

#define _S(nr) (1<<((nr)-1))

/*
 * We violate some modularity principles here by poking around
 * in some socket internals.  Besides having to call socket
 * functions from kernel-space instead of user space, the socket
 * interface does not lend itself well to being cleanly called
 * without a file descriptor.  Since the nfs calls can run on
 * behalf of any process, the superblock maintains a file pointer
 * to the server socket.
 */

static int do_nfs_rpc_call(struct nfs_server *server, int *start, int *end)
{
	struct file *file;
	struct inode *inode;
	struct socket *sock;
	unsigned short fs;
	int result;
	int xid;
	int len;
	select_table wait_table;
	struct select_table_entry entry;
	int (*select) (struct inode *, struct file *, int, select_table *);
	int init_timeout, max_timeout;
	int timeout;
	int retrans;
	int major_timeout_seen;
	char *server_name;
	int n;
	int addrlen;
	unsigned long old_mask;

	xid = start[0];
	len = ((char *) end) - ((char *) start);
	file = server->file;
	inode = file->f_inode;
	select = file->f_op->select;
	sock = socki_lookup(inode);
	if (!sock) {
		printk("nfs_rpc_call: socki_lookup failed\n");
		return -EBADF;
	}
	init_timeout = server->timeo;
	max_timeout = NFS_MAX_RPC_TIMEOUT*HZ/10;
	retrans = server->retrans;
	major_timeout_seen = 0;
	server_name = server->hostname;
	old_mask = current->blocked;
	current->blocked |= ~(_S(SIGKILL)
#if 0
		| _S(SIGSTOP)
#endif
		| ((server->flags & NFS_MOUNT_INTR)
		? ((current->sigaction[SIGINT - 1].sa_handler == SIG_DFL
			? _S(SIGINT) : 0)
		| (current->sigaction[SIGQUIT - 1].sa_handler == SIG_DFL
			? _S(SIGQUIT) : 0))
		: 0));
	fs = get_fs();
	set_fs(get_ds());
	for (n = 0, timeout = init_timeout; ; n++, timeout <<= 1) {
		result = sock->ops->send(sock, (void *) start, len, 0, 0);
		if (result < 0) {
			printk("nfs_rpc_call: send error = %d\n", result);
			break;
		}
	re_select:
		wait_table.nr = 0;
		wait_table.entry = &entry;
		current->state = TASK_INTERRUPTIBLE;
		if (!select(inode, file, SEL_IN, &wait_table)
		    && !select(inode, file, SEL_IN, NULL)) {
			if (timeout > max_timeout)
				timeout = max_timeout;
			current->timeout = jiffies + timeout;
			schedule();
			remove_wait_queue(entry.wait_address, &entry.wait);
			current->state = TASK_RUNNING;
			if (current->signal & ~current->blocked) {
				current->timeout = 0;
				result = -ERESTARTSYS;
				break;
			}
			if (!current->timeout) {
				if (n < retrans)
					continue;
				if (server->flags & NFS_MOUNT_SOFT) {
					printk("NFS server %s not responding, "
						"timed out\n", server_name);
					result = -EIO;
					break;
				}
				n = 0;
				timeout = init_timeout;
				init_timeout <<= 1;
				if (!major_timeout_seen) {
					printk("NFS server %s not responding, "
						"still trying\n", server_name);
				}
				major_timeout_seen = 1;
				continue;
			}
			else
				current->timeout = 0;
		}
		else if (wait_table.nr)
			remove_wait_queue(entry.wait_address, &entry.wait);
		current->state = TASK_RUNNING;
		addrlen = 0;
		result = sock->ops->recvfrom(sock, (void *) start, PAGE_SIZE, 1, 0,
			NULL, &addrlen);
		if (result < 0) {
			if (result == -EAGAIN) {
#if 0
				printk("nfs_rpc_call: bad select ready\n");
#endif
				goto re_select;
			}
			if (result == -ECONNREFUSED) {
#if 0
				printk("nfs_rpc_call: server playing coy\n");
#endif
				goto re_select;
			}
			if (result != -ERESTARTSYS) {
				printk("nfs_rpc_call: recv error = %d\n",
					-result);
			}
			break;
		}
		if (*start == xid) {
			if (major_timeout_seen)
				printk("NFS server %s OK\n", server_name);
			break;
		}
#if 0
		printk("nfs_rpc_call: XID mismatch\n");
#endif
	}
	current->blocked = old_mask;
	set_fs(fs);
	return result;
}

/*
 * For now we lock out other simulaneous nfs calls for the same filesytem
 * because we are single-threaded and don't want to get mismatched
 * RPC replies.
 */

int nfs_rpc_call(struct nfs_server *server, int *start, int *end)
{
	int result;

	while (server->lock)
		sleep_on(&server->wait);
	server->lock = 1;
	result = do_nfs_rpc_call(server, start, end);
	server->lock = 0;
	wake_up(&server->wait);
	return result;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久岛国免费| 狠狠色综合播放一区二区| 亚洲三级电影网站| 国产精品久久久久久久久久免费看 | 91农村精品一区二区在线| 欧美一区二区在线视频| 欧美日韩亚洲综合在线| 欧美久久久久久久久| 91精品国产综合久久精品麻豆| 亚洲精品成人a在线观看| 成人手机电影网| 国产精品久线在线观看| 欧美大片一区二区三区| 蜜桃精品在线观看| 国产不卡免费视频| 理论片日本一区| 一本大道久久a久久综合婷婷| 国产精品福利av| 成人激情午夜影院| 国产精品原创巨作av| 亚洲综合色成人| 国产成人亚洲精品青草天美| 精品欧美一区二区久久| 国产精品日日摸夜夜摸av| 成人丝袜18视频在线观看| 性久久久久久久久久久久| 麻豆91在线观看| 色婷婷久久久亚洲一区二区三区| 久久se精品一区二区| 三级在线观看一区二区| 精品国产一区二区三区av性色| 日韩欧美国产精品一区| 日韩精品中文字幕一区| 欧美区一区二区三区| 国产日本欧洲亚洲| 91久久一区二区| 免费在线看一区| 国产精品第13页| 亚洲日本在线a| 久久se精品一区二区| 欧美大片一区二区三区| 精品成a人在线观看| 99精品视频中文字幕| 午夜电影一区二区| 亚洲制服丝袜av| 石原莉奈一区二区三区在线观看| 高清av一区二区| 亚洲男人电影天堂| 成人精品在线视频观看| 久久精品国产99久久6| 一二三四社区欧美黄| 欧美激情中文字幕一区二区| 久久这里只精品最新地址| 天天影视涩香欲综合网| 国产精品区一区二区三| 欧美mv日韩mv| 日韩免费高清av| 日韩欧美国产电影| 久久伊人中文字幕| 正在播放亚洲一区| 亚洲欧美日韩人成在线播放| 日韩av一级电影| 国产精品国产三级国产普通话三级 | 亚洲综合成人网| 亚洲午夜精品在线| 欧美岛国在线观看| 91精品国产一区二区人妖| 欧美不卡视频一区| 亚洲国产精品成人综合| 欧美美女一区二区| 亚洲欧美日韩国产另类专区| 91免费在线视频观看| 国产高清无密码一区二区三区| 99久久伊人网影院| 欧美日韩二区三区| 久久你懂得1024| 亚洲精品中文在线观看| 久久精品免费观看| 日韩欧美的一区| 国产欧美一区二区三区在线老狼| 麻豆freexxxx性91精品| 国产麻豆欧美日韩一区| 色综合久久中文综合久久97| 精品福利二区三区| 中文字幕一区二区三区蜜月 | 日韩精品专区在线| 久久久久久久久久久久电影| 国产日韩欧美一区二区三区乱码 | 99久久精品国产毛片| 久久精品视频在线看| 成人动漫中文字幕| 99精品国产热久久91蜜凸| 欧美日本国产视频| 日韩美女精品在线| 国产成人99久久亚洲综合精品| 制服丝袜亚洲播放| 亚洲成a人v欧美综合天堂下载| 国产一区二区三区四区五区入口| 精品国产一区二区亚洲人成毛片| 亚洲美女视频一区| 国产综合久久久久久久久久久久| 在线精品视频免费播放| ㊣最新国产の精品bt伙计久久| 成人性生交大片免费| 欧美va在线播放| 色www精品视频在线观看| 最新成人av在线| 日韩福利电影在线| 日韩欧美亚洲一区二区| 亚洲成人精品影院| 日韩精品一区二区三区蜜臀 | 国产成人亚洲综合a∨婷婷 | 国产精品久久久久久久裸模| 国产成人av一区二区三区在线 | 欧美一级一区二区| 日韩高清在线一区| 日韩欧美二区三区| 蜜臀av一区二区在线免费观看 | 97久久超碰国产精品| 韩国三级在线一区| 精品久久久网站| av中文字幕在线不卡| 国产欧美精品区一区二区三区| 国产精品中文字幕欧美| 亚洲一区在线视频| 正在播放一区二区| 国精产品一区一区三区mba视频 | 久久99久久久欧美国产| 久久综合av免费| 色婷婷久久久亚洲一区二区三区 | 国产aⅴ综合色| 国产在线精品国自产拍免费| 色综合久久综合| 亚洲欧洲精品一区二区三区| 精品国产乱码91久久久久久网站| 91美女蜜桃在线| 精品国产一区二区亚洲人成毛片| 色8久久人人97超碰香蕉987| 日本视频一区二区| 亚洲国产wwwccc36天堂| 亚洲人精品午夜| 欧美精品日韩一本| zzijzzij亚洲日本少妇熟睡| 国产一本一道久久香蕉| 美腿丝袜一区二区三区| 日一区二区三区| 亚洲午夜一区二区三区| 国产拍揄自揄精品视频麻豆| 中文字幕一区二区三区av| 91精品国产aⅴ一区二区| 国产精品影视在线观看| 五月天国产精品| 亚洲午夜三级在线| 亚洲成a人v欧美综合天堂下载| 自拍偷拍国产精品| 亚洲一区二区三区在线看| 国产午夜精品一区二区| av一区二区三区在线| 韩国欧美一区二区| 亚洲视频精选在线| 国产精品美女久久久久久久久| 日韩伦理电影网| 国产清纯美女被跳蛋高潮一区二区久久w | 国产精品白丝在线| 亚洲免费av观看| 亚洲三级久久久| 亚洲人成伊人成综合网小说| 久久网站最新地址| 中文字幕一区二区三区不卡| heyzo一本久久综合| 国产69精品久久久久毛片| 国产精品一区2区| 一本色道久久综合亚洲精品按摩| 91国产视频在线观看| 欧美一三区三区四区免费在线看 | 国产一区二区三区免费在线观看| 亚洲成av人影院| 日韩精品一二三四| 国产麻豆精品视频| 欧美性大战久久久久久久蜜臀| 欧美一区二区三区啪啪| 国产精品拍天天在线| 婷婷夜色潮精品综合在线| 久久99国产精品麻豆| 不卡av在线免费观看| 精品电影一区二区三区| 26uuu色噜噜精品一区| 亚洲在线免费播放| 国产精品一级二级三级| 日韩西西人体444www| 亚洲精选在线视频| 国产成人夜色高潮福利影视| 日韩一区二区三区在线观看| 久久精品夜色噜噜亚洲aⅴ| 亚洲高清免费观看高清完整版在线观看| 国产高清不卡二三区| 色噜噜狠狠色综合中国| 久久久不卡网国产精品二区| 免费三级欧美电影| 欧美性猛交xxxxxx富婆|