improve ordq

This commit is contained in:
Rongsong Shen 2025-12-17 15:28:27 +08:00
parent 48ab2e60a2
commit f44ad07116
5 changed files with 50 additions and 43 deletions

View file

@ -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;

View file

@ -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*);