intel dpdk rte_eal_cpu_init() 函数介绍

声明:此文档只做学习交流使用,请勿用作其他商业用途

author:朝阳_tony
E-mail : [email protected]
Create Date:2013-7-7 14:06:26 Sunday
Last Change: 2013-8-8 13:22:36 Thursday

转载请注明出处:http://blog.csdn.net/linzhaolover


此文中源码可以去http://dpdk.org/dev 网页中下载;更多官方文档请访问http://dpdk.org


请注意:此文请结合dpdk的源码去阅读,此文中提到的源码是dpdk-1.2.3版本,目前dpdk已经更新的1.3.1,1.3.1版本中的代码有很大的改变;


1、函数作用

rte_eal_cpu_init  读取当前系统cpu信息,并将其填入全局结构体rte_config中;dpdk的运行,要了解当前系统的core数,检查创建线程的合法化;


2、函数调用讲解

rte_eal_cpu_init(void) 在文件( dpdk/lib/librte_eal/linuxapp/eal/eal_lcore.c  )中;

/* get pointer to global configuration */
    config = rte_eal_get_configuration();
去获取rte_config结构体的指针,后面会将一些系统信息放入这个结构体中,这结构体很重要;

 /* open /proc/cpuinfo */
    f = fopen(PROC_CPUINFO, "r");
打开 /proc/cpuinfo  这个记录文件,去查询信息;

 if (parse_processor_id(buf, &lcore_id) == 0)
     continue;
去查询core信息;/* parse one line and try to match "processor : %d". */

if (parse_socket_id(buf, &socket_id) == 0)
    continue;
去查询物理cpu信息;/* parse one line and try to match "physical id : %d". */
lcore_config[lcore_id].detected = 1;
lcore_config[lcore_id].socket_id = socket_id;

lcore_config这个结构会存储cpu信息;

struct lcore_config 在dpdk/lib/librte_eal/linuxapp/eal/include/exec-env/rte_lcore.h文件中的定义;


config->lcore_count = count;
最后将cpu可以用的core数传递给rte_config-> locre_count 中;
而这个count与之前我们执行程序传递的 -c所产生的coremask有效掩码数相一致;


你可能感兴趣的:(api,Intel,dpdk)