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

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

?? ip_vs_sched.c

?? 優龍2410linux2.6.8內核源代碼
?? C
字號:
/* * IPVS         An implementation of the IP virtual server support for the *              LINUX operating system.  IPVS is now implemented as a module *              over the Netfilter framework. IPVS can be used to build a *              high-performance and highly available server based on a *              cluster of servers. * * Version:     $Id: ip_vs_sched.c,v 1.13 2003/05/10 03:05:23 wensong Exp $ * * Authors:     Wensong Zhang <wensong@linuxvirtualserver.org> *              Peter Kese <peter.kese@ijs.si> * *              This program is free software; you can redistribute it and/or *              modify it under the terms of the GNU General Public License *              as published by the Free Software Foundation; either version *              2 of the License, or (at your option) any later version. * * Changes: * */#include <linux/module.h>#include <linux/sched.h>#include <linux/spinlock.h>#include <asm/string.h>#include <linux/kmod.h>#include <net/ip_vs.h>/* *  IPVS scheduler list */static LIST_HEAD(ip_vs_schedulers);/* lock for service table */static rwlock_t __ip_vs_sched_lock = RW_LOCK_UNLOCKED;/* *  Bind a service with a scheduler */int ip_vs_bind_scheduler(struct ip_vs_service *svc,			 struct ip_vs_scheduler *scheduler){	int ret;	if (svc == NULL) {		IP_VS_ERR("ip_vs_bind_scheduler(): svc arg NULL\n");		return -EINVAL;	}	if (scheduler == NULL) {		IP_VS_ERR("ip_vs_bind_scheduler(): scheduler arg NULL\n");		return -EINVAL;	}	svc->scheduler = scheduler;	if (scheduler->init_service) {		ret = scheduler->init_service(svc);		if (ret) {			IP_VS_ERR("ip_vs_bind_scheduler(): init error\n");			return ret;		}	}	return 0;}/* *  Unbind a service with its scheduler */int ip_vs_unbind_scheduler(struct ip_vs_service *svc){	struct ip_vs_scheduler *sched;	if (svc == NULL) {		IP_VS_ERR("ip_vs_unbind_scheduler(): svc arg NULL\n");		return -EINVAL;	}	sched = svc->scheduler;	if (sched == NULL) {		IP_VS_ERR("ip_vs_unbind_scheduler(): svc isn't bound\n");		return -EINVAL;	}	if (sched->done_service) {		if (sched->done_service(svc) != 0) {			IP_VS_ERR("ip_vs_unbind_scheduler(): done error\n");			return -EINVAL;		}	}	svc->scheduler = NULL;	return 0;}/* *  Get scheduler in the scheduler list by name */static struct ip_vs_scheduler *ip_vs_sched_getbyname(const char *sched_name){	struct ip_vs_scheduler *sched;	IP_VS_DBG(2, "ip_vs_sched_getbyname(): sched_name \"%s\"\n",		  sched_name);	read_lock_bh(&__ip_vs_sched_lock);	list_for_each_entry(sched, &ip_vs_schedulers, n_list) {		/*		 * Test and get the modules atomically		 */		if (sched->module && !try_module_get(sched->module)) {			/*			 * This scheduler is just deleted			 */			continue;		}		if (strcmp(sched_name, sched->name)==0) {			/* HIT */			read_unlock_bh(&__ip_vs_sched_lock);			return sched;		}		if (sched->module)			module_put(sched->module);	}	read_unlock_bh(&__ip_vs_sched_lock);	return NULL;}/* *  Lookup scheduler and try to load it if it doesn't exist */struct ip_vs_scheduler *ip_vs_scheduler_get(const char *sched_name){	struct ip_vs_scheduler *sched;	/*	 *  Search for the scheduler by sched_name	 */	sched = ip_vs_sched_getbyname(sched_name);	/*	 *  If scheduler not found, load the module and search again	 */	if (sched == NULL) {		request_module("ip_vs_%s", sched_name);		sched = ip_vs_sched_getbyname(sched_name);	}	return sched;}void ip_vs_scheduler_put(struct ip_vs_scheduler *scheduler){	if (scheduler->module)		module_put(scheduler->module);}/* *  Register a scheduler in the scheduler list */int register_ip_vs_scheduler(struct ip_vs_scheduler *scheduler){	struct ip_vs_scheduler *sched;	if (!scheduler) {		IP_VS_ERR("register_ip_vs_scheduler(): NULL arg\n");		return -EINVAL;	}	if (!scheduler->name) {		IP_VS_ERR("register_ip_vs_scheduler(): NULL scheduler_name\n");		return -EINVAL;	}	/* increase the module use count */	ip_vs_use_count_inc();	/*	 *  Make sure that the scheduler with this name doesn't exist	 *  in the scheduler list.	 */	sched = ip_vs_sched_getbyname(scheduler->name);	if (sched) {		ip_vs_scheduler_put(sched);		ip_vs_use_count_dec();		IP_VS_ERR("register_ip_vs_scheduler(): [%s] scheduler "			  "already existed in the system\n", scheduler->name);		return -EINVAL;	}	write_lock_bh(&__ip_vs_sched_lock);	if (scheduler->n_list.next != &scheduler->n_list) {		write_unlock_bh(&__ip_vs_sched_lock);		ip_vs_use_count_dec();		IP_VS_ERR("register_ip_vs_scheduler(): [%s] scheduler "			  "already linked\n", scheduler->name);		return -EINVAL;	}	/*	 *	Add it into the d-linked scheduler list	 */	list_add(&scheduler->n_list, &ip_vs_schedulers);	write_unlock_bh(&__ip_vs_sched_lock);	IP_VS_INFO("[%s] scheduler registered.\n", scheduler->name);	return 0;}/* *  Unregister a scheduler from the scheduler list */int unregister_ip_vs_scheduler(struct ip_vs_scheduler *scheduler){	if (!scheduler) {		IP_VS_ERR( "unregister_ip_vs_scheduler(): NULL arg\n");		return -EINVAL;	}	write_lock_bh(&__ip_vs_sched_lock);	if (scheduler->n_list.next == &scheduler->n_list) {		write_unlock_bh(&__ip_vs_sched_lock);		IP_VS_ERR("unregister_ip_vs_scheduler(): [%s] scheduler "			  "is not in the list. failed\n", scheduler->name);		return -EINVAL;	}	/*	 *	Remove it from the d-linked scheduler list	 */	list_del(&scheduler->n_list);	write_unlock_bh(&__ip_vs_sched_lock);	/* decrease the module use count */	ip_vs_use_count_dec();	IP_VS_INFO("[%s] scheduler unregistered.\n", scheduler->name);	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内一区二区视频| 国产亚洲视频系列| 久久久久久影视| 一区二区国产盗摄色噜噜| 国产一区999| 日韩一区二区影院| 亚洲一区二区三区四区不卡| 国产99久久久国产精品潘金 | 日本女人一区二区三区| 成人激情图片网| 2020日本不卡一区二区视频| 午夜精品123| 欧美三级视频在线| 亚洲视频免费在线观看| 成人性生交大合| 精品国产一区二区三区av性色| 午夜视频一区二区| 欧美性猛交xxxxxx富婆| 日韩理论片网站| gogo大胆日本视频一区| 国产精品无码永久免费888| 韩国毛片一区二区三区| 日韩精品中文字幕在线一区| 亚洲成人在线网站| 欧美伦理电影网| 无吗不卡中文字幕| 欧美一区二区视频免费观看| 亚洲专区一二三| 欧美亚洲日本一区| 亚洲va欧美va人人爽| 欧美妇女性影城| 日韩av一区二区三区| 欧美欧美欧美欧美首页| 日韩成人免费看| 精品国产一区二区三区久久久蜜月 | 欧美一区二区三区视频在线观看| 亚洲国产精品影院| 欧美日韩精品欧美日韩精品一| 亚洲午夜久久久久久久久久久 | 91视频com| 一区二区三区日韩| 欧美在线观看视频一区二区三区 | 国产v日产∨综合v精品视频| 久久久青草青青国产亚洲免观| 国产成人精品综合在线观看 | 色吊一区二区三区| 亚洲午夜一二三区视频| 337p亚洲精品色噜噜噜| 韩国理伦片一区二区三区在线播放| 久久综合资源网| 成人av一区二区三区| 亚洲美女淫视频| 91麻豆精品国产91久久久更新时间| 青青草一区二区三区| 久久久一区二区三区捆绑**| 99久久伊人精品| 亚洲成a人片在线不卡一二三区 | 久久精品国产精品亚洲综合| 久久日一线二线三线suv| 国产激情偷乱视频一区二区三区| 日韩一区中文字幕| 91精品国产欧美一区二区18| 国产成人综合视频| 亚洲国产成人av| 国产日韩欧美综合在线| 欧美性受极品xxxx喷水| 国产在线麻豆精品观看| 亚洲激情自拍视频| 精品久久五月天| 在线一区二区三区| 国产91在线|亚洲| 日韩激情视频在线观看| 一区在线播放视频| 日韩三级在线观看| 91丨porny丨在线| 韩国av一区二区三区四区 | 国产精品成人网| 日韩一级二级三级精品视频| 99久久婷婷国产综合精品电影| 青青草精品视频| 亚洲综合一区二区三区| 久久久国产精品不卡| 91精品一区二区三区久久久久久 | 亚洲一线二线三线久久久| 久久久美女毛片| 日韩一级成人av| 欧美精品久久99| 在线观看网站黄不卡| 99九九99九九九视频精品| 国产一区在线视频| 日本vs亚洲vs韩国一区三区| 一区二区三区四区不卡在线 | 久久精品人人做人人爽人人| 欧美二区在线观看| 欧洲日韩一区二区三区| 成人av手机在线观看| 国产suv一区二区三区88区| 久久精品国产网站| 五月天激情小说综合| 亚洲国产中文字幕| 一级中文字幕一区二区| 亚洲蜜臀av乱码久久精品| 国产精品毛片久久久久久久| 久久久精品人体av艺术| xnxx国产精品| 久久久久久日产精品| 精品国产在天天线2019| 精品国产一二三区| 精品91自产拍在线观看一区| 欧美刺激脚交jootjob| 欧美va亚洲va国产综合| 精品久久人人做人人爽| 精品久久久网站| 久久精品亚洲精品国产欧美kt∨| 欧美精品一区二区三区在线| 久久综合久久综合久久| 亚洲精品一线二线三线| 久久久久久一二三区| 国产欧美日韩在线| 欧美国产成人精品| 成人欧美一区二区三区| 中文字幕亚洲一区二区va在线| 综合av第一页| 亚洲一区二区在线播放相泽 | 亚洲摸摸操操av| 亚洲在线视频网站| 三级成人在线视频| 久久99精品国产麻豆婷婷 | 欧美日韩一区二区三区不卡| 欧美特级限制片免费在线观看| 欧美精品aⅴ在线视频| 精品粉嫩aⅴ一区二区三区四区| 久久久亚洲高清| 亚洲欧美视频在线观看| 亚洲精品自拍动漫在线| 偷拍亚洲欧洲综合| 久久国内精品视频| 99久久99久久久精品齐齐| 欧美日韩高清一区二区不卡| 欧美成人r级一区二区三区| 中文在线一区二区| 亚洲综合色视频| 国产乱子轮精品视频| 91啦中文在线观看| 日韩亚洲电影在线| 国产精品久99| 美日韩一区二区| heyzo一本久久综合| 制服丝袜亚洲色图| 国产精品国产三级国产普通话99| 亚洲福利国产精品| 国产超碰在线一区| 777a∨成人精品桃花网| 国产精品久久久久久久裸模| 亚瑟在线精品视频| 成人av免费网站| 欧美一区二区黄| 亚洲精品水蜜桃| 国产一区二区在线视频| 欧美日韩不卡一区| 一区视频在线播放| 国产麻豆精品久久一二三| 欧美日韩精品福利| 亚洲色图视频网| 国产一区视频网站| 91精品国产色综合久久不卡蜜臀| 国产精品日产欧美久久久久| 日韩在线卡一卡二| 色94色欧美sute亚洲线路一久| 精品国产免费一区二区三区四区| 夜夜夜精品看看| 99在线热播精品免费| 久久色在线观看| 美女久久久精品| 欧美精品视频www在线观看| 亚洲乱码中文字幕| 北条麻妃国产九九精品视频| 日韩精品一区二| 日av在线不卡| 91精品国产综合久久精品| 亚洲午夜在线电影| 91激情在线视频| 亚洲男同性视频| 91老司机福利 在线| 国产精品视频在线看| 国产丶欧美丶日本不卡视频| 精品粉嫩aⅴ一区二区三区四区| 石原莉奈在线亚洲二区| 欧美日韩国产精选| 午夜精品成人在线视频| 欧美日韩免费观看一区三区| 一卡二卡三卡日韩欧美| 欧美亚洲国产一卡| 亚洲一区在线播放| 欧美日韩国产高清一区二区 | 8v天堂国产在线一区二区| 亚洲国产一区二区在线播放| 欧美在线制服丝袜| 五月天欧美精品| 91精品国产福利在线观看|