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

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

?? queue.h

?? ecos下的gui開發源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
//==========================================================================
//
//      include/sys/queue.h
//
//==========================================================================
//####BSDCOPYRIGHTBEGIN####
//
// -------------------------------------------
//
// Portions of this software may have been derived from OpenBSD, 
// FreeBSD or other sources, and are covered by the appropriate
// copyright disclaimers included herein.
//
// Portions created by Red Hat are
// Copyright (C) 2002 Red Hat, Inc. All Rights Reserved.
//
// -------------------------------------------
//
//####BSDCOPYRIGHTEND####
//==========================================================================

/*
 * 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.32.2.4 2001/03/31 03:33:39 hsu Exp $
 */

#ifndef _SYS_QUEUE_H_
#define	_SYS_QUEUE_H_

/*
 * This file defines five types of data structures: singly-linked lists,
 * singly-linked tail queues, lists, tail queues, and circular 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.
 *
 * A circle 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 circle queue may be traversed in either direction, but has a more
 * complex end of list detection.
 *
 * For details on the use of these macros, see the queue(3) manual page.
 *
 *
 *			SLIST	LIST	STAILQ	TAILQ	CIRCLEQ
 * _HEAD		+	+	+	+	+
 * _ENTRY		+	+	+	+	+
 * _INIT		+	+	+	+	+
 * _EMPTY		+	+	+	+	+
 * _FIRST		+	+	+	+	+
 * _NEXT		+	+	+	+	+
 * _PREV		-	-	-	+	+
 * _LAST		-	-	+	+	+
 * _FOREACH		+	+	+	+	+
 * _FOREACH_REVERSE	-	-	-	+	+
 * _INSERT_HEAD		+	+	+	+	+
 * _INSERT_BEFORE	-	+	-	+	+
 * _INSERT_AFTER	+	+	+	+	+
 * _INSERT_TAIL		-	-	+	+	+
 * _REMOVE_HEAD		+	-	+	-	-
 * _REMOVE		+	+	+	+	+
 *
 */

/*
 * Singly-linked List definitions.
 */
#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) = (head)->slh_first; (var); (var) = (var)->field.sle_next)

#define SLIST_INIT(head) {						\
	(head)->slh_first = NULL;					\
}

#define SLIST_INSERT_AFTER(slistelm, elm, field) do {			\
	(elm)->field.sle_next = (slistelm)->field.sle_next;		\
	(slistelm)->field.sle_next = (elm);				\
} while (0)

#define SLIST_INSERT_HEAD(head, elm, field) do {			\
	(elm)->field.sle_next = (head)->slh_first;			\
	(head)->slh_first = (elm);					\
} while (0)

#define SLIST_NEXT(elm, field)	((elm)->field.sle_next)

#define SLIST_REMOVE_HEAD(head, field) do {				\
	(head)->slh_first = (head)->slh_first->field.sle_next;		\
} while (0)

#define SLIST_REMOVE(head, elm, type, field) do {			\
	if ((head)->slh_first == (elm)) {				\
		SLIST_REMOVE_HEAD((head), field);			\
	}								\
	else {								\
		struct type *curelm = (head)->slh_first;		\
		while( curelm->field.sle_next != (elm) )		\
			curelm = curelm->field.sle_next;		\
		curelm->field.sle_next =				\
		    curelm->field.sle_next->field.sle_next;		\
	}								\
} while (0)

/*
 * Singly-linked Tail queue definitions.
 */
#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_EMPTY(head) ((head)->stqh_first == NULL)

#define	STAILQ_INIT(head) do {						\
	(head)->stqh_first = NULL;					\
	(head)->stqh_last = &(head)->stqh_first;			\
} while (0)

#define STAILQ_FIRST(head)	((head)->stqh_first)

#define	STAILQ_LAST(head, type, field)					\
	(STAILQ_EMPTY(head) ?						\
		NULL :							\
	        ((struct type *)					\
		((char *)((head)->stqh_last) - __offsetof(struct type, field))))

#define STAILQ_FOREACH(var, head, field)				\
	for((var) = (head)->stqh_first; (var); (var) = (var)->field.stqe_next)

#define STAILQ_INSERT_HEAD(head, elm, field) do {			\
	if (((elm)->field.stqe_next = (head)->stqh_first) == NULL)	\
		(head)->stqh_last = &(elm)->field.stqe_next;		\
	(head)->stqh_first = (elm);					\
} while (0)

#define STAILQ_INSERT_TAIL(head, elm, field) do {			\
	(elm)->field.stqe_next = NULL;					\
	*(head)->stqh_last = (elm);					\
	(head)->stqh_last = &(elm)->field.stqe_next;			\
} while (0)

#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do {		\
	if (((elm)->field.stqe_next = (tqelm)->field.stqe_next) == NULL)\
		(head)->stqh_last = &(elm)->field.stqe_next;		\
	(tqelm)->field.stqe_next = (elm);				\
} while (0)

#define STAILQ_NEXT(elm, field)	((elm)->field.stqe_next)

#define STAILQ_REMOVE_HEAD(head, field) do {				\
	if (((head)->stqh_first =					\
	     (head)->stqh_first->field.stqe_next) == NULL)		\
		(head)->stqh_last = &(head)->stqh_first;		\
} while (0)

#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do {			\
	if (((head)->stqh_first = (elm)->field.stqe_next) == NULL)	\
		(head)->stqh_last = &(head)->stqh_first;		\
} while (0)

#define STAILQ_REMOVE(head, elm, type, field) do {			\
	if ((head)->stqh_first == (elm)) {				\
		STAILQ_REMOVE_HEAD(head, field);			\
	}								\
	else {								\
		struct type *curelm = (head)->stqh_first;		\
		while( curelm->field.stqe_next != (elm) )		\
			curelm = curelm->field.stqe_next;		\
		if((curelm->field.stqe_next =				\
		    curelm->field.stqe_next->field.stqe_next) == NULL)	\
			(head)->stqh_last = &(curelm)->field.stqe_next;	\
	}								\
} while (0)

/*
 * List definitions.
 */
#define LIST_HEAD(name, type)						\
struct name {								\
	struct type *lh_first;	/* first element */			\
}

