1. int Framework::initialize()
  2. {
  3. DF_LOG_DEBUG("Framework::initialize");
  4. g_framework = new SyncObj;                                                    //这个应该是各同步类
  5. if (!g_framework) {
  6. DF_LOG_ERR("ERROR: falled to allocate g_framework");
  7. return -1;
  8. }
  9. g_run_status = new RunStatus;                                                //这个是状态标识
  10. if (!g_run_status) {
  11. DF_LOG_ERR("g_run_status allocation failed");
  12. return -2;
  13. }
  14. struct timespec ts = {};
  15. int ret = absoluteTime(ts);                                                   //获取绝对时间
  16. if (ret != 0) {
  17. DF_LOG_ERR("ERROR: absoluteTime returned (%d)", ret);
  18. return -4;
  19. }
  20. ret = HRTWorkQueue::instance().initialize();                                //初始化worker的线程
  21. if (ret < 0) {
  22. return ret - 10;
  23. }
  24. DF_LOG_DEBUG("Calling DevMgr::initialize");
  25. ret = DevMgr::initialize();                                                    //加了一个标志位true
  26. if (ret < 0) {
  27. return ret - 20;
  28. }
  29. DF_LOG_DEBUG("Calling WorkMgr::initialize");
  30. ret = WorkMgr::initialize();                                                    //这里也加了一个标志位true
  31. if (ret < 0) {
  32. return ret - 30;
  33. }
  34. return 0;
  35. }
  1. class SyncObj
  2. {
  3. public:
  4. SyncObj();                                                    //构造函数
  5. ~SyncObj() = default;
  6. void lock();                                                //对Mutex上锁
  7. void unlock();                                              //解锁
  8. // Returns 0 on success, ETIMEDOUT on timeout                //返回0成功, ETIMEDOUT是超时
  9. // Use timeout_us = 0 for blocking wait                    //使用timeout_us =0作为阻塞等待
  10. int waitOnSignal(unsigned long timeout_us);
  11. void signal();
  12. private:
  13. pthread_mutex_t m_lock{};                                    //这个大括号是C++11,统一初始化
  14. pthread_cond_t    m_new_data_cond{};
  15. };

src/lib/framework/src/driverFramework.cpp学习的更多相关文章

  1. laravel5.5 使用alipay SDK报错Cannot redeclare Encrypt() (previously declared in ../vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:448)

    错误现象: 在laravel5.5 中,使用alipaySDK 报错: Cannot redeclare Encrypt() (previously declared in ../vendor/lar ...

  2. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(一)

    题外话:本篇是对之前那篇的重排版.并拆分成两篇,免得没了看的兴趣. 前言 在Spring Framework官方文档中,这三者是放到一起讲的,但没有解释为什么放到一起.大概是默认了读者都是有相关经验的 ...

  3. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)

    接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...

  4. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion

    本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...

  5. <CPP学习>第一天 第一个CPP程序 hello word

    由于我是计算机类嵌入式专业的大一学生,之前一直使用的是生万物的C语言,了解了其过程性语言的特性及其基础语法,在大一下学期期末阶段想自学一下C++,其实在开学初就买了一本C++ Primer,但由于各种 ...

  6. Entity Framework 6源码学习--设置调试EF环境

    下载源代码 打开https://github.com/aspnet/EntityFramework6下载源代码. 建立调试解决方案 建立一个EntityFramework.Sample.sln在Ent ...

  7. 关于为什么window.frames[0].src不能获取src

    在DOM文档对象模型中,window对象处于最高层,而框架除了是当前窗体的一个节点外,本身也是独立window对象,当frames作为window对象时,有name属性, 而没有src属性,只有作为节 ...

  8. 如何在项目中引入 #include .h、.lib、 .dll、.cpp (转)

    源:http://blog.csdn.net/vippolka/article/details/8552735 在项目中引入.h..lib和dll.以及.cpp 1..h的引入 解决办法1:把  XX ...

  9. java 正则表达式获得html字符串中<img src>中的src中的url地址

    public static Set<String> getImgStr(String htmlStr) { Set<String> pics = new HashSet< ...

随机推荐

  1. 英语单词custom

    custom 来源——xshell快捷键 翻译 n. 习惯,惯例:风俗:海关,关税:经常光顾:[总称](经常性的)顾客 adj. (衣服等)定做的,定制的 高中 | 初中 词源 英语单词custom含 ...

  2. [CF852H]Bob and stages

    题意:给出平面上\(n\)个点,要求选出\(k\)个点,使得这些点形成一个凸包,且凸包内部没有点,求最大面积.无解输出\(0\). 题解:枚举凸包最左的点\(p\),删除所有在\(p\)左边的点,然后 ...

  3. C#中的6种常见的集合

    1.动态数组(ArrayList) 动态数组(ArrayList)代表了可被单独索引的对象的有序集合.它基本上可以替代一个数组.但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组 ...

  4. delphi 加入超链接

    delphi 加入超链接//在uses中加入ShellAPI//通过该lpFile参数可以实现链接到主页或ftp站点 ShellExecute(handle,nil,pchar('http://www ...

  5. appium 安装

    1.npm安装: cmd——cnpm install -g appium 卸载: cmd——npm uninstall -g appium 2.下载安装包安装: Appium server: 1. A ...

  6. VSphere随笔 - vCenter6.5安装配置手册

    一.前期准备: 1.物理机准备 一台已安装了ESXI虚拟化系统的机器: 2.DNS服务器准备 新建一台DNS服务器,添加vcenter的双向解析. (1)安装一台win2008的机器 (2)开启DNS ...

  7. WIN7 下的 filemon 版本

    http://blog.sina.com.cn/s/blog_594398e80100tx1q.html WIN7 下的 filemon 版本 (2011-09-26 22:26:12) 标签: fi ...

  8. zabbix部署agent

    1.下载zabbix源 rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarc ...

  9. js判断客户端是pc还是移动端

    navigator.userAgentNavigator 对象包含有关浏览器的信息.没有应用于 navigator 对象的公开标准,不过所有浏览器都支持该对象.userAgent 属性是一个只读的字符 ...

  10. VB - sendKey

    Set WshShell=WScript.CreateObject("WScript.Shell") WshShell = SendKeys string “string”:表示要 ...