improve ordq
This commit is contained in:
parent
48ab2e60a2
commit
f44ad07116
5 changed files with 50 additions and 43 deletions
|
|
@ -13,6 +13,7 @@ typedef int (*delay_task_entry_fn_t)(void*);
|
|||
typedef int (*task_run_fn_t)(delay_task_entry_fn_t, void*);
|
||||
|
||||
typedef struct {
|
||||
time_t nextrun;
|
||||
int run_period;
|
||||
int runcount;
|
||||
delay_task_entry_fn_t entry;
|
||||
|
|
|
|||
|
|
@ -6,17 +6,14 @@
|
|||
|
||||
#include "mylock.h"
|
||||
|
||||
typedef void* ordkey_t;
|
||||
|
||||
typedef struct _ordq_item {
|
||||
struct _ordq_item* next;
|
||||
ordkey_t key;
|
||||
void* data;
|
||||
} ordq_item_t;
|
||||
|
||||
typedef int (*ordq_cmp_fn_t)(void*, ordkey_t, ordkey_t);
|
||||
typedef int (*ordq_cmp_fn_t)(void*, void*, void*);
|
||||
typedef void (*ordq_data_killer_t)(void*);
|
||||
typedef int (*ordq_skip_fn_t)(void*, ordq_item_t*);
|
||||
typedef int (*ordq_skip_fn_t)(void*, void*);
|
||||
|
||||
typedef struct {
|
||||
mylock_t lock;
|
||||
|
|
@ -26,11 +23,9 @@ typedef struct {
|
|||
void* ctx;
|
||||
} ordq_t;
|
||||
|
||||
#define mk_ordkey(k) (ordkey_t)((long)(k))
|
||||
|
||||
extern int ordq_init(ordq_t*, ordq_data_killer_t, ordq_cmp_fn_t);
|
||||
extern void ordq_fini(ordq_t* q);
|
||||
extern int ordq_put(ordq_t*, ordkey_t, void*);
|
||||
extern int ordq_put(ordq_t*, void*);
|
||||
extern ordq_item_t* ordq_get(ordq_t*, ordq_skip_fn_t);
|
||||
extern ordq_item_t* ordq_peek(ordq_t*, ordq_skip_fn_t);
|
||||
extern void ordq_set_ctx(ordq_t*, void*);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue