NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
store.h
Go to the documentation of this file.
1#ifndef NDNDPDK_DISK_STORE_H
2#define NDNDPDK_DISK_STORE_H
3
5
6#include "../dpdk/bdev.h"
7#include "../dpdk/hashtable.h"
9#include "../ndni/packet.h"
10
11typedef struct DiskStore DiskStore;
12
19
21typedef struct DiskStoreRequest {
23 union {
25 struct rte_mbuf* pkt;
26 };
29
37typedef void (*DiskStore_GetDataCb)(Packet* npkt, uintptr_t ctx);
38
40struct DiskStore {
43 struct rte_hash* requestHt;
45 struct spdk_thread* th;
46 struct spdk_io_channel* ch;
48 uintptr_t getDataCtx;
49
50 uint64_t nPutDataBegin;
51 uint64_t nPutDataFinish[2]; // 0=failure, 1=success
52 uint64_t nGetDataBegin;
53 uint64_t nGetDataReuse;
56};
57
62__attribute__((nonnull)) static inline bool
63DiskStore_PutPrepare(DiskStore* store, Packet* npkt, BdevStoredPacket* sp) {
64 return Bdev_WritePrepare(&store->bdev, Packet_ToMbuf(npkt), sp);
65}
66
75__attribute__((nonnull)) void
76DiskStore_PutData(DiskStore* store, uint64_t slotID, Packet* npkt, BdevStoredPacket* sp);
77
94__attribute__((nonnull)) void
95DiskStore_GetData(DiskStore* store, uint64_t slotID, Packet* npkt, struct rte_mbuf* dataBuf,
97
98#endif // NDNDPDK_DISK_STORE_H
bool Bdev_WritePrepare(Bdev *bd, struct rte_mbuf *pkt, BdevStoredPacket *sp)
Prepare writing according to bdev alignment requirements.
Definition bdev.c:252
struct Packet Packet
Definition common.h:11
void DiskStore_GetData(DiskStore *store, uint64_t slotID, Packet *npkt, struct rte_mbuf *dataBuf, BdevStoredPacket *sp)
Retrieve a Data packet.
Definition store.c:273
void(* DiskStore_GetDataCb)(Packet *npkt, uintptr_t ctx)
DiskStore_GetData completion callback.
Definition store.h:37
void DiskStore_PutData(DiskStore *store, uint64_t slotID, Packet *npkt, BdevStoredPacket *sp)
Store a Data packet.
Definition store.c:257
Bdev I/O request.
Definition bdev.h:55
Length and alignment descriptor of a stored packet.
Definition bdev.h:21
Block device and related information.
Definition bdev.h:64
DiskStore request context.
Definition store.h:21
Packet * npkt
Definition store.h:24
struct rte_mbuf * pkt
Definition store.h:25
DiskStoreSlimRequest s
Definition store.h:22
BdevRequest breq
Definition store.h:27
DiskStore compact request context.
Definition store.h:14
Packet * next
Definition store.h:15
DiskStore * store
Definition store.h:16
uint64_t slotID
Definition store.h:17
Disk-backed Data packet store.
Definition store.h:40
Bdev bdev
Definition store.h:41
struct spdk_thread * th
Definition store.h:45
uint64_t nBlocksPerSlot
Definition store.h:42
uint64_t nGetDataFailure
Definition store.h:55
uint64_t nPutDataFinish[2]
Definition store.h:51
uint64_t nGetDataReuse
Definition store.h:53
struct rte_hash * requestHt
Definition store.h:43
DiskStore_GetDataCb getDataCb
Definition store.h:47
DiskStoreRequest * requestArray
Definition store.h:44
uint64_t nGetDataBegin
Definition store.h:52
uintptr_t getDataCtx
Definition store.h:48
struct spdk_io_channel * ch
Definition store.h:46
uint64_t nPutDataBegin
Definition store.h:50
uint64_t nGetDataSuccess
Definition store.h:54