1 #ifndef NDNDPDK_PCCT_PCC_ENTRY_H
2 #define NDNDPDK_PCCT_PCC_ENTRY_H
6 #include "../vendor/uthash-handle.h"
95 static_assert(offsetof(
PccEntry, b_) - offsetof(
PccEntry, a_) ==
sizeof(uint64_t),
"");
97 __attribute__((nonnull))
static __rte_always_inline
PccSlot*
101 return &entry->
slot1;
124 __attribute__((nonnull, returns_nonnull))
static inline PitEntry*
125 PccEntry_GetPitEntry0(
PccEntry* entry) {
134 __attribute__((nonnull))
static inline PitEntry*
135 PccEntry_AddPitEntry0(
PccEntry* entry) {
137 return PccEntry_GetPitEntry0(entry);
141 if (unlikely(slot == NULL)) {
148 __attribute__((nonnull))
static inline void
149 PccEntry_RemovePitEntry0(
PccEntry* entry) {
157 __attribute__((nonnull, returns_nonnull))
static inline PitEntry*
158 PccEntry_GetPitEntry1(
PccEntry* entry) {
167 __attribute__((nonnull))
static inline PitEntry*
168 PccEntry_AddPitEntry1(
PccEntry* entry) {
170 return PccEntry_GetPitEntry1(entry);
174 if (unlikely(slot == NULL)) {
181 __attribute__((nonnull))
static inline void
182 PccEntry_RemovePitEntry1(
PccEntry* entry) {
190 __attribute__((nonnull, returns_nonnull))
static inline CsEntry*
191 PccEntry_GetCsEntry(
PccEntry* entry) {
200 __attribute__((nonnull))
static inline CsEntry*
201 PccEntry_AddCsEntry(
PccEntry* entry) {
203 return PccEntry_GetCsEntry(entry);
207 if (unlikely(slot == NULL)) {
214 __attribute__((nonnull))
static inline void
215 PccEntry_RemoveCsEntry(
PccEntry* entry) {
struct vlanhdr __rte_packed
#define NDNDPDK_ASSERT(x)
Definition: common.h:60
PccSlotIndex PccEntry_ClearSlot_(PccEntry *entry, PccSlotIndex slot)
Definition: pcc-entry.c:49
PccSlotIndex
Identify a PCC entry slot.
Definition: pcc-entry.h:34
@ PCC_SLOT_NONE
Definition: pcc-entry.h:35
@ PCC_SLOT3
Definition: pcc-entry.h:38
@ PCC_SLOT1
Definition: pcc-entry.h:36
@ PCC_SLOT2
Definition: pcc-entry.h:37
@ PccTokenBits
Definition: pcc-entry.h:13
@ PccTokenSize
Definition: pcc-entry.h:12
@ PccTokenMask
Definition: pcc-entry.h:14
struct PccEntryExt PccEntryExt
PCC entry extension.
union PccSlot PccSlot
PCC entry slot.
PccSlotIndex PccEntry_AllocateSlot_(PccEntry *entry, PccSlot **slot)
Definition: pcc-entry.c:8
A CS entry.
Definition: cs-entry.h:22
PCC entry extension.
Definition: pcc-entry.h:46
PccSlot slot3
Definition: pcc-entry.h:48
PccSlot slot2
Definition: pcc-entry.h:47
PIT-CS composite entry.
Definition: pcc-entry.h:56
const int hasPitEntries
Definition: pcc-entry.h:80
PccSlotIndex pitEntry1Slot
Definition: pcc-entry.h:66
bool hasToken
Definition: pcc-entry.h:63
const int hasPitEntry1
Definition: pcc-entry.h:74
UT_hash_handle hh
Definition: pcc-entry.h:58
PccSlot slot1
Definition: pcc-entry.h:92
const int hasPitEntry0
Definition: pcc-entry.h:73
uint64_t token
Definition: pcc-entry.h:69
RTE_MARKER b_
Definition: pcc-entry.h:90
const int hasEntries
Definition: pcc-entry.h:85
PccKey key
Definition: pcc-entry.h:57
PccSlotIndex pitEntry0Slot
Definition: pcc-entry.h:65
RTE_MARKER a_
Definition: pcc-entry.h:60
PccEntryExt * ext
Definition: pcc-entry.h:93
struct PccEntry::@76::@78 __rte_packed
const int hasCsEntry
Definition: pcc-entry.h:75
PccSlotIndex csEntrySlot
Definition: pcc-entry.h:67
uint64_t tokenQword
Definition: pcc-entry.h:88
Hash key stored in PccEntry .
Definition: pcc-key.h:50
A PIT entry.
Definition: pit-entry.h:24
PCC entry slot.
Definition: pcc-entry.h:24
PitEntry pitEntry
Definition: pcc-entry.h:29
PccEntry * pccEntry
NULL indicates unoccupied slot.
Definition: pcc-entry.h:27
uint64_t a_[2]
Definition: pcc-entry.h:26
CsEntry csEntry
Definition: pcc-entry.h:30