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

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

?? pils.c

?? linux集群服務器軟件代碼包
?? C
?? 第 1 頁 / 共 4 頁
字號:
{	return eifinfo->refcnt;} /* Modify the reference count for this interface */static intIfIncrRefCount(PILInterface*eifinfo, int plusminus){	if(DEBUGPLUGIN) {		PILLog(PIL_DEBUG, "IfIncrRefCount(%d + %d )"		,	eifinfo->refcnt, plusminus);	}	eifinfo->refcnt += plusminus;	if (eifinfo->refcnt <= 0) {		eifinfo->refcnt = 0;		/* Unregister this interface. */		RemoveAPILInterface(eifinfo);		return 0;	}	return eifinfo->refcnt;}#if 0static intPluginRefCount(PILPlugin * pi){	return pi->refcnt;}#endifstatic intPluginIncrRefCount(PILPlugin*pi, int plusminus){	if (DEBUGPLUGIN) {		PILLog(PIL_DEBUG, "PluginIncrRefCount(%d + %d )"		,	pi->refcnt, plusminus);	}	pi->refcnt += plusminus;	if (pi->refcnt <= 0) {		pi->refcnt = 0;		RemoveAPILPlugin(pi);		return 0;	}	return pi->refcnt;}static PILInterface*FindIF(PILPluginUniv* universe, const char *iftype, const char * ifname){	PILInterfaceUniv*	puniv;	PILInterfaceType*	ptype;	if (universe == NULL || (puniv = universe->ifuniv) == NULL	||	(ptype=g_hash_table_lookup(puniv->iftypes, iftype))==NULL){		return NULL;	}	return g_hash_table_lookup(ptype->interfaces, ifname);}PIL_rc		PILIncrIFRefCount(PILPluginUniv* mu,		const char *	interfacetype,		const char *	interfacename,		int	plusminus){	PILInterface*	intf = FindIF(mu, interfacetype, interfacename);	if (intf) {		g_assert(IS_PILINTERFACE(intf));		IfIncrRefCount(intf, plusminus);		return PIL_OK;	}	return PIL_NOPLUGIN;}intPILGetIFRefCount(PILPluginUniv*	mu,		const char *	interfacetype,		const char *	interfacename){	PILInterface*	intf = FindIF(mu, interfacetype, interfacename);	return IfRefCount(intf);}static voidIfForceUnregister(PILInterface *id){	if (DEBUGPLUGIN) {		PILLog(PIL_DEBUG, "IfForceUnRegister(%s)"		,	id->interfacename);	}	RemoveAPILInterface(id);}struct f_e_c_helper {	gboolean(*fun)(PILInterface* clientif, void * passalong);	void*	passalong;};static gboolean IfForEachClientHelper(gpointer key,	gpointer iftype, gpointer helper_v);static gbooleanIfForEachClientHelper(gpointer unused, gpointer iftype, gpointer v){	struct f_e_c_helper*	s = (struct f_e_c_helper*)v;	g_assert(IS_PILINTERFACE((PILInterface*)iftype));	if (DEBUGPLUGIN) {		PILLog(PIL_DEBUG, "IfForEachClientHelper(%s)"		,	((PILInterface*)iftype)->interfacename);	}	return s->fun((PILInterface*)iftype, s->passalong);}static voidIfForEachClientRemove(	PILInterface* mgrif,	gboolean(*f)(PILInterface* clientif, void * passalong),	void* passalong		/* usually PILInterface* */){	PILInterfaceType*	mgrt;	PILInterfaceUniv*	u;	const char *		ifname;	PILInterfaceType*	clientt;	struct f_e_c_helper	h = {f, passalong};			if (mgrif == NULL || (mgrt = mgrif->interfacetype) == NULL	||	(u = mgrt->universe) == NULL	||	(ifname = mgrif->interfacename) == NULL) {		PILLog(PIL_WARN, "bad parameters to IfForEachClientRemove");		return;	}	if ((clientt = g_hash_table_lookup(u->iftypes, ifname)) == NULL) {		if (DEBUGPLUGIN) {			PILLog(PIL_DEBUG			,	"Interface manager [%s/%s] has no clients"			,	PI_IFMANAGER, ifname);		}		return;	};	if (DEBUGPLUGIN) {		PILLog(PIL_DEBUG, "IfForEachClientRemove(%s:%s)"		,	mgrt->typename, clientt->typename);	}	if (clientt->ifmgr_ref != mgrif) {		PILLog(PIL_WARN, "Bad ifmgr_ref ptr in PILInterfaceType");		return;	}	g_hash_table_foreach_remove(clientt->interfaces, IfForEachClientHelper	,	&h);}static PIL_rcPILregister_plugin(PILPlugin* piinfo, const PILPluginOps* commonops){	piinfo->pluginops = commonops;	return PIL_OK;}static PIL_rcPILunregister_plugin(PILPlugin* piinfo){	if (DEBUGPLUGIN) {		PILLog(PIL_DEBUG, "PILunregister_plugin(%s)"		,	piinfo->plugin_name);	}	RemoveAPILPlugin(piinfo);	return PIL_OK;}/* General logging function (not really UPPILS-specific) */static voidPILLog(PILLogLevel priority, const char * format, ...){	va_list		args;	GLogLevelFlags	flags;	switch(priority) {		case PIL_FATAL:	flags = G_LOG_LEVEL_ERROR;			break;		case PIL_CRIT:	flags = G_LOG_LEVEL_CRITICAL;			break;		default:	/* FALL THROUGH... */		case PIL_WARN:	flags = G_LOG_LEVEL_WARNING;			break;		case PIL_INFO:	flags = G_LOG_LEVEL_INFO;			break;		case PIL_DEBUG:	flags = G_LOG_LEVEL_DEBUG;			break;	};	va_start (args, format);	g_logv (G_LOG_DOMAIN, flags, format, args);	va_end (args);}static const char * PIL_strerrmsgs [] ={	"Success",	"Invalid Parameters",	"Bad plugin/interface type",	"Duplicate entry (plugin/interface name/type)",	"Oops happens",	"No such plugin/interface/interface type"};const char *PIL_strerror(PIL_rc rc){	int	irc = (int) rc;	static	char buf[128];	if (irc < 0 || irc >= DIMOF(PIL_strerrmsgs)) {		snprintf(buf, sizeof(buf), "return code %d (?)", irc);		return buf;	}	return PIL_strerrmsgs[irc];}/* * Returns the PATHname of the file containing the requested plugin * This file handles PATH-like semantics from the rootdirlist. * It is also might be the right place to put alias handing in the future... */static char *PILPluginPath(PILPluginUniv* universe, const char * plugintype,	const char *	pluginname){	char * PluginPath = NULL;	char **	spath_component;	for (spath_component = universe->rootdirlist; *spath_component	;	++ spath_component) {		if (PluginPath) {			g_free(PluginPath); PluginPath=NULL;		}			PluginPath = g_strdup_printf("%s%s%s%s%s%s"		,	*spath_component		,	G_DIR_SEPARATOR_S		,	plugintype		,	G_DIR_SEPARATOR_S		,	pluginname		,	PLUGINSUFFIX);		if (DEBUGPLUGIN) {			PILLog(PIL_DEBUG			,	"PILS: Looking for %s/%s => [%s]"			,	plugintype, pluginname, PluginPath);		}		if (PluginExists(PluginPath) == PIL_OK) {			if (DEBUGPLUGIN) {				PILLog(PIL_DEBUG				,	"Plugin path for %s/%s => [%s]"				,	plugintype, pluginname, PluginPath);			}			return PluginPath;		}		/* FIXME:  Put alias file processing here... */	}	/* Can't find 'em all... */	return PluginPath;}static PIL_rcPluginExists(const char * PluginPath){	/* Make sure we can read and execute the plugin file */	/* This test is nice, because dlopen reasons aren't return codes */	if (access(PluginPath, R_OK) != 0) {		if (DEBUGPLUGIN) {			PILLog(PIL_DEBUG, "Plugin file %s does not exist"			,	PluginPath);		}		return PIL_NOPLUGIN;	}	return PIL_OK;}/* Return  PIL_OK if the given  plugin exists */PIL_rcPILPluginExists(PILPluginUniv* piuniv,               const char *    plugintype,               const char *    pluginname){	PIL_rc	rc;	char * path = PILPluginPath(piuniv, plugintype, pluginname);	if (path == NULL) {		return PIL_INVAL;	}	rc = PluginExists(path);	DELETE(path);	return rc;}/* * PILLoadPlugin()	- loads a plugin into memory and calls the * 			initial() entry point in the plugin. * * * Method: * * 	Construct file name of plugin. * 	See if plugin exists.  If not, fail with PIL_NOPLUGIN. * *	Search Universe for plugin type *		If found, search plugin type for pluginname *			if found, fail with PIL_EXIST. *		Otherwise, *			Create new Plugin type structure *	Use lt_dlopen() on plugin to get lt_dlhandle for it. * *	Construct the symbol name of the initialization function. * *	Use lt_dlsym() to find the pointer to the init function. * *	Call the initialization function. */PIL_rcPILLoadPlugin(PILPluginUniv* universe, const char * plugintype,	const char *	pluginname,	void*		plugin_user_data){	PIL_rc	rc;	char * PluginPath;	char * PluginSym;	PILPluginType*	pitype;	PILPlugin*	piinfo;	lt_dlhandle	dlhand;	PILPluginInitFun	initfun;	PluginPath = PILPluginPath(universe, plugintype, pluginname);	if ((rc=PluginExists(PluginPath)) != PIL_OK) {		DELETE(PluginPath);		return rc;	}	if((pitype=g_hash_table_lookup(universe->PluginTypes, plugintype))	!= NULL) {		if ((piinfo = g_hash_table_lookup		(	pitype->Plugins, pluginname)) != NULL) {			if (DEBUGPLUGIN) {				PILLog(PIL_DEBUG, "Plugin %s already loaded"				,	PluginPath);			}			DELETE(PluginPath);			return PIL_EXIST;		}		if (DEBUGPLUGIN) {			PILLog(PIL_DEBUG, "PluginType %s already present"			,	plugintype);		}	}else{		if (DEBUGPLUGIN) {			PILLog(PIL_DEBUG, "Creating PluginType for %s"			,	plugintype);		}		/* Create a new PILPluginType object */		pitype = NewPILPluginType(universe, plugintype);	}	g_assert(pitype != NULL);	/*	 * At this point, we have a PILPluginType object and our	 * plugin name is not listed in it.	 */	dlhand = lt_dlopen(PluginPath);	if (!dlhand) {		PILLog(PIL_WARN		,	"lt_dlopen() failure on plugin %s/%s [%s]."		" Reason: [%s]"		,	plugintype, pluginname		,	PluginPath		,	lt_dlerror());		DELETE(PluginPath);		return PIL_NOPLUGIN;	}	DELETE(PluginPath);	/* Construct the magic init function symbol name */	PluginSym = g_strdup_printf(PIL_FUNC_FMT	,	plugintype, pluginname);	if (DEBUGPLUGIN) {		PILLog(PIL_DEBUG, "Plugin %s/%s  init function: %s"		,	plugintype, pluginname		,	PluginSym);	}	initfun = lt_dlsym(dlhand, PluginSym);	if (initfun == NULL) {		PILLog(PIL_WARN		,	"Plugin %s/%s init function (%s) not found"		,	plugintype, pluginname, PluginSym);		DELETE(PluginSym);		lt_dlclose(dlhand); dlhand=NULL;		DelPILPluginType(pitype);		return PIL_NOPLUGIN;	}	DELETE(PluginSym);	/*	 *	Construct the new PILPlugin object	 */	piinfo = NewPILPlugin(pitype, pluginname, dlhand, initfun);	g_assert(piinfo != NULL);	g_hash_table_insert(pitype->Plugins, g_strdup(piinfo->plugin_name), piinfo);	if (DEBUGPLUGIN) {		PILLog(PIL_DEBUG, "Plugin %s/%s loaded and constructed."		,	plugintype, pluginname);	}	if (DEBUGPLUGIN) {		PILLog(PIL_DEBUG, "Calling init function in plugin %s/%s."		,	plugintype, pluginname);	}	/* Save away the user_data for later */	piinfo->ud_plugin = plugin_user_data;	/* initfun is allowed to change ud_plugin if they want */	initfun(piinfo, universe->imports, plugin_user_data);	return PIL_OK;}/*PILLoadPlugin*/#define REPORTERR(msg)	PILLog(PIL_CRIT, "%s", msg)/* *	Register an interface. * *	This function is exported to plugins for their use. */static PIL_rcPILRegisterInterface(PILPlugin* piinfo,	const char *	interfacetype	/* Type of interface	*/,	const char *	interfacename	/* Name of interface	*/,	void*		Ops		/* Info (functions) exported					   by this interface	*/,	PILInterfaceFun	close_func	/* Close function for interface */,	PILInterface**	interfaceid	/* Interface id 	(OP)	*/,	void**		Imports		/* Functions imported by					 this interface	(OP)	*/,	void*		ud_interface	/* Optional user_data */){	PILPluginUniv*	piuniv;	/* Universe this plugin is in */	PILPluginType*	pitype;	/* Type of this plugin */	PILInterfaceUniv*	ifuniv;	/* Universe this interface is in */	PILInterfaceType*iftype;		/* Type of this interface */	PILInterface*	ifinfo;		/* Info about this Interface */	PILInterfaceType*ifmgrtype;	/* PILInterfaceType for PI_IFMANAGER */	PILInterface*	ifmgrinfo;	/* Interf info for "interfacetype" */	const PILInterfaceOps* ifops;	/* Ops vector for InterfaceManager */					/* of type "interfacetype" */	PIL_rc		rc;	if (	 piinfo == NULL	||	(pitype = piinfo->plugintype)	== NULL	||	(piuniv = pitype->piuniv)	== NULL	||	(ifuniv = piuniv->ifuniv)	== NULL	||	ifuniv->iftypes			== NULL	) {		REPORTERR("bad parameters to PILRegisterInterface");		return PIL_INVAL;	}	/* Now we have lots of info, but not quite enough... */	if ((iftype = g_hash_table_lookup(ifuniv->iftypes, interfacetype))	==	NULL) {		/* Try to autoload the needed interface handler */		rc = PILLoadPlugin(piuniv, PI_IFMANAGER, interfacetype, NULL);		/* See if the interface handler loaded like we expect */		if ((iftype = g_hash_table_lookup(ifuniv->iftypes		,	interfacetype)) ==	NULL) {			return PIL_BADTYPE;		}	}	if ((ifinfo = g_hash_table_lookup(iftype->interfaces, interfacename))	!=	NULL) {		g_warning("Attempt to register duplicate interface: %s/%s"		,	interfacetype, interfacename);		return PIL_EXIST;	}	/*	 * OK...  Now we know it is valid, and isn't registered...	 * Let's locate the InterfaceManager registrar for this type	 */	if ((ifmgrtype = g_hash_table_lookup(ifuniv->iftypes, PI_IFMANAGER))	==	NULL) {		REPORTERR("No " PI_IFMANAGER " type!");		return PIL_OOPS;	}	if ((ifmgrinfo = g_hash_table_lookup(ifmgrtype->interfaces	,	interfacetype)) == NULL) {		PILLog(PIL_CRIT		,	"No interface manager for given type (%s) !"		,	interfacetype);		return PIL_BADTYPE;	}	ifops = ifmgrinfo->exports;	/* Now we have all the information anyone could possibly want ;-) */	ifinfo = NewPILInterface(iftype, interfacename, Ops	,	close_func, ud_interface, piinfo);	g_assert(ifmgrinfo == ifinfo->ifmanager);	*interfaceid = ifinfo;	/* Call the registration function for our interface type */	rc = ifops->RegisterInterface(ifinfo, Imports);	/* Increment reference count of interface manager */	IfIncrRefCount(ifmgrinfo, 1);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品国产三级国产a久久| 免费精品99久久国产综合精品| 日韩一区二区三| 色久综合一二码| 国产精品一二一区| 美国十次了思思久久精品导航| |精品福利一区二区三区| 国产日韩欧美在线一区| 日韩欧美一区在线| 欧美日韩中文字幕一区| 欧美日韩一级二级三级| 欧美年轻男男videosbes| 在线观看日韩精品| 日本电影亚洲天堂一区| 国产成人三级在线观看| 国产高清久久久| 粉嫩蜜臀av国产精品网站| 国产做a爰片久久毛片| 蜜臀国产一区二区三区在线播放| 亚洲一区二区三区在线| 亚洲午夜视频在线观看| 亚洲成人综合在线| 午夜久久久久久久久久一区二区| 亚洲高清中文字幕| 一区二区三区免费网站| 亚洲一区二区三区在线播放| 午夜精品久久久久久久蜜桃app| 亚洲欧洲制服丝袜| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品乱码久久久久久| 国产精品嫩草影院av蜜臀| 国产日产欧美精品一区二区三区| 国产日韩精品一区二区三区在线| 中文字幕精品一区| 国产午夜精品久久久久久久| 欧美国产精品中文字幕| 欧美精品一区二区在线观看| 久久免费电影网| 国产精品灌醉下药二区| 依依成人精品视频| 天堂精品中文字幕在线| 国产91丝袜在线播放| 91豆麻精品91久久久久久| 欧美一级在线观看| 国产精品女同互慰在线看| 国产精品久久久久精k8| 亚洲麻豆国产自偷在线| 免费在线观看不卡| 国产69精品一区二区亚洲孕妇| 国产成人自拍网| 日韩精品一区二区在线观看| 国产日韩欧美制服另类| 午夜精品影院在线观看| av一本久道久久综合久久鬼色| 色婷婷久久久综合中文字幕 | 99久久伊人网影院| 色婷婷精品大在线视频| 欧美一区二区三区精品| 国产精品乱码一区二三区小蝌蚪| 国产精品国模大尺度视频| 日韩成人免费在线| 欧美丝袜自拍制服另类| 精品国产一区二区三区久久久蜜月 | 国产传媒一区在线| 欧美色男人天堂| 国产三级久久久| 日韩黄色片在线观看| 北条麻妃一区二区三区| 久久影院午夜论| 视频在线在亚洲| 欧洲一区在线电影| 国产欧美一区二区在线观看| 亚洲大片在线观看| 91久久香蕉国产日韩欧美9色| 欧美精品一区二区三区蜜臀| 麻豆免费精品视频| 欧美日韩精品一区视频| 一区二区三区视频在线看| 成人sese在线| 亚洲精品在线观| 久久99精品久久久久久| 26uuuu精品一区二区| 国内精品不卡在线| 日韩美一区二区三区| 亚洲专区一二三| 欧美性大战久久| 五月激情六月综合| 欧美成人vps| 国产一区二区美女诱惑| 欧美一级日韩一级| 亚洲无人区一区| 久久这里只有精品首页| 色女孩综合影院| 一区二区免费在线| 91精品国产综合久久精品麻豆| 蜜臀av一区二区| 久久久影视传媒| 91丨九色丨国产丨porny| 一区二区三区欧美在线观看| 欧美日韩日日骚| 国内精品国产成人国产三级粉色 | 欧美一区二区三区四区在线观看| 亚洲资源在线观看| 精品国产一区二区三区久久久蜜月 | 日韩精品亚洲一区二区三区免费| 色哟哟国产精品| 性做久久久久久免费观看欧美| 日韩美女主播在线视频一区二区三区| 日本不卡123| 久久精品视频一区二区三区| 99这里只有精品| 亚洲国产你懂的| 精品国产乱码久久久久久影片| 国产成人精品一区二区三区四区 | 91精品福利在线一区二区三区 | 亚洲精品在线免费播放| 在线中文字幕一区| 粉嫩嫩av羞羞动漫久久久| 日韩理论电影院| 久久久久99精品一区| 波多野结衣精品在线| 免费观看在线色综合| 夜夜嗨av一区二区三区中文字幕 | 高清在线成人网| 日韩精品免费视频人成| 一区二区三区蜜桃| 久久综合国产精品| 日韩一级在线观看| 欧美日韩亚洲综合一区二区三区| 成人av先锋影音| 国内精品不卡在线| 国产自产2019最新不卡| 青青草精品视频| 首页欧美精品中文字幕| 一区二区三区四区在线播放 | 欧美日韩一级二级| 色偷偷成人一区二区三区91| 国产精品18久久久久久久网站| 日韩二区三区在线观看| 亚洲国产一区二区三区 | 免播放器亚洲一区| 国产精品国产自产拍在线| 1区2区3区精品视频| 国产欧美日韩麻豆91| 精品国产电影一区二区| 91精品国产综合久久精品app| 欧美在线视频你懂得| 成人免费看的视频| 成人av电影在线网| 色婷婷久久久亚洲一区二区三区| 色综合中文字幕国产 | 不卡的av电影| 91美女视频网站| 在线观看视频91| 91精品国产综合久久精品| 精品国精品自拍自在线| 精品日韩av一区二区| 91精品国产丝袜白色高跟鞋| 欧美成人精品1314www| 久久精品视频一区二区| 国产欧美视频一区二区| 最新中文字幕一区二区三区| 国产精品国产馆在线真实露脸| 亚洲天堂中文字幕| 日韩二区三区在线观看| 国产高清一区日本| 欧美色电影在线| 久久精品亚洲精品国产欧美| 国产精品福利一区二区三区| 一区免费观看视频| 一区二区日韩av| 另类成人小视频在线| 色婷婷综合久久久久中文| 宅男在线国产精品| 亚洲人成网站色在线观看| 人禽交欧美网站| 久久99精品久久久| 91在线免费视频观看| 日韩欧美综合在线| 久久免费精品国产久精品久久久久| 亚洲日本中文字幕区| 国产专区综合网| 欧美精品视频www在线观看| 精品国产乱码久久久久久牛牛| 亚洲大片在线观看| 丁香婷婷综合激情五月色| 欧美艳星brazzers| 亚洲天堂精品视频| 国产乱色国产精品免费视频| 色综合中文字幕国产 | 国产成人丝袜美腿| 成人国产精品免费| 欧美xxxxxxxxx| 亚洲无线码一区二区三区| av资源站一区| 久久品道一品道久久精品| 亚洲成av人片在线| 久久久久国色av免费看影院| 亚洲在线观看免费视频| 一本色道亚洲精品aⅴ|