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

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

?? queue.h

?? ecos下的gui開發源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
#define LIST_ENTRY(type)						\
struct {								\
	struct type *le_next;	/* next element */			\
	struct type **le_prev;	/* address of previous next element */	\
}

/*
 * List functions.
 */

#define	LIST_EMPTY(head) ((head)->lh_first == NULL)

#define LIST_FIRST(head)	((head)->lh_first)

#define LIST_FOREACH(var, head, field)					\
	for((var) = (head)->lh_first; (var); (var) = (var)->field.le_next)

#define	LIST_INIT(head) do {						\
	(head)->lh_first = NULL;					\
} while (0)

#define LIST_INSERT_AFTER(listelm, elm, field) do {			\
	if (((elm)->field.le_next = (listelm)->field.le_next) != NULL)	\
		(listelm)->field.le_next->field.le_prev =		\
		    &(elm)->field.le_next;				\
	(listelm)->field.le_next = (elm);				\
	(elm)->field.le_prev = &(listelm)->field.le_next;		\
} while (0)

#define LIST_INSERT_BEFORE(listelm, elm, field) do {			\
	(elm)->field.le_prev = (listelm)->field.le_prev;		\
	(elm)->field.le_next = (listelm);				\
	*(listelm)->field.le_prev = (elm);				\
	(listelm)->field.le_prev = &(elm)->field.le_next;		\
} while (0)

#define LIST_INSERT_HEAD(head, elm, field) do {				\
	if (((elm)->field.le_next = (head)->lh_first) != NULL)		\
		(head)->lh_first->field.le_prev = &(elm)->field.le_next;\
	(head)->lh_first = (elm);					\
	(elm)->field.le_prev = &(head)->lh_first;			\
} while (0)

#define LIST_NEXT(elm, field)	((elm)->field.le_next)

#define LIST_REMOVE(elm, field) do {					\
	if ((elm)->field.le_next != NULL)				\
		(elm)->field.le_next->field.le_prev = 			\
		    (elm)->field.le_prev;				\
	*(elm)->field.le_prev = (elm)->field.le_next;			\
} while (0)

/*
 * Tail queue definitions.
 */
#define TAILQ_HEAD(name, type)						\
struct name {								\
	struct type *tqh_first;	/* first element */			\
	struct type **tqh_last;	/* addr of last next element */		\
}

#define TAILQ_HEAD_INITIALIZER(head)					\
	{ NULL, &(head).tqh_first }

#define TAILQ_ENTRY(type)						\
struct {								\
	struct type *tqe_next;	/* next element */			\
	struct type **tqe_prev;	/* address of previous next element */	\
}

/*
 * Tail queue functions.
 */
#define	TAILQ_EMPTY(head) ((head)->tqh_first == NULL)

#define TAILQ_FOREACH(var, head, field)					\
	for (var = TAILQ_FIRST(head); var; var = TAILQ_NEXT(var, field))

#define TAILQ_FOREACH_REVERSE(var, head, headname, field)		\
	for ((var) = TAILQ_LAST((head), headname);			\
	     (var);							\
	     (var) = TAILQ_PREV((var), headname, field))

#define	TAILQ_FIRST(head) ((head)->tqh_first)

#define	TAILQ_LAST(head, headname) \
	(*(((struct headname *)((head)->tqh_last))->tqh_last))

#define	TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)

#define TAILQ_PREV(elm, headname, field) \
	(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))

#define	TAILQ_INIT(head) do {						\
	(head)->tqh_first = NULL;					\
	(head)->tqh_last = &(head)->tqh_first;				\
} while (0)

#define TAILQ_INSERT_HEAD(head, elm, field) do {			\
	if (((elm)->field.tqe_next = (head)->tqh_first) != NULL)	\
		(head)->tqh_first->field.tqe_prev =			\
		    &(elm)->field.tqe_next;				\
	else								\
		(head)->tqh_last = &(elm)->field.tqe_next;		\
	(head)->tqh_first = (elm);					\
	(elm)->field.tqe_prev = &(head)->tqh_first;			\
} while (0)

#define TAILQ_INSERT_TAIL(head, elm, field) do {			\
	(elm)->field.tqe_next = NULL;					\
	(elm)->field.tqe_prev = (head)->tqh_last;			\
	*(head)->tqh_last = (elm);					\
	(head)->tqh_last = &(elm)->field.tqe_next;			\
} while (0)

