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

author:朝阳_tony
E-mail : linzhaolover@gmail.com
Create Date: 2013-7-11 17:17:51  Thursday
Last Change: 2013-7-11 17:48:07 Thursday

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

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

1、hpet相关介绍

HPET时钟支持。允许内核使用 HPET 。HPET是替代8254芯片的新一代定时器,i686及以上级别的主板都支持,可以安全的选上。但是,HEPT只会在支持它的平台和BIOS上运行。如 果不支持,8254将会激活。选N,将继续使用8254时钟。

2、函数用途

rte_eal_hpet_init()主要用于系统hpet的初始化;包括打开设备描述符/dev/hpet;映射地址空间,创建hpet_msb_inc线程等;

3、函数详解

fd = open(DEV_HPET, O_RDONLY);

去打开/dev/hpet设备文件描述符;

 eal_hpet = mmap(NULL, 1024, PROT_READ, MAP_SHARED, fd, 0);

映射一块1024大小的内存空间;

ret = pthread_create(&msb_inc_thread_id, NULL, hpet_msb_inc, NULL);

创建hpet_msb_inc线程;

在线程里主要是更新eal_hpet_msb这全局的变量;
static __attribute__((noreturn)) void *
hpet_msb_inc(__attribute__((unused)) void *arg)
{uint32_t t;while (1) {t = (eal_hpet->counter_l >> 30);if (t != (eal_hpet_msb & 3))eal_hpet_msb ++;sleep(10);}
}
之所以用hpet模块,我想可能是dpdk需要一个更加精准的时钟;去执行延时等操作;
在程序中用的比较多的是下面这个函数,用于微妙的延迟;
void
rte_delay_us(unsigned us)
{uint64_t start;uint64_t ticks;ticks = (uint64_t)us * 1000ULL * 1000ULL * 1000ULL;ticks /= eal_hpet_resolution_fs;start = rte_get_hpet_cycles();while ((rte_get_hpet_cycles() - start) < ticks)rte_pause();
}

而上面用的rte_get_hpet_cycles()是为了获取那个全局的变量eal_hpet_msb的值,去确定延时是否到达;

技术水平有待提高,如有不对的地方希望读者指正,互相学习;O(∩_∩)O~

intel dpdk api rte_eal_hpet_init() 函数介绍相关推荐

  1. C++文件操作API函数介绍

    转自 http://www.studentblog.net/m/tonycat/archives/2006/26364.html 文件的基本概念 所谓"文件"是指一组相关数据的有序 ...

  2. 混音器原理及Mixer API函数介绍

    混音器原理及Mixer API函数介绍   为了理解Mixer API是如何工作的,首先我们得弄清楚一个典型声卡的硬件组成.因此非常有必要去建立一个声卡模型,此声卡应拥有多个典型的组件并且这些组件都是 ...

  3. 凌华科技aTCA-6200A服务器刀片完美搭配Intel® DPDK技术显著提升包转发服务性能

    前言 近年来,随着市场和技术的发展,越来越多的网络基础架构开始向基于通用计算平台或模块化计算平台的架构方向融合,用以支持和提供多样的网络单元和丰富的功能,如应用处理.控制处理.包处理.信号处理等.除了 ...

  4. DPDK — 扩展私有函数库

    目录 文章目录 目录 DPDK 扩展第三方函数库 扩展一个新的 libfoo 库 添加扩展库的启用配置 实现扩展库 添加扩展库的 Makefile 重新编译安装 DPDK 的目标环境 在自己的 DPD ...

  5. 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

     1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端 ...

  6. Appium——api常用函数

    appium常用函数介绍: 获取页面信息: 1. def get_current_activity(cls, driver): ''' 获取当前页面的activity :param driver: : ...

  7. Query框架学习第九天:jQuery工具函数介绍与使用

    j jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用j ...

  8. jQuery框架学习第九天:jQuery工具函数介绍与使用

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  9. VC API常用函数简单例子大全(1-89)

    第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ...

最新文章

  1. Flutter开发Flutter与原生OC、Java的交互通信-1(47)
  2. python3 问题 No module named _sqlite3 解决方案
  3. eclipse / 绑定 OpenJDK 1.8 Java 源码的方法
  4. 太酷了!龙族幻想时装制作的秘密都在这里了!
  5. 进阶篇-用户界面:4.Android中常用组件
  6. m文件中函数的执行顺序
  7. Tablestore入门手册-UpdateRow接口详解
  8. java接口继承编程题_JavaSE习题 继承接口和泛型
  9. Spark SQL运行原理和架构
  10. 基于hadoop构建对象存储系统_Hadoop社区正式支持腾讯云对象存储COS
  11. 营业执照吊销后,股权何去何从?
  12. eclipse代码加版权头插件
  13. keras 中文文档学习一
  14. 基于聚合数据的移动联通基站API接口的php完整代码实例
  15. slidebox使用教程 设定焦点数量
  16. php安全漏洞怎么修复,thinkphp漏洞如何修复
  17. 【IEEE】IEEE论文接收后proof(校样)全流程实例讲解
  18. 有什么免费的视频格式转换工具?快试试这4款,堪称“良心”工具
  19. 凡事逐步积累万丈高楼平地起事情的必然趋势
  20. Java中将String转成Long或long

热门文章

  1. 【论文笔记】A Survey on Federated Learning: The Journey From Centralized to Distributed On-Site Learning a
  2. 全新在线制作banner网站广告横幅源码
  3. UITableView性能优化
  4. 操作系统春招面试复习之:设备管理
  5. 开源知识管理系统_逛了4年Github,一口气把我收藏的 Java 开源项目分享给你
  6. P4094 [HEOI2016/TJOI2016]字符串 [SA + 主席树]
  7. 探究 LightHouse 工作流程
  8. C# 程序关闭托盘图标不会自动消失
  9. 停止等待协议与连续 ARQ 协议
  10. 制作卡通(动漫风)效果