forked from lei.chen/myxce
28 lines
663 B
C
28 lines
663 B
C
#if !defined(_DATAQ_H_)
|
|
|
|
#define _DATAQ_H_ 1
|
|
|
|
#include "mylock.h"
|
|
|
|
typedef struct _data_item {
|
|
struct _data_item* next;
|
|
} data_item_t;
|
|
|
|
typedef int (*data_item_match_fn_t)(data_item_t*);
|
|
typedef void (*data_item_killer_t)(data_item_t*);
|
|
|
|
typedef struct {
|
|
data_item_t* head;
|
|
data_item_t* tail;
|
|
data_item_killer_t killer;
|
|
mylock_t lock;
|
|
} dataq_t;
|
|
|
|
#define DATAQ_EMPTY(q) ((q)->head == NULL)
|
|
|
|
extern int dataq_init(dataq_t*, data_item_killer_t);
|
|
extern data_item_t* dataq_deq(dataq_t*, data_item_match_fn_t);
|
|
extern int dataq_enq(dataq_t*, data_item_t*);
|
|
extern void dataq_fini(dataq_t*);
|
|
|
|
#endif
|