#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do {		\
	if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
		(elm)->field.tqe_next->field.tqe_prev = 		\
		    &(elm)->field.tqe_next;				\
	else								\
		(head)->tqh_last = &(elm)->field.tqe_next;		\
	(listelm)->field.tqe_next = (elm);				\
	(elm)->field.tqe_prev = &(listelm)->field.tqe_next;		\
} while (0)

#define TAILQ_INSERT_BEFORE(listelm, elm, field) do {			\
	(elm)->field.tqe_prev = (listelm)->field.tqe_prev;		\
	(elm)->field.tqe_next = (listelm);				\
	*(listelm)->field.tqe_prev = (elm);				\
	(listelm)->field.tqe_prev = &(elm)->field.tqe_next;		\
} while (0)

#define TAILQ_REMOVE(head, elm, field) do {				\
	if (((elm)->field.tqe_next) != NULL)				\
		(elm)->field.tqe_next->field.tqe_prev = 		\
		    (elm)->field.tqe_prev;				\
	else								\
		(head)->tqh_last = (elm)->field.tqe_prev;		\
	*(elm)->field.tqe_prev = (elm)->field.tqe_next;			\
} while (0)

/*
 * Circular queue definitions.
 */
#define CIRCLEQ_HEAD(name, type)					\
struct name {								\
	struct type *cqh_first;		/* first element */		\
	struct type *cqh_last;		/* last element */		\
}

#define CIRCLEQ_ENTRY(type)						\
struct {								\
	struct type *cqe_next;		/* next element */		\
	struct type *cqe_prev;		/* previous element */		\
}

/*
 * Circular queue functions.
 */
#define CIRCLEQ_EMPTY(head) ((head)->cqh_first == (void *)(head))

#define CIRCLEQ_FIRST(head) ((head)->cqh_first)

#define CIRCLEQ_FOREACH(var, head, field)				\
	for((var) = (head)->cqh_first;					\
	    (var) != (void *)(head);					\
	    (var) = (var)->field.cqe_next)

#define CIRCLEQ_FOREACH_REVERSE(var, head, field)			\
	for((var) = (head)->cqh_last;					\
	    (var) != (void *)(head);					\
	    (var) = (var)->field.cqe_prev)

#define	CIRCLEQ_INIT(head) do {						\
	(head)->cqh_first = (void *)(head);				\
	(head)->cqh_last = (void *)(head);				\
} while (0)

#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do {		\
	(elm)->field.cqe_next = (listelm)->field.cqe_next;		\
	(elm)->field.cqe_prev = (listelm);				\
	if ((listelm)->field.cqe_next == (void *)(head))		\
		(head)->cqh_last = (elm);				\
	else								\
		(listelm)->field.cqe_next->field.cqe_prev = (elm);	\
	(listelm)->field.cqe_next = (elm);				\
} while (0)

#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do {		\
	(elm)->field.cqe_next = (listelm);				\
	(elm)->field.cqe_prev = (listelm)->field.cqe_prev;		\
	if ((listelm)->field.cqe_prev == (void *)(head))		\
		(head)->cqh_first = (elm);				\
	else								\
		(listelm)->field.cqe_prev->field.cqe_next = (elm);	\
	(listelm)->field.cqe_prev = (elm);				\
} while (0)

#define CIRCLEQ_INSERT_HEAD(head, elm, field) do {			\
	(elm)->field.cqe_next = (head)->cqh_first;			\
	(elm)->field.cqe_prev = (void *)(head);				\
	if ((head)->cqh_last == (void *)(head))				\
		(head)->cqh_last = (elm);				\
	else								\
		(head)->cqh_first->field.cqe_prev = (elm);		\
	(head)->cqh_first = (elm);					\
} while (0)

#define CIRCLEQ_INSERT_TAIL(head, elm, field) do {			\
	(elm)->field.cqe_next = (void *)(head);				\
	(elm)->field.cqe_prev = (head)->cqh_last;			\
	if ((head)->cqh_first == (void *)(head))			\
		(head)->cqh_first = (elm);				\
	else								\
		(head)->cqh_last->field.cqe_next = (elm);		\
	(head)->cqh_last = (elm);					\
} while (0)

