1 #ifndef NDNDPDK_CORE_MINTMR_H
2 #define NDNDPDK_CORE_MINTMR_H
6 #include "../dpdk/tsc.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();
64 MinSched_GetMaxDelay(
MinSched* sched) {
68 __attribute__((nonnull))
void
72 __attribute__((nonnull))
static __rte_always_inline
void
73 MinTmr_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
struct MinTmr MinTmr
Timer on minute scheduler.
void MinSched_Close(MinSched *sched)
Destroy a minute scheduler.
Definition: mintmr.c:36
void MinSched_Trigger_(MinSched *sched, TscTime now)
Definition: mintmr.c:41
struct MinSched MinSched
Minute scheduler.
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