说明
这一篇文章将介绍DPDK的rte_interrupt, rte_epoll, rte_timer, rte_alarm,这些功能是网卡驱动,pci以及其他的lib的基础。
由于个人水平所限,若所写的博文中存在错误,希望大家能帮忙指出。
一,简单介绍
这一篇文章主要介绍DPDK中的以下四种功能:
1,rte_interrupt,用于可以注册需要监听的中断信号以及对应的回调函数(Callback)。
2,rte_epoll允许用户通过epoll对象监听指定的fd, 并指定对应的回调函数。
3,rte_timer是DPDK的计时器,提供了delay, sleep等功能。
4,rte_alarm用于设置alarm,即设置一个定时器用于在未来的某个时间点触发一个alarm中断信号。
二,背景知识
这部分的代码可能需要两个背景知识,IO多路复用和self-pipe trick。
若引用以上的链接侵犯了原作者的权利,请告知本人,将即刻删除。
三,相关结构体的说明
*******************rte_eal_interrupts.h*******************
struct rte_epoll_data {
//指定了epoll对象的event
uint32_t event; /**< event type */
void *data; /**< User data */
//事件发生后需要调用的callback及其参数
rte_intr_event_cb_t cb_fun; /**< IN: callback fun */
void *cb_arg; /**< IN: callback arg */
};
/** interrupt epoll event obj, taken by epoll_event.ptr */
struct rte_epoll_event {
// 指定epoll的相关状态信息 : EXEC表示繁忙(正在处理中断信号), VALID表示空