DPDK 简单定时器

36 阅读1分钟

简介

一般使用rte_timer.h来实现定时器,但是需要一组API接口来完成;如果想一个API就搞定呢?

可以使用rte_alarm.h中定义的rte_eal_alarm_set()函数,且回调函数只会被执行一次。

int rte_eal_alarm_set(uint64_t us, rte_eal_alarm_callback cb, void *cb_arg)

  • us The time in microseconds before the callback is called
  • cb The function to be called when the alarm expires
  • cb_arg Pointer parameter to be passed to the callback function

示例

在回调函数中再次调用rte_eal_alarm_set(),实现每秒触发回调函数的定时器效果。

#include <rte_alarm.h>

static void
alarm_test(__rte_unused void *arg)
{
	printf("xftest alarm \n");
	rte_eal_alarm_set(1000*1000, alarm_test, NULL);
}

int
main(int argc, char **argv)
{
    ...
    rte_eal_alarm_set(1000*1000, alarm_test, NULL);
    ...
}