123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #pragma once
- #include <stdbool.h>
- #include <stdint.h>
- #include <stdlib.h>
- typedef uint8_t deferred_token;
- #define INVALID_DEFERRED_TOKEN 0
- typedef uint32_t (*deferred_exec_callback)(uint32_t trigger_time, void *cb_arg);
- deferred_token defer_exec(uint32_t delay_ms, deferred_exec_callback callback, void *cb_arg);
- bool extend_deferred_exec(deferred_token token, uint32_t delay_ms);
- bool cancel_deferred_exec(deferred_token token);
- void deferred_exec_task(void);
- typedef struct deferred_executor_t {
- deferred_token token;
- uint32_t trigger_time;
- deferred_exec_callback callback;
- void * cb_arg;
- } deferred_executor_t;
- deferred_token defer_exec_advanced(deferred_executor_t *table, size_t table_count, uint32_t delay_ms, deferred_exec_callback callback, void *cb_arg);
- bool extend_deferred_exec_advanced(deferred_executor_t *table, size_t table_count, deferred_token token, uint32_t delay_ms);
- bool cancel_deferred_exec_advanced(deferred_executor_t *table, size_t table_count, deferred_token token);
- void deferred_exec_advanced_task(deferred_executor_t *table, size_t table_count, uint32_t *last_execution_time);
|