-
#include <stdio.h>
-
#include <string.h>
-
#include <stdint.h>
-
#include <errno.h>
-
#include <sys/queue.h>
-
-
#include <rte_memory.h>
-
#include <rte_memzone.h>
-
#include <rte_launch.h>
-
#include <rte_eal.h>
-
#include <rte_per_lcore.h>
-
#include <rte_lcore.h>
-
#include <rte_debug.h>
-
-
static int lcore_hello(__attribute__((unused)) void *arg) /*要在多个cpu上运行的代码*/
-
{
-
unsigned lcore_id;
-
lcore_id = rte_lcore_id();
-
/* if(lcore_id == 2){ /*test code 1*/
-
#include <unistd.h>
-
sleep (1);
-
} */
-
printf("hello from core %u\n", lcore_id);
-
return 0;
-
}
-
-
int main(int argc, char **argv)
-
{
-
int ret;
-
unsigned lcore_id;
-
-
ret = rte_eal_init(argc, argv);
-
if (ret < 0)
-
rte_panic("Cannot init EAL\n");
-
-
/* call lcore_hello() on every slave lcore */
-
RTE_LCORE_FOREACH_SLAVE(lcore_id) {
-
rte_eal_remote_launch(lcore_hello, NULL, lcore_id);
-
}
-
-
/* call it on master lcore too */
-
lcore_hello(NULL);
-
-
rte_eal_mp_wait_lcore(); /*test point 1*/
-
return 0;
-
}
这个例子比较简单,主要就是学习让代码运行在各个cpu上的接口rte_eal_remote_launch, 以及等待各个cpu运行完成再返回的接口rte_eal_mp_wait_lcore,。其实就跟绑定cpu 是一样的
添加了test code 1, 测试一下rte_eal_mp_wait_lcore的作用是否如自己理解的那样,等待所有cpu运行完成注册的函数lcore_hello才返回,当注释掉test point 1的时候,结果如下:
打开test point 1的注释结果如下:
结论,对rte_eal_mp_wait_lcore的理解正确
阅读(1891) | 评论(0) | 转发(0) |