⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list.h

📁 linux或unix下回话劫持工具
💻 H
字号:
/* *  *	This is free software. You can redistribute it and/or modify under *	the terms of the GNU General Public License version 2. * * 	Copyright (C) 1998 by kra *  */#ifndef __LIST_H#define __LIST_H#include <time.h>#ifdef _REENTRANT#include <pthread.h>#endifstruct list_iterator;struct list {	void *l_first;	void *l_last;	int  l_off;	int  l_produce_done;	struct list_iterator *l_iter;#ifdef _REENTRANT	int  l_locked;	pthread_mutex_t l_mutex;	pthread_cond_t  l_notempty;	pthread_t	l_locked_thr;#endif};struct list_iterator {	struct list *i_list;	void *i_cur;	struct list_iterator *i_next;};#define offset_of(str, next)	((char *)(&((str *)0)->next) - (char *)0)#ifdef _REENTRANT#define LIST_INIT(str, next)	{ NULL, NULL, offset_of(str, next), 0, NULL, \				  0, \				  PTHREAD_MUTEX_INITIALIZER, \				  PTHREAD_COND_INITIALIZER, \				  (pthread_t) 0 }#else#define LIST_INIT(str, next)	{ NULL, NULL, offset_of(str, next), 0, NULL }#endif#ifdef _REENTRANT#define LIST_MAKE(str, next, first, last) { first, last, \					    offset_of((str, (next)), 0, NULL, \					    0, \					    PTHREAD_MUTEX_INITIALIZER, \					    PTHREAD_COND_INITIALIZER, \					    (pthread_t) 0 }#else#define LIST_MAKE(str, next, first, last) { first, last, \					    offset_of((str, (next)), 0, NULL }#endif#define LIST_NEXT_PTR(list, member) ((void **)((char *)(member) + (list)->l_off))void list_init(struct list *l, int next_offset);void list_flush(struct list *l);		void list_push(struct list *l, void *m);void list_enqueue(struct list *l, void *m);void list_produce(struct list *l, void *m);void list_produce_start(struct list *l);void list_produce_done(struct list *l);void list_insert_at(struct list *l, int nr, void *m);	void *list_pop(struct list *l);void *list_consume(struct list *l, const struct timespec *absts);void *list_consume_rel(struct list *l, const struct timespec *relts);void *list_peek(struct list *l);void *list_at(struct list *l, int nr);void *list_remove(struct list *l, void *m);void *list_remove_at(struct list *l, int nr);void *list_remove_func(struct list *l, int (*func)(int nr, void *, void *m), void *m);int list_count(struct list *l);void list_lock(struct list *l);void list_unlock(struct list *l);void list_iter_set(struct list_iterator *i, struct list *l);void *list_iter_get(struct list_iterator *i);void list_iter_end(struct list_iterator *i);	#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -