intel dpdk rte_eal_cpu_init() 函数介绍

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

author:朝阳_tony
E-mail : linzhaolover@gmail.com
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有效掩码数相一致;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值