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. 08-图7 公路村村通(30 分)Prim

    现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N) ...

  2. JavaScript实现Word、Excel、PPT在线预览

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_27626333/article/d ...

  3. meta标签 使用说明(http-equiv、refresh、seo)

    meta标签 使用说明(http-equiv.refresh.seo) meta标签,是在head标签里面,一般用做页面描述的.它的内容,用来描述页面一些信息的,如类型.编码.作者.简介等!虽然,它不 ...

  4. Centos 7.3 配置Xmanager XDMCP

    我们通常需要远程桌面,这会带来很好的便利性,而Centos7的XDMCP配置过程发生了变化,添加了很多新特性,初期难免会不适应,但新系统终究还是不错的.下面看看Centos7下如何配置XManager ...

  5. drf 分页,获取fk,choise,m2m等字段数据(序列化)

    1.什么是restful规范 是一套规则,用于程序之间进行数据交换的约定. 他规定了一些协议,对我们感受最直接的的是,以前写增删改查需要写4个接口,restful规范的就是1个接口,根据method的 ...

  6. Pipenv管理项目环境--Django项目的一些最佳实践

    virtualenv --- 使用不方便 提升效率,管理更便捷--- pipenv 新建环境:: pip3 install pipenv 在项目下,用pipenv安装 Djagno pipenv in ...

  7. 通过生成HFile导入HBase

    要实现DataFrame通过HFile导入HBase有两个关键步骤 第一个是要生成Hfile第二个是HFile导入HBase 测试DataFrame数据来自mysql,如果对读取mysql作为Data ...

  8. 插件化框架解读之so 文件加载机制(四)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 提问 本文的结论是跟着 System.loadlibrary() ...

  9. [fw]IDT表的初始化

    IDT表的初始化  linux内核的中断描述符表IDT是一个全局的数据,在i386平台上被定义为: struct desc_struct idt_table[256] __attribute__((_ ...

  10. Java内存模型之happens-before原则

    我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,但是我们可以指定某些规则,这规则就是happens-before,从JDK 5 开始,JMM就使用happens-before的概念来阐述 ...