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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? myqueue.h

?? ser作為一個(gè)高效、高度可配置的simple服務(wù)器
?? H
?? 第 1 頁 / 共 2 頁
字號(hào):
/* * Copyright (c) 1991, 1993 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	@(#)queue.h	8.5 (Berkeley) 8/20/94 * $FreeBSD: src/sys/sys/queue.h,v 1.54 2002/08/05 05:18:43 alfred Exp $ */#ifndef _SYS_QUEUE_H_#define	_SYS_QUEUE_H_#include <sys/cdefs.h>/* * This file defines four types of data structures: singly-linked lists, * singly-linked tail queues, lists and tail queues. * * A singly-linked list is headed by a single forward pointer. The elements * are singly linked for minimum space and pointer manipulation overhead at * the expense of O(n) removal for arbitrary elements. New elements can be * added to the list after an existing element or at the head of the list. * Elements being removed from the head of the list should use the explicit * macro for this purpose for optimum efficiency. A singly-linked list may * only be traversed in the forward direction.  Singly-linked lists are ideal * for applications with large datasets and few or no removals or for * implementing a LIFO queue. * * A singly-linked tail queue is headed by a pair of pointers, one to the * head of the list and the other to the tail of the list. The elements are * singly linked for minimum space and pointer manipulation overhead at the * expense of O(n) removal for arbitrary elements. New elements can be added * to the list after an existing element, at the head of the list, or at the * end of the list. Elements being removed from the head of the tail queue * should use the explicit macro for this purpose for optimum efficiency. * A singly-linked tail queue may only be traversed in the forward direction. * Singly-linked tail queues are ideal for applications with large datasets * and few or no removals or for implementing a FIFO queue. * * A list is headed by a single forward pointer (or an array of forward * pointers for a hash table header). The elements are doubly linked * so that an arbitrary element can be removed without a need to * traverse the list. New elements can be added to the list before * or after an existing element or at the head of the list. A list * may only be traversed in the forward direction. * * A tail queue is headed by a pair of pointers, one to the head of the * list and the other to the tail of the list. The elements are doubly * linked so that an arbitrary element can be removed without a need to * traverse the list. New elements can be added to the list before or * after an existing element, at the head of the list, or at the end of * the list. A tail queue may be traversed in either direction. * * For details on the use of these macros, see the queue(3) manual page. * * *			SLIST	LIST	STAILQ	TAILQ * _HEAD		+	+	+	+ * _HEAD_INITIALIZER	+	+	+	+ * _ENTRY		+	+	+	+ * _INIT		+	+	+	+ * _EMPTY		+	+	+	+ * _FIRST		+	+	+	+ * _NEXT		+	+	+	+ * _PREV		-	-	-	+ * _LAST		-	-	+	+ * _FOREACH		+	+	+	+ * _FOREACH_REVERSE	-	-	-	+ * _INSERT_HEAD		+	+	+	+ * _INSERT_BEFORE	-	+	-	+ * _INSERT_AFTER	+	+	+	+ * _INSERT_TAIL		-	-	+	+ * _CONCAT		-	-	+	+ * _REMOVE_HEAD		+	-	+	- * _REMOVE		+	+	+	+ * */#define QUEUE_MACRO_DEBUG 0#if QUEUE_MACRO_DEBUG/* Store the last 2 places the queue element or head was altered */struct qm_trace {	char * lastfile;	int lastline;	char * prevfile;	int prevline;};#define TRACEBUF	struct qm_trace trace;#define TRASHIT(x)	do {(x) = (void *)-1;} while (0)#define QMD_TRACE_HEAD(head) do {					\	(head)->trace.prevline = (head)->trace.lastline;		\	(head)->trace.prevfile = (head)->trace.lastfile;		\	(head)->trace.lastline = __LINE__;				\	(head)->trace.lastfile = __FILE__;				\} while (0)#define QMD_TRACE_ELEM(elem) do {					\	(elem)->trace.prevline = (elem)->trace.lastline;		\	(elem)->trace.prevfile = (elem)->trace.lastfile;		\	(elem)->trace.lastline = __LINE__;				\	(elem)->trace.lastfile = __FILE__;				\} while (0)#else#define QMD_TRACE_ELEM(elem)#define QMD_TRACE_HEAD(head)#define TRACEBUF#define TRASHIT(x)#endif	/* QUEUE_MACRO_DEBUG *//* * Singly-linked List declarations. */#define	SLIST_HEAD(name, type)						\struct name {								\	struct type *slh_first;	/* first element */			\}#define	SLIST_HEAD_INITIALIZER(head)					\	{ NULL } #define	SLIST_ENTRY(type)						\struct {								\	struct type *sle_next;	/* next element */			\} /* * Singly-linked List functions. */#define	SLIST_EMPTY(head)	((head)->slh_first == NULL)#define	SLIST_FIRST(head)	((head)->slh_first)#define	SLIST_FOREACH(var, head, field)					\	for ((var) = SLIST_FIRST((head));				\	    (var);							\	    (var) = SLIST_NEXT((var), field))#define SLIST_FOREACH_PREVPTR(var, varp, head, field)			\	for ((varp) = &SLIST_FIRST((head));				\	    ((var) = *(varp)) != NULL;					\	    (varp) = &SLIST_NEXT((var), field))#define	SLIST_INIT(head) do {						\	SLIST_FIRST((head)) = NULL;					\} while (0)#define	SLIST_INSERT_AFTER(slistelm, elm, field) do {			\	SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field);	\	SLIST_NEXT((slistelm), field) = (elm);				\} while (0)#define	SLIST_INSERT_HEAD(head, elm, field) do {			\	SLIST_NEXT((elm), field) = SLIST_FIRST((head));			\	SLIST_FIRST((head)) = (elm);					\} while (0)#define	SLIST_NEXT(elm, field)	((elm)->field.sle_next)#define	SLIST_REMOVE(head, elm, type, field) do {			\	if (SLIST_FIRST((head)) == (elm)) {				\		SLIST_REMOVE_HEAD((head), field);			\	}								\	else {								\		struct type *curelm = SLIST_FIRST((head));		\		while (SLIST_NEXT(curelm, field) != (elm))		\			curelm = SLIST_NEXT(curelm, field);		\		SLIST_NEXT(curelm, field) =				\		    SLIST_NEXT(SLIST_NEXT(curelm, field), field);	\	}								\} while (0)#define	SLIST_REMOVE_HEAD(head, field) do {				\	SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field);	\} while (0)/* * Singly-linked Tail queue declarations. */#define	STAILQ_HEAD(name, type)						\struct name {								\	struct type *stqh_first;/* first element */			\	struct type **stqh_last;/* addr of last next element */		\}#define	STAILQ_HEAD_INITIALIZER(head)					\	{ NULL, &(head).stqh_first }#define	STAILQ_ENTRY(type)						\struct {								\	struct type *stqe_next;	/* next element */			\}/* * Singly-linked Tail queue functions. */#define	STAILQ_CONCAT(head1, head2) do {				\	if (!STAILQ_EMPTY((head2))) {					\		*(head1)->stqh_last = (head2)->stqh_first;		\		(head1)->stqh_last = (head2)->stqh_last;		\		STAILQ_INIT((head2));					\	}								\} while (0)#define	STAILQ_EMPTY(head)	((head)->stqh_first == NULL)#define	STAILQ_FIRST(head)	((head)->stqh_first)#define	STAILQ_FOREACH(var, head, field)				\	for((var) = STAILQ_FIRST((head));				\	   (var);							\	   (var) = STAILQ_NEXT((var), field))#define	STAILQ_INIT(head) do {						\	STAILQ_FIRST((head)) = NULL;					\	(head)->stqh_last = &STAILQ_FIRST((head));			\} while (0)#define	STAILQ_INSERT_AFTER(head, tqelm, elm, field) do {		\	if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\		(head)->stqh_last = &STAILQ_NEXT((elm), field);		\	STAILQ_NEXT((tqelm), field) = (elm);				\} while (0)#define	STAILQ_INSERT_HEAD(head, elm, field) do {			\	if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL)	\		(head)->stqh_last = &STAILQ_NEXT((elm), field);		\	STAILQ_FIRST((head)) = (elm);					\} while (0)#define	STAILQ_INSERT_TAIL(head, elm, field) do {			\	STAILQ_NEXT((elm), field) = NULL;				\	*(head)->stqh_last = (elm);					\	(head)->stqh_last = &STAILQ_NEXT((elm), field);			\} while (0)#define	STAILQ_LAST(head, type, field)					\

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产91热久久久做人人| 亚洲视频中文字幕| 日韩亚洲欧美综合| 欧美日韩免费电影| 欧美麻豆精品久久久久久| 欧美在线不卡一区| 在线观看视频一区二区| 在线观看国产91| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 91在线国产福利| 日本韩国欧美一区二区三区| 91日韩在线专区| 欧美性猛交一区二区三区精品| 在线观看一区二区视频| 欧美日韩精品福利| 精品久久五月天| 久久综合色天天久久综合图片| 国产亚洲精品超碰| 国产精品福利av| 亚洲线精品一区二区三区 | 亚洲午夜久久久久久久久电影院| 亚洲精品欧美激情| 日韩国产精品久久久| 久久精品免费观看| 丰满少妇久久久久久久| 色呦呦一区二区三区| 制服丝袜亚洲播放| 国产亚洲一二三区| 亚洲综合色网站| 激情综合色播激情啊| av资源网一区| 制服丝袜亚洲播放| 国产精品麻豆欧美日韩ww| 亚洲伊人伊色伊影伊综合网| 蜜桃视频一区二区三区在线观看| 粉嫩欧美一区二区三区高清影视| 色综合久久天天| 日韩一区二区三区av| 亚洲精品在线一区二区| 国产精品免费丝袜| 日韩—二三区免费观看av| 国产一区二区三区观看| av在线一区二区三区| 91精品久久久久久久91蜜桃| 久久久精品免费网站| 亚洲国产欧美日韩另类综合| 精品一区二区三区日韩| 色天天综合久久久久综合片| 91精品欧美久久久久久动漫| 国产精品丝袜一区| 水野朝阳av一区二区三区| 国产成人精品一区二| 欧美日韩视频在线一区二区| 国产女主播视频一区二区| 亚洲成a天堂v人片| 成人精品国产免费网站| 欧美卡1卡2卡| 综合精品久久久| 国产乱码精品一区二区三区av| 精品1区2区3区| 国产精品嫩草久久久久| 激情六月婷婷久久| 欧美在线不卡视频| 亚洲欧美中日韩| 国产一区二区精品久久99| 欧美日韩一区二区在线观看| 亚洲国产高清不卡| 韩国精品在线观看| 91精品国产综合久久久久久久久久 | 亚洲午夜在线电影| 岛国精品在线观看| 精品久久久久香蕉网| 亚洲第一久久影院| 91蝌蚪porny| 久久精品一区八戒影视| 蜜臀av性久久久久蜜臀aⅴ四虎| 91国产福利在线| 日本一区二区动态图| 久久超碰97人人做人人爱| 欧美三级视频在线观看| 亚洲免费观看在线视频| 国产98色在线|日韩| 精品99久久久久久| 日韩av网站免费在线| 欧美三级韩国三级日本一级| 亚洲精品免费在线播放| 99国产精品久久久久| 国产人久久人人人人爽| 国产一区二区精品久久99| 91精品综合久久久久久| 亚洲成人av一区二区三区| 91福利在线导航| 亚洲精品欧美专区| 91麻豆成人久久精品二区三区| 中国av一区二区三区| 国产69精品久久久久777| 久久久久久免费网| 国产麻豆视频一区| 国产日韩欧美不卡| 成人免费毛片嘿嘿连载视频| 欧美国产精品劲爆| eeuss鲁片一区二区三区| 中文字幕中文在线不卡住| eeuss鲁片一区二区三区在线看| 欧美国产日韩亚洲一区| 成人午夜精品在线| 中文字幕欧美激情一区| 成人福利视频在线看| 国产精品久久久久影视| 91在线丨porny丨国产| 亚洲乱码中文字幕| 欧美艳星brazzers| 日本不卡的三区四区五区| 精品噜噜噜噜久久久久久久久试看 | 免费在线成人网| 精品欧美久久久| 国产成人丝袜美腿| 亚洲欧洲三级电影| 在线亚洲一区二区| 日本不卡视频一二三区| 337p日本欧洲亚洲大胆色噜噜| 国产精品一区二区在线看| 欧美激情中文字幕一区二区| 91在线高清观看| 亚洲国产精品久久人人爱| 欧美高清hd18日本| 国产综合成人久久大片91| 国产精品久久久久久久久免费桃花| 91亚洲国产成人精品一区二三| 亚洲资源中文字幕| 日韩久久久久久| 成人激情文学综合网| 亚洲国产成人av网| 欧美zozo另类异族| voyeur盗摄精品| 亚洲www啪成人一区二区麻豆| 精品少妇一区二区三区日产乱码| 国产电影一区二区三区| 亚洲一区二区精品视频| 欧美成人三级在线| 91在线码无精品| 老司机一区二区| 亚洲免费观看高清| 日韩一区二区三区视频在线观看 | 欧美成人国产一区二区| 国产成人99久久亚洲综合精品| 亚洲九九爱视频| 精品欧美一区二区久久| 99久久精品国产精品久久| 视频一区二区国产| 国产精品人成在线观看免费| 欧美午夜宅男影院| 国产一二三精品| 亚洲r级在线视频| 亚洲精品在线观看视频| 久久久www成人免费毛片麻豆 | 久久久精品tv| 在线免费观看一区| 国产乱子伦视频一区二区三区 | 欧美国产精品一区| 3d动漫精品啪啪1区2区免费| av中文字幕亚洲| 久久www免费人成看片高清| 亚洲精品午夜久久久| 久久久久久久性| 欧美精品v国产精品v日韩精品 | 日韩欧美亚洲国产另类| 99精品欧美一区| 国产成人综合在线观看| 日韩电影在线观看电影| 伊人夜夜躁av伊人久久| 久久久99精品久久| 日韩免费在线观看| 欧美日韩在线播| 日本精品视频一区二区三区| 国产精品一区二区三区乱码| 午夜成人免费视频| 一区二区在线观看av| 国产欧美日韩不卡| 2024国产精品| 欧美一区二区三区系列电影| 91高清视频在线| 97久久精品人人爽人人爽蜜臀| 国产精品亚洲人在线观看| 另类的小说在线视频另类成人小视频在线 | 精品国内二区三区| 欧美欧美欧美欧美| 欧美性生活大片视频| 94色蜜桃网一区二区三区| 成人午夜在线播放| 国产盗摄视频一区二区三区| 激情偷乱视频一区二区三区| 琪琪久久久久日韩精品| 日韩在线一区二区三区| 亚洲一二三四在线观看| 亚洲品质自拍视频网站| 日韩一区有码在线| 日韩美女视频一区二区| 国产精品麻豆网站| 日韩美女视频一区二区 |