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. */
        // 其他字段...
    };
};


putao
5 声望0 粉丝

推动世界向前发展,改善民生。