1#ifndef NDNDPDK_CORE_MINTMR_H
2#define NDNDPDK_CORE_MINTMR_H
10 struct cds_list_head
h;
14__attribute__((nonnull))
static __rte_always_inline
void
16 CDS_INIT_LIST_HEAD(&tmr->
h);
30 struct cds_list_head
slot[];
39__attribute__((returns_nonnull))
MinSched*
43__attribute__((nonnull))
void
47__attribute__((nonnull))
void
50__attribute__((nonnull))
void
54__attribute__((nonnull))
static __rte_always_inline
void
56 TscTime now = rte_get_tsc_cycles();
64MinSched_GetMaxDelay(
MinSched* sched) {
68__attribute__((nonnull))
void
72__attribute__((nonnull))
static __rte_always_inline
void
73MinTmr_Cancel(
MinTmr* tmr) {
74 if (likely(tmr->
h.next != NULL && !cds_list_empty(&tmr->
h))) {
85__attribute__((nonnull))
bool
89__attribute__((nonnull))
static inline bool
91 TscTime now = rte_get_tsc_cycles();
void MinTmr_Cancel_(MinTmr *tmr)
Definition mintmr.c:59
void MinSched_Close(MinSched *sched)
Destroy a minute scheduler.
Definition mintmr.c:36
void MinSched_Trigger_(MinSched *sched, TscTime now)
Definition mintmr.c:41
bool MinTmr_After(MinTmr *tmr, TscDuration after, MinSched *sched)
Schedule a timer to expire after since current time.
Definition mintmr.c:65
void(* MinTmrCb)(MinTmr *tmr, uintptr_t ctx)
Definition mintmr.h:19
void MinSched_Clear(MinSched *sched)
Cancel all events.
Definition mintmr.c:29
MinSched * MinSched_New(int nSlotBits, TscDuration interval, MinTmrCb cb, uintptr_t ctx)
Create a minute scheduler.
Definition mintmr.c:8
Minute scheduler.
Definition mintmr.h:22
struct cds_list_head slot[]
Definition mintmr.h:30
TscDuration interval
Definition mintmr.h:23
uintptr_t ctx
Definition mintmr.h:26
uint32_t lastSlot
Definition mintmr.h:27
MinTmrCb cb
Definition mintmr.h:25
uint32_t slotMask
Definition mintmr.h:28
TscTime nextTime
Definition mintmr.h:24
uint32_t nSlots
Definition mintmr.h:29
Timer on minute scheduler.
Definition mintmr.h:9
struct cds_list_head h
Definition mintmr.h:10
int64_t TscDuration
Duration in TscTime unit.
Definition tsc.h:12
uint64_t TscTime
TSC clock time point.
Definition tsc.h:9