myxce/src/include/dataq.h
2025-11-03 18:19:59 +08:00

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