当前位置: 首页 > news >正文

冕宁住房和建设局网站重庆网站推广的网站

冕宁住房和建设局网站,重庆网站推广的网站,做网站的微信号,饭店网站建设策划方案前言 最近在调试 RT-Smart 上的用户态 mq#xff08;消息队列#xff09;时#xff0c;遇到一个奇怪的问题#xff0c;这个例程打印了一下获取的时间#xff0c;就可以正常的工作#xff08;超时退出#xff09;#xff0c;否则#xff0c;就一直卡住#xff08;无法…前言 最近在调试 RT-Smart 上的用户态 mq消息队列时遇到一个奇怪的问题这个例程打印了一下获取的时间就可以正常的工作超时退出否则就一直卡住无法超时 虽然没有认真的阅读用户态 mq 的具体实现代码大概能了解到底层对接了 IPC 消息队列如果一直卡住可能的原因是超时时间参数没有正确传递下 排查思路 当前未采用 qemu 调试直接使用板子验证所以就手动增加了一些 LOG用户态应用与 内核态的应用很快定位到是 内核代码 software\kernel\components\libc\compilers\common\ctime.c 中的函数 rt_timespec_to_tick 返回值异常导致的 开启log 打印一下时间就可以【正常】退出 不开启 log发现卡住了也就是 ipc 一直没有超时 继续排查 发现 tick 计算的有问题异常的 tick也就是 IPC timeout 非常大 找到根源int 型乘法计算溢出 tick second * RT_TICK_PER_SECOND nsecond * RT_TICK_PER_SECOND / NANOSECOND_PER_SECOND;这里 nsecond 定义为 int 类型int 是 32位所以当 nsecond 较大时再 乘上 RT_TICK_PER_SECOND, 也就是 1000由于32位有符号整数溢出变为了【负值】。而此时 second 比较小造成 tick 为一个 负值但是 timeout 是无符号的所以把一个负值当成无符号数就是一个比较大的数值 解决方法 第一种把 nsecond 定义为 int64_t 类型也就是 long long 类型这样计算时会按照 64位计算不会溢出 第二种把 tick second * RT_TICK_PER_SECOND nsecond * RT_TICK_PER_SECOND / NANOSECOND_PER_SECOND; 改为 tick second * RT_TICK_PER_SECOND nsecond / (NANOSECOND_PER_SECOND / RT_TICK_PER_SECOND); 修复后再次运行的效果此时 tick 19994与 20秒比较匹配 msh /kernel./mq_test msh /kernel31111111111111111111111111111 msg_queue is 3 main : enter sys_mq_timedreceive : 5974 1514764824-963161303 tp : 1676378 - 1514764804 tm_spec : 1676378 - 1514764824 rt_timespec_to_tick : line - 730, second : 19, nsecond : 994459929 rt_timespec_to_tick : tick 19994 mq_timedreceive : tick 19994 mq_receive()小结 这问题如果粗心一点可能会直接【放过】比如加了 LOG 打印发现没有问题但是细节决定成败有些 BUG 可能出现的方式很奇特这就是测试代码需要有一定的覆盖性各个场景下都需要验证比如 Debug 版本、 Release 版本都测试一下看看现象是否一致。 经过了解 int 溢出也发现了一些基础性的知识点如 32位与64位 CPU 下 long long 类型都是 8字节如果使用 long 类型定义 nsecond在 32位平台上是 4字节依旧是异常有问题 修复问题后再次验证发现定时比较的准确了偏差很小比如 20秒20000 个 tick,而不是 19001 个 tick
http://www.sadfv.cn/news/28354/

相关文章:

  • 网站做的和别人一样违法专业的网站制作开发公司
  • 多就能自己做网站网站内容编辑怎么做
  • 做家政下载什么网站或什么群呢南乐网站开发
  • 成都sw网站建设wordpress 4.2.8
  • 全国旅游景点网站开源软件开发项目管理文档
  • 做网站如何防止被骗企业网站定制开发价格
  • 扬州电子商务网站建设代做机械设计的网站
  • 品牌网站推广软件wordpress 企业知识库
  • 快速搭建网站框架云尚网络科技有限公司介绍
  • 滁州哪里做网站建设网站建站
  • 网站设计教程网站dw网页制作教程div视频教程
  • 做网站优化有什么作用网站这么做404页面
  • 虚拟主机网站建设中国建设银行网站外汇
  • 网站建设策划书1万字网络架构图和拓扑图
  • 徐州网站建设市场河北建设工程信息网招标
  • 做网站后台的时候要注意什么网站备案账号
  • wordpress分类目录keywordseo关键词挖掘
  • 门户网站网页设计规范wordpress怎么接受邮件
  • 制作网站的模板下载阳江市商品房备案查询
  • 公司建网站哪家南宁好的网站建设公司
  • 网站源码上传安装模板网站建设教程
  • 站长工具乱码公司变更名字需要什么手续
  • 做旅游网站的产品经理如何吴桥网站建设价格
  • 新网站做内链百度关键词搜索技巧
  • 哪家公司做网站开发做得比较好哔哩哔哩网页版官网在线观看
  • 营销型网站建设818gx做网站的背景怎么做
  • 微信公众号的模板网站花钱做网站不给部署
  • 低价网站建设费用预算wordpress增加网址大全
  • 网站开发 前景建设局职责
  • 网站外链坏处免费行情网站链接