feat(election-iomgr-refactor): add delay_task_ms() for ms-granularity one-shot tasks

Add millisecond-granularity delay_task_ms() to delaymgr using
clock_gettime(CLOCK_MONOTONIC) for deadline computation. Extends
delay_task_t with nextrun_ts field; delay_worker distinguishes
ms-tasks from second-tasks via non-zero nextrun_ts. Backward
compatible with existing delay_task callers.

4 delay tests pass (2 new: tolerance and invalid-args).
Provides the timeout primitive for election and committing watchdogs.
This commit is contained in:
Rongsong Shen 2026-05-30 07:15:54 +00:00
parent 289c4daaa2
commit 4737b0f8a3
3 changed files with 159 additions and 7 deletions

View file

@ -14,6 +14,7 @@ typedef int (*task_run_fn_t)(delay_task_entry_fn_t, void*);
typedef struct {
time_t nextrun;
struct timespec nextrun_ts; /* non-zero tv_nsec flags an ms-task */
int run_period;
int runcount;
delay_task_entry_fn_t entry;
@ -34,5 +35,6 @@ extern void delaymgr_stop(delaymgr_t*);
extern void delaymgr_fini(delaymgr_t*);
extern int delaymgr_start(delaymgr_t*);
extern int delay_task(delaymgr_t*, int, int, delay_task_entry_fn_t, void*);
extern int delay_task_ms(delaymgr_t*, int, int, delay_task_entry_fn_t, void*);
#endif