#define LIST_HEAD_INITIALIZER(head)					\
	{ NULL }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区免费在线| 午夜精品影院在线观看| 欧美日韩精品系列| 国产成人精品一区二区三区四区| 亚洲人吸女人奶水| 日韩欧美一二三区| 欧美亚洲禁片免费| 不卡av在线网| 国产一区二区三区免费在线观看| 亚洲成av人片观看| 亚洲欧美日韩国产成人精品影院| 久久综合一区二区| 欧美一区二区三区的| 在线亚洲高清视频| 99在线热播精品免费| 国产一区二区三区久久久| 亚洲成人你懂的| 成人免费在线播放视频| 精品国产乱码91久久久久久网站| 欧美性色黄大片| 色婷婷亚洲一区二区三区| 国产成人在线视频网站| 精品制服美女丁香| 日韩av在线发布| 亚洲成人一区二区| 国产成人自拍网| 久久成人免费日本黄色| 日韩电影在线一区| 亚洲国产三级在线| 亚洲香肠在线观看| 一卡二卡欧美日韩| 亚洲私人黄色宅男| 亚洲欧洲成人av每日更新| 国产精品视频观看| 中文字幕第一区第二区| 国产日韩欧美高清| 欧美激情在线看| 国产精品视频一二| 亚洲欧洲精品成人久久奇米网| 亚洲国产精品二十页| 国产精品免费aⅴ片在线观看| 亚洲精品在线观| 精品国产免费视频| 久久久国产精华| 国产欧美一区二区三区在线老狼 | 日韩一级免费一区| 欧美日韩黄色一区二区| 欧美日韩在线三区| 欧美日韩国产a| 日韩一卡二卡三卡| 精品国精品国产尤物美女| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美一级午夜免费电影| 欧美一区二区在线观看| 欧美tickling网站挠脚心| 2021中文字幕一区亚洲| 国产农村妇女精品| 亚洲精品视频在线观看免费| 亚洲一区二区四区蜜桃| 亚洲影视资源网| 日韩国产欧美视频| 国产酒店精品激情| 99久久国产免费看| 欧美午夜一区二区三区| 欧美一区二区在线看| 国产亚洲成av人在线观看导航| 国产精品高潮久久久久无| 亚洲一区在线观看免费| 美女在线视频一区| 成人伦理片在线| 欧美制服丝袜第一页| 精品久久久久久久人人人人传媒| 久久久久久9999| 伊人色综合久久天天| 蜜臀av一区二区三区| 成人伦理片在线| 精品视频免费在线| 久久午夜老司机| 亚洲综合色噜噜狠狠| 国产一区在线看| 97精品国产露脸对白| 欧美一区二区视频在线观看2022| 国产午夜精品一区二区| 亚洲综合男人的天堂| 久久66热re国产| 成人av在线影院| 欧美日本韩国一区| 国产日韩精品一区二区三区 | 国产精品视频一区二区三区不卡| 亚洲一区二区影院| 国产a区久久久| 欧美精品久久99久久在免费线 | 国产精品网站在线观看| 日本一道高清亚洲日美韩| 成人小视频免费在线观看| 欧美精品色综合| 亚洲欧美怡红院| 精品一区二区三区在线观看国产| 色综合久久久久网| 久久综合九色综合97婷婷| 午夜精品爽啪视频| 成人精品高清在线| 精品乱人伦一区二区三区| 亚洲综合精品自拍| 成人免费av在线| 精品国产乱码91久久久久久网站| 亚洲图片有声小说| 不卡的看片网站| 国产欧美一区二区在线观看| 青青草97国产精品免费观看 | 男男成人高潮片免费网站| 91免费看`日韩一区二区| 久久久久久麻豆| 日韩电影网1区2区| 欧美三日本三级三级在线播放| 亚洲国产精品高清| 国产精品一二三四五| 日韩一级精品视频在线观看| 亚洲丶国产丶欧美一区二区三区| 一本久道久久综合中文字幕| 日本一区二区成人| 国产乱码精品一区二区三| 日韩午夜在线观看| 日本午夜一本久久久综合| 欧美日韩一卡二卡| 夜夜夜精品看看| 91首页免费视频| 亚洲天堂免费在线观看视频| 成人理论电影网| 久久网站最新地址| 国产一区二区主播在线| 欧美电影免费观看高清完整版在线 | 国产精品麻豆久久久| 国产精品一区二区久久不卡| 欧美一级国产精品| 日韩国产在线一| 欧美福利视频导航| 午夜视频在线观看一区| 欧美日韩高清一区| 日韩中文欧美在线| 91精品国模一区二区三区| 三级久久三级久久久| 日韩一区二区三区视频| 美国精品在线观看| 精品国精品自拍自在线| 国产精品888| 日本一区二区三区国色天香| 国产91富婆露脸刺激对白| 欧美极品美女视频| a美女胸又www黄视频久久| 国产三级欧美三级日产三级99| 国产成人精品免费一区二区| 国产精品色噜噜| 色综合久久中文字幕综合网| 亚洲成人一区二区| 精品三级在线看| 国产91丝袜在线播放0| 国产精品麻豆99久久久久久| 在线观看不卡一区| 日本欧美一区二区三区| 久久久久久久综合色一本| 91玉足脚交白嫩脚丫在线播放| 亚洲自拍与偷拍| 欧美一区二区私人影院日本| 国内欧美视频一区二区| 国产精品国产三级国产三级人妇 | 色综合天天综合网天天狠天天 | 日韩一二三四区| 国产精品一区二区三区99| 亚洲美女淫视频| 欧美一区欧美二区| 成人18精品视频| 三级久久三级久久久| 国产午夜精品一区二区三区视频| 99国内精品久久| 秋霞午夜鲁丝一区二区老狼| 国产蜜臀av在线一区二区三区| 91电影在线观看| 激情综合亚洲精品| 亚洲男人的天堂网| 日韩午夜电影在线观看| 成人黄动漫网站免费app| 亚洲v日本v欧美v久久精品| 国产日韩欧美高清在线| 欧美日韩精品三区| 成人福利视频网站| 日本亚洲一区二区| 亚洲人成精品久久久久| 精品国产伦理网| 欧美午夜精品久久久久久超碰| 国产精品资源网站| 亚洲成年人影院| 中文字幕一区免费在线观看| 亚洲精品一区在线观看| 91福利小视频| 成人午夜伦理影院| 蜜桃精品在线观看| 亚洲国产视频直播| 18涩涩午夜精品.www| 久久综合久久久久88|