rte_mbuf
DPDK 中用于存储网络数据包的基础数据结构。它包含了数据包的元数据(如长度、头部信息)以及实际的数据负载。
常用字段:
ata_len:数据部分的长度。
pkt_len:整个数据包的长度。
buf_addr:指向数据缓冲区的指针。
next:指向下一个 rte_mbuf 的指针,用于支持多段数据包。
struct rte_mbuf {
void *buf_addr; /**< Virtual address of segment buffer. */
uint16_t data_len; /**< Amount of data in segment buffer. */
uint16_t pkt_len; /**< Total pkt len: sum of all segments. */
struct rte_mbuf *next; /**< Next segment of scattered packet. */
// 其他字段...
};
rte_mempool
DPDK 中用于管理对象(如 rte_mbuf)的内存池。它提供了高效的内存分配和释放机制。
常用函数:
rte_mempool_create:创建内存池。
rte_mempool_get:从内存池中获取对象。
rte_mempool_put:将对象放回内存池。
struct rte_mempool {
char name[RTE_MEMPOOL_NAMESIZE]; /**< Name of mempool. */
unsigned size; /**< Size of the mempool. */
unsigned cache_size; /**< Size of per-lcore local cache. */
// 其他字段...
};
rte_ring
用于实现无锁环形缓冲区的数据结构。它通常用于不同核之间的通信。
常用函数:
rte_ring_create:创建环形缓冲区。
rte_ring_enqueue:将对象放入环形缓冲区。
rte_ring_dequeue:从环形缓冲区中取出对象。
struct rte_ring {
char name[RTE_RING_NAMESIZE]; /**< Name of the ring. */
unsigned size; /**< Size of the ring. */
unsigned mask; /**< Mask (size-1) of ring. */
// 其他字段...
};
rte_eth_dev
用于表示以太网设备的结构体。它包含了设备的配置和状态信息。
常用字段:
data:指向设备特定数据的指针。
dev_ops:设备操作函数指针。
struct rte_eth_dev {
struct rte_eth_dev_data *data; /**< Pointer to device data. */
const struct eth_dev_ops *dev_ops; /**< Functions exported by PMD. */
// 其他字段...
};
rte_bbdev
用于表示基带设备的结构体。它主要用于无线通信系统中的物理层处理。
常用字段:
data:指向设备特定数据的指针。
dev_ops:设备操作函数指针。
struct rte_bbdev {
struct rte_bbdev_data *data; /**< Pointer to device data. */
const struct rte_bbdev_ops *dev_ops; /**< Functions exported by PMD. */
// 其他字段...
};
rte_timer
用于实现高精度定时器的结构体。它可以用于定时任务调度。
常用函数:
rte_timer_init:初始化定时器。
rte_timer_reset:重置定时器。
rte_timer_stop:停止定时器。
struct rte_timer {
uint64_t period; /**< Timer period in cycles. */
void (*f)(struct rte_timer *, void *); /**< Callback function. */
void *arg; /**< Argument to callback function. */
// 其他字段...
};
rte_flow
用于描述流量规则的结构体。它用于定义数据包处理的匹配和操作规则。
常用函数:
rte_flow_create:创建流量规则。
rte_flow_destroy:销毁流量规则。
struct rte_flow {
struct rte_flow_attr *attr; /**< Attributes of the flow. */
struct rte_flow_item *items; /**< Pattern to match. */
struct rte_flow_action *actions; /**< Actions to perform. */
// 其他字段...
};
rte_event
用于事件驱动框架的结构体。它用于管理和调度事件。
常用函数:
rte_event_dev_configure:配置事件设备。
rte_event_enqueue:将事件放入事件队列。
rte_event_dequeue:从事件队列中取出事件。
struct rte_event {
uint8_t event_type; /**< Type of event. */
uint8_t sub_event_type; /**< Sub-type of event. */
uint8_t priority; /**< Priority of event. */
// 其他字段...
};
rte_sched_port
用于流量调度的结构体。它用于管理和调度数据流。
常用函数:
rte_sched_port_config:配置调度端口。
rte_sched_port_enqueue:将数据包放入调度队列。
rte_sched_port_dequeue:从调度队列中取出数据包。
struct rte_sched_port {
struct rte_sched_port_params *params; /**< Scheduling parameters. */
// 其他字段...
};
rte_crypto_op
用于加密操作的结构体。它用于描述和管理加密任务。
常用字段:
type:加密操作类型。
sess:加密会话。
sym:对称加密操作参数。
struct rte_crypto_op {
enum rte_crypto_op_type type; /**< Type of crypto operation. */
struct rte_cryptodev_sym_session *sess; /**< Crypto session. */
union {
struct rte_crypto_sym_op sym; /**< Symmetric crypto operation. */
// 其他字段...
};
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。