#define CIRCLEQ_LAST(head) ((head)->cqh_last)

#define CIRCLEQ_NEXT(elm,field) ((elm)->field.cqe_next)

#define CIRCLEQ_PREV(elm,field) ((elm)->field.cqe_prev)

#define	CIRCLEQ_REMOVE(head, elm, field) do {				\
	if ((elm)->field.cqe_next == (void *)(head))			\
		(head)->cqh_last = (elm)->field.cqe_prev;		\
	else								\
		(elm)->field.cqe_next->field.cqe_prev =			\
		    (elm)->field.cqe_prev;				\
	if ((elm)->field.cqe_prev == (void *)(head))			\
		(head)->cqh_first = (elm)->field.cqe_next;		\
	else								\
		(elm)->field.cqe_prev->field.cqe_next =			\
		    (elm)->field.cqe_next;				\
} while (0)

#ifdef _KERNEL

/*
 * XXX insque() and remque() are an old way of handling certain queues.
 * They bogusly assumes that all queue heads look alike.
 */

struct quehead {
	struct quehead *qh_link;
	struct quehead *qh_rlink;
};

#ifdef	__GNUC__

static __inline void
insque(void *a, void *b)
{
	struct quehead *element = a, *head = b;

	element->qh_link = head->qh_link;
	element->qh_rlink = head;
	head->qh_link = element;
	element->qh_link->qh_rlink = element;
}

static __inline void
remque(void *a)
{
	struct quehead *element = a;

	element->qh_link->qh_rlink = element->qh_rlink;
	element->qh_rlink->qh_link = element->qh_link;
	element->qh_rlink = 0;
}

#else /* !__GNUC__ */

void	insque __P((void *a, void *b));
void	remque __P((void *a));

#endif /* __GNUC__ */

#endif /* _KERNEL */

