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

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

?? ev_waits.c

?? package of develop dns
?? C
字號:
/* * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 1996-1999 by Internet Software Consortium * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *//* ev_waits.c - implement deferred function calls for the eventlib * vix 05dec95 [initial] */#if !defined(LINT) && !defined(CODECENTER)static const char rcsid[] = "$Id: ev_waits.c,v 1.1.2.1.4.1 2004/03/09 08:33:43 marka Exp $";#endif#include "port_before.h"#include "fd_setsize.h"#include <errno.h>#include <isc/eventlib.h>#include <isc/assertions.h>#include "eventlib_p.h"#include "port_after.h"/* Forward. */static void		print_waits(evContext_p *ctx);static evWaitList *	evNewWaitList(evContext_p *);static void		evFreeWaitList(evContext_p *, evWaitList *);static evWaitList *	evGetWaitList(evContext_p *, const void *, int);/* Public. *//* * Enter a new wait function on the queue. */intevWaitFor(evContext opaqueCtx, const void *tag,	  evWaitFunc func, void *uap, evWaitID *id){	evContext_p *ctx = opaqueCtx.opaque;	evWait *new;	evWaitList *wl = evGetWaitList(ctx, tag, 1);	OKNEW(new);	new->func = func;	new->uap = uap;	new->tag = tag;	new->next = NULL;	if (wl->last != NULL)		wl->last->next = new;	else		wl->first = new;	wl->last = new;	if (id != NULL)		id->opaque = new;	if (ctx->debug >= 9)		print_waits(ctx);	return (0);}/* * Mark runnable all waiting functions having a certain tag. */intevDo(evContext opaqueCtx, const void *tag) {	evContext_p *ctx = opaqueCtx.opaque;	evWaitList *wl = evGetWaitList(ctx, tag, 0);	evWait *first;	if (!wl) {		errno = ENOENT;		return (-1);	}	first = wl->first;	INSIST(first != NULL);	if (ctx->waitDone.last != NULL)		ctx->waitDone.last->next = first;	else		ctx->waitDone.first = first;	ctx->waitDone.last = wl->last;	evFreeWaitList(ctx, wl);	return (0);}/* * Remove a waiting (or ready to run) function from the queue. */intevUnwait(evContext opaqueCtx, evWaitID id) {	evContext_p *ctx = opaqueCtx.opaque;	evWait *this, *prev;	evWaitList *wl;	int found = 0;	this = id.opaque;	INSIST(this != NULL);	wl = evGetWaitList(ctx, this->tag, 0);	if (wl != NULL) {		for (prev = NULL, this = wl->first;		     this != NULL;		     prev = this, this = this->next)			if (this == (evWait *)id.opaque) {				found = 1;				if (prev != NULL)					prev->next = this->next;				else					wl->first = this->next;				if (wl->last == this)					wl->last = prev;				if (wl->first == NULL)					evFreeWaitList(ctx, wl);				break;			}	}	if (!found) {		/* Maybe it's done */		for (prev = NULL, this = ctx->waitDone.first;		     this != NULL;		     prev = this, this = this->next)			if (this == (evWait *)id.opaque) {				found = 1;				if (prev != NULL)					prev->next = this->next;				else					ctx->waitDone.first = this->next;				if (ctx->waitDone.last == this)					ctx->waitDone.last = prev;				break;			}	}	if (!found) {		errno = ENOENT;		return (-1);	}	FREE(this);	if (ctx->debug >= 9)		print_waits(ctx);	return (0);}intevDefer(evContext opaqueCtx, evWaitFunc func, void *uap) {	evContext_p *ctx = opaqueCtx.opaque;	evWait *new;	OKNEW(new);	new->func = func;	new->uap = uap;	new->tag = NULL;	new->next = NULL;	if (ctx->waitDone.last != NULL)		ctx->waitDone.last->next = new;	else		ctx->waitDone.first = new;	ctx->waitDone.last = new;	if (ctx->debug >= 9)		print_waits(ctx);	return (0);}/* Private. */static voidprint_waits(evContext_p *ctx) {	evWaitList *wl;	evWait *this;	evPrintf(ctx, 9, "wait waiting:\n");	for (wl = ctx->waitLists; wl != NULL; wl = wl->next) {		INSIST(wl->first != NULL);		evPrintf(ctx, 9, "  tag %p:", wl->first->tag);		for (this = wl->first; this != NULL; this = this->next)			evPrintf(ctx, 9, " %p", this);		evPrintf(ctx, 9, "\n");	}	evPrintf(ctx, 9, "wait done:");	for (this = ctx->waitDone.first; this != NULL; this = this->next)		evPrintf(ctx, 9, " %p", this);	evPrintf(ctx, 9, "\n");}static evWaitList *evNewWaitList(evContext_p *ctx) {	evWaitList *new;	NEW(new);	if (new == NULL)		return (NULL);	new->first = new->last = NULL;	new->prev = NULL;	new->next = ctx->waitLists;	if (new->next != NULL)		new->next->prev = new;	ctx->waitLists = new;	return (new);}static voidevFreeWaitList(evContext_p *ctx, evWaitList *this) {	INSIST(this != NULL);	if (this->prev != NULL)		this->prev->next = this->next;	else		ctx->waitLists = this->next;	if (this->next != NULL)		this->next->prev = this->prev;	FREE(this);}static evWaitList *evGetWaitList(evContext_p *ctx, const void *tag, int should_create) {	evWaitList *this;	for (this = ctx->waitLists; this != NULL; this = this->next) {		if (this->first != NULL && this->first->tag == tag)			break;	}	if (this == NULL && should_create)		this = evNewWaitList(ctx);	return (this);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区成人| 日韩一区二区三区观看| 国产一区视频导航| 天堂精品中文字幕在线| 日韩综合一区二区| 婷婷综合另类小说色区| 日韩影院在线观看| 精品制服美女久久| 国产黄色精品视频| 国产aⅴ综合色| caoporn国产精品| 99视频热这里只有精品免费| 91麻豆蜜桃一区二区三区| 91国产视频在线观看| 欧美另类久久久品| 精品国一区二区三区| 国产欧美一区二区精品性| 中文字幕免费观看一区| 尤物av一区二区| 舔着乳尖日韩一区| 国产一区二区调教| 成人黄色免费短视频| 欧美在线你懂得| 精品日韩99亚洲| 日韩理论在线观看| 视频精品一区二区| 成人亚洲精品久久久久软件| 日本韩国视频一区二区| 正在播放一区二区| 国产欧美一区二区在线| 午夜久久久久久久久| 狠狠网亚洲精品| 色综合天天狠狠| 91精品国产91久久综合桃花| 国产欧美日本一区二区三区| 一区二区三区不卡视频 | 国产高清不卡二三区| 99久久国产免费看| 7777女厕盗摄久久久| 亚洲欧美在线aaa| 美美哒免费高清在线观看视频一区二区 | 丁香一区二区三区| 欧美亚洲图片小说| 国产午夜久久久久| 丝袜美腿一区二区三区| 93久久精品日日躁夜夜躁欧美| 91精品国产色综合久久久蜜香臀| 久久午夜电影网| 亚洲国产日产av| 丁香一区二区三区| 日韩一区二区三区视频在线| 亚洲区小说区图片区qvod| 国产在线精品一区在线观看麻豆| 91麻豆文化传媒在线观看| 精品欧美乱码久久久久久 | 色婷婷av久久久久久久| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩毛片一二三区| 国产剧情一区在线| 欧美久久一区二区| 一区二区免费视频| 99精品久久只有精品| 26uuu色噜噜精品一区二区| 亚洲成人av在线电影| 91毛片在线观看| 国产精品情趣视频| 日韩av中文字幕一区二区| 色噜噜偷拍精品综合在线| 久久亚洲私人国产精品va媚药| 五月天亚洲精品| 欧美日韩精品电影| 亚洲精品乱码久久久久久日本蜜臀| 国产乱国产乱300精品| 精品国产乱码久久久久久免费 | 亚洲成人av一区| 色综合久久中文综合久久97| 国产女主播一区| 国产91精品精华液一区二区三区| 精品1区2区在线观看| 国产一区二区免费看| 久久久精品国产免费观看同学| 九九精品一区二区| 久久噜噜亚洲综合| 国产精品18久久久久久久久| 欧美激情一区二区三区四区| 欧美日韩精品欧美日韩精品| 亚洲高清免费观看| 91精品在线观看入口| 麻豆国产精品视频| 国产午夜亚洲精品午夜鲁丝片| 黑人精品欧美一区二区蜜桃| 国产精品网站在线观看| 91色视频在线| 亚洲成人av电影| 久久夜色精品一区| 99久久精品国产一区| 亚洲一区二区三区美女| 欧美mv日韩mv国产网站app| 国产麻豆成人传媒免费观看| 国产精品国产三级国产a | 天堂久久一区二区三区| 欧美一级夜夜爽| 国产电影一区二区三区| 曰韩精品一区二区| 欧美成人性战久久| jvid福利写真一区二区三区| 婷婷激情综合网| 久久久亚洲欧洲日产国码αv| av资源站一区| 看电视剧不卡顿的网站| 国产精品国产三级国产有无不卡| 欧美电影一区二区| 不卡大黄网站免费看| 麻豆一区二区三区| 亚洲毛片av在线| 久久伊人中文字幕| 欧美男男青年gay1069videost| 国产精一品亚洲二区在线视频| 亚洲一区二区三区不卡国产欧美 | 国产成人一级电影| 亚洲一区二区三区在线看| 国产欧美一区视频| 日韩一区二区三区四区| 欧美性xxxxxx少妇| www.综合网.com| 国产一区二区不卡在线| 午夜精品久久久久久久久久 | 日韩精品一区国产麻豆| 欧美性感一区二区三区| 99久久精品一区| 国产成人欧美日韩在线电影| 福利视频网站一区二区三区| 亚洲国产aⅴ成人精品无吗| 国产欧美精品一区二区色综合朱莉| 欧美日韩美女一区二区| 色激情天天射综合网| 成人免费电影视频| 风间由美中文字幕在线看视频国产欧美 | 91麻豆视频网站| 不卡视频在线看| 国产乱国产乱300精品| 精一区二区三区| 精品一区二区三区欧美| 日韩精品国产精品| 日本成人超碰在线观看| 日韩电影免费在线观看网站| 亚洲激情自拍偷拍| 亚洲一区中文日韩| 亚洲第一久久影院| 亚洲成人动漫在线观看| 亚洲成人动漫一区| 午夜电影网一区| 欧美a一区二区| 六月丁香婷婷色狠狠久久| 日韩avvvv在线播放| 蜜臀精品一区二区三区在线观看 | 韩国女主播成人在线观看| 另类欧美日韩国产在线| 六月丁香婷婷色狠狠久久| 麻豆国产精品官网| 国产一区二区三区国产| 粉嫩aⅴ一区二区三区四区| 成人激情免费电影网址| 色美美综合视频| 欧美一区二区三区视频免费| 日韩你懂的在线播放| 午夜激情一区二区三区| 日本不卡不码高清免费观看| 国内精品伊人久久久久av影院| 风间由美中文字幕在线看视频国产欧美 | 日韩一区二区三免费高清| 精品国产一二三| 国产精品不卡一区二区三区| 亚洲自拍偷拍图区| 美女久久久精品| 成人高清免费观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 经典一区二区三区| av在线播放不卡| 欧美精品一级二级三级| 精品毛片乱码1区2区3区| 欧美国产精品一区| 亚洲一区在线观看网站| 狠狠色丁香婷婷综合久久片| eeuss鲁一区二区三区| 9191久久久久久久久久久| 久久久久久久av麻豆果冻| 一区二区三区精品久久久| 久久91精品久久久久久秒播| 99在线热播精品免费| 在线综合视频播放| 国产精品色呦呦| 日韩中文字幕一区二区三区| 国产精品一级片在线观看| 在线视频一区二区三| 欧美国产乱子伦| 日本aⅴ亚洲精品中文乱码| 成人app软件下载大全免费| 在线播放91灌醉迷j高跟美女| 中文字幕永久在线不卡|