1#ifndef NDNDPDK_NDT_NDT_H
2#define NDNDPDK_NDT_NDT_H
17__attribute__((returns_nonnull))
Ndt*
18Ndt_New(uint64_t nEntries,
int numaSocket);
21__attribute__((nonnull))
static inline void
22Ndt_Update(
Ndt* ndt, uint64_t index, uint8_t value) {
23 atomic_store_explicit(&ndt->
table[index], value, memory_order_relaxed);
27__attribute__((nonnull))
static __rte_always_inline uint8_t
28Ndt_Read(
Ndt* ndt, uint64_t index) {
29 return atomic_load_explicit(&ndt->
table[index], memory_order_relaxed);
33__attribute__((nonnull))
static inline uint8_t
34Ndt_Lookup(
Ndt* ndt,
const PName* name, uint64_t* index) {
36 LName prefix = PName_GetPrefix(name, prefixLen);
40 return Ndt_Read(ndt, *index);
55__attribute__((nonnull))
static inline uint8_t
58 uint8_t value = Ndt_Lookup(ndq->
ndt, name, &index);
uint64_t LName_ComputeHash(LName name)
Compute hash for a name.
Definition name.c:10
Ndt * Ndt_New(uint64_t nEntries, int numaSocket)
Create NDT replica.
Definition ndt.c:4
Name in linear buffer.
Definition name.h:11
NDT querier with counters.
Definition ndt.h:48
Ndt * ndt
Definition ndt.h:49
uint64_t nLookups
Definition ndt.h:50
uint32_t * nHits
Definition ndt.h:51
A replica of the Name Dispatch Table (NDT).
Definition ndt.h:9
_Atomic uint8_t table[]
Definition ndt.h:13
uint64_t indexMask
Definition ndt.h:10
uint16_t prefixLen
Definition ndt.h:12
uint64_t sampleMask
Definition ndt.h:11
Parsed name.
Definition name.h:139
uint16_t nComps
number of components
Definition name.h:142