#endif /* !_SYS_QUEUE_H_ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区2区| 欧美色综合久久| 精品一区二区三区在线观看国产| 亚洲成人先锋电影| 亚洲已满18点击进入久久| 亚洲欧美激情插| 亚洲精品视频在线| 一区二区三区欧美视频| 亚洲综合在线视频| 亚洲一区二区视频| 日韩高清在线电影| 免费成人av在线播放| 久久精品二区亚洲w码| 久久99日本精品| 国产乱码一区二区三区| 国产成人综合在线播放| 粉嫩绯色av一区二区在线观看| 丰满亚洲少妇av| 色悠悠亚洲一区二区| 欧美在线观看一区| 777色狠狠一区二区三区| 日韩一区二区在线看片| 精品国产乱码久久久久久久久| 精品国产不卡一区二区三区| 久久九九久久九九| 国产精品久久久久影院亚瑟| 亚洲人成人一区二区在线观看 | 亚洲视频精选在线| 亚洲第一激情av| 麻豆freexxxx性91精品| 国产精品 日产精品 欧美精品| 成人黄色国产精品网站大全在线免费观看 | 国产色综合一区| 亚洲欧洲国产专区| 亚洲国产精品一区二区尤物区| 午夜欧美电影在线观看| 黄色日韩三级电影| www.日韩av| 欧美精品tushy高清| 精品国产麻豆免费人成网站| 国产精品成人网| 亚洲1区2区3区视频| 国产经典欧美精品| 欧洲av在线精品| xf在线a精品一区二区视频网站| 国产精品免费视频一区| 亚洲超碰精品一区二区| 国产一区在线不卡| 亚洲欧洲精品成人久久奇米网| 亚洲色图在线视频| 久久99精品久久久久久久久久久久| 豆国产96在线|亚洲| 欧美疯狂做受xxxx富婆| 国产精品热久久久久夜色精品三区 | www亚洲一区| 亚洲久本草在线中文字幕| 免费人成黄页网站在线一区二区| 成人污视频在线观看| 精品视频一区二区不卡| 久久综合色综合88| 亚洲一区二区三区视频在线| 国产精品一区二区三区99| 在线观看日韩高清av| 国产偷国产偷精品高清尤物| 亚洲成av人在线观看| av一区二区久久| 欧美成人精品高清在线播放| 亚洲精品videosex极品| 国产中文字幕精品| 欧美日本一道本在线视频| 国产精品护士白丝一区av| 久久精品国产精品亚洲红杏| 91九色02白丝porn| 中文av字幕一区| 日韩国产精品久久| 欧美午夜精品一区二区蜜桃| 欧美极品美女视频| 久久成人羞羞网站| 欧美一三区三区四区免费在线看| 亚洲色图欧美激情| 国产99一区视频免费| 亚洲第一激情av| 91女厕偷拍女厕偷拍高清| 久久免费国产精品| 日本不卡视频在线| 欧美日韩精品一区二区在线播放| 日韩美女视频一区二区 | 91成人在线观看喷潮| 欧美激情一区不卡| 国产美女av一区二区三区| 日韩午夜激情视频| 无码av免费一区二区三区试看 | 欧美国产禁国产网站cc| 激情久久五月天| 欧美电视剧免费全集观看| 天堂在线亚洲视频| 欧美日韩综合色| 一区二区三区国产精品| 婷婷成人激情在线网| 欧美性受xxxx黑人xyx性爽| 亚洲久本草在线中文字幕| 99re6这里只有精品视频在线观看| 久久精品综合网| 国产精品99久久久久久久vr | 午夜精品福利在线| 欧美日韩激情一区二区| 午夜久久福利影院| 欧美日韩国产在线播放网站| 丝袜美腿亚洲综合| 91精品国产色综合久久ai换脸 | 日韩和的一区二区| 91精品国产综合久久久久久| 午夜国产不卡在线观看视频| 欧美人与z0zoxxxx视频| 天堂影院一区二区| 精品久久久久久久一区二区蜜臀| 精油按摩中文字幕久久| 久久综合精品国产一区二区三区| 国产原创一区二区| 欧美国产日韩a欧美在线观看| 不卡视频一二三| 亚洲黄色片在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲乱码中文字幕| 色嗨嗨av一区二区三区| 亚洲v精品v日韩v欧美v专区| 日韩一区二区免费在线观看| 国产剧情在线观看一区二区| 日本一区二区成人| 在线观看免费成人| 日韩高清电影一区| 国产日本一区二区| 一本大道久久a久久精二百 | 国产精品一区三区| 亚洲欧洲在线观看av| 欧美专区日韩专区| 日韩和欧美一区二区三区| 久久久久久久久久久久电影| av网站一区二区三区| 午夜视频久久久久久| 精品国产不卡一区二区三区| 91网站在线播放| 日韩精品免费专区| 国产精品一区二区三区网站| 中文字幕一区在线观看| 欧美日韩成人高清| 国内精品在线播放| 亚洲欧美日韩人成在线播放| 欧美另类变人与禽xxxxx| 国产剧情一区二区| 亚洲狠狠爱一区二区三区| 精品成人在线观看| 色综合久久久久综合体| 久久精品国产在热久久| 国产精品传媒入口麻豆| 日韩欧美www| 91蜜桃在线免费视频| 另类欧美日韩国产在线| 中文字幕综合网| 精品国产露脸精彩对白| 色狠狠色噜噜噜综合网| 国产乱对白刺激视频不卡| 亚洲一区二区三区四区的| 2020国产精品自拍| 欧美色手机在线观看| 国产999精品久久久久久| 日本女人一区二区三区| 综合婷婷亚洲小说| 精品国产伦理网| 精品视频在线免费看| 成人免费视频视频| 玖玖九九国产精品| 伊人色综合久久天天人手人婷| 久久精品亚洲精品国产欧美| 欧美欧美欧美欧美| av电影一区二区| 国产精品影视网| 人人爽香蕉精品| 亚洲一区二区精品3399| 国产精品高潮久久久久无| 2023国产精品自拍| 69成人精品免费视频| 91国产成人在线| 不卡影院免费观看| 国产成人精品www牛牛影视| 裸体一区二区三区| 五月天一区二区三区| 亚洲美女少妇撒尿| 亚洲欧洲精品成人久久奇米网| 久久欧美一区二区| 日韩精品综合一本久道在线视频| 色天使久久综合网天天| av在线综合网| 高清国产一区二区| 国产精品自拍一区| 韩国av一区二区三区在线观看 | 欧美日产国产精品| 欧美性猛片aaaaaaa做受| av激情综合网| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 |