forked from lei.chen/myxce
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:
parent
289c4daaa2
commit
4737b0f8a3
3 changed files with 159 additions and 7 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue