NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
strategy-code.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_STRATEGYCODE_STRATEGY_CODE_H
2 #define NDNDPDK_STRATEGYCODE_STRATEGY_CODE_H
3 
6 #include "../core/common.h"
7 #include <rte_bpf.h>
8 
9 typedef uint64_t (*StrategyCodeFunc)(void*, size_t);
10 
12 typedef struct StrategyCodeProg {
13  struct rte_bpf* bpf;
16 
22 __attribute__((nonnull)) static inline uint64_t
23 StrategyCodeProg_Run(StrategyCodeProg prog, void* arg, size_t sizeofArg) {
24  return prog.jit(arg, sizeofArg);
25 }
26 
28 typedef struct StrategyCode {
30  uintptr_t goHandle;
31  int id;
32  atomic_int nRefs;
34 
35 __attribute__((nonnull)) void
37 
38 __attribute__((nonnull)) void
40 
41 typedef void (*StrategyCode_FreeFunc)(uintptr_t goHandle);
43 
44 typedef struct SgCtx SgCtx;
45 typedef bool (*StrategyCode_GetJSONFunc)(SgCtx* ctx, const char* path, int index, int64_t* dst);
47 
48 __attribute__((nonnull, returns_nonnull)) const struct rte_bpf_xsym*
49 SgInitGetXsyms(uint32_t* nXsyms);
50 
51 #endif // NDNDPDK_STRATEGYCODE_STRATEGY_CODE_H
void(* StrategyCode_FreeFunc)(uintptr_t goHandle)
Definition: strategy-code.h:41
StrategyCode_FreeFunc StrategyCode_Free
Definition: strategy-code.c:4
uint64_t(* StrategyCodeFunc)(void *, size_t)
Definition: strategy-code.h:9
struct StrategyCode StrategyCode
Forwarding strategy BPF programs.
void StrategyCode_Ref(StrategyCode *sc)
Definition: strategy-code.c:8
void StrategyCode_Unref(StrategyCode *sc)
Definition: strategy-code.c:17
bool(* StrategyCode_GetJSONFunc)(SgCtx *ctx, const char *path, int index, int64_t *dst)
Definition: strategy-code.h:45
struct StrategyCodeProg StrategyCodeProg
BPF program in a forwarding strategy.
const struct rte_bpf_xsym * SgInitGetXsyms(uint32_t *nXsyms)
Definition: strategy-code.c:34
StrategyCode_GetJSONFunc StrategyCode_GetJSON
Definition: strategy-code.c:5
Context of strategy invocation.
Definition: api.h:26
BPF program in a forwarding strategy.
Definition: strategy-code.h:12
StrategyCodeFunc jit
JIT-compiled function.
Definition: strategy-code.h:14
struct rte_bpf * bpf
BPF execution context.
Definition: strategy-code.h:13
Forwarding strategy BPF programs.
Definition: strategy-code.h:28
StrategyCodeProg main
dataplane BPF program
Definition: strategy-code.h:29
atomic_int nRefs
how many FibEntry* reference this
Definition: strategy-code.h:32
int id
strategy ID
Definition: strategy-code.h:31
uintptr_t goHandle
cgo.Handle reference of Go *strategycode.Strategy
Definition: strategy-code.h:30
Definition: load.c:7