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

【TDengine源码阅读】TAOS_DEF_ERROR_CODE(mod, code)

2025年5月13日,周二清晨


#define TAOS_DEF_ERROR_CODE(mod, code) ((int32_t)((0x80000000 | ((mod)<<16) | (code))))

这段代码定义了一个宏 TAOS_DEF_ERROR_CODE(mod, code),用于生成一个32位有符号整数(int32_t)形式的错误码。其核心逻辑是通过位运算将模块标识符(mod)和具体错误码(code)组合成一个唯一的错误码值。以下是逐步解析:

  1. 宏结构
    • 宏名:TAOS_DEF_ERROR_CODE,接受两个参数 mod(模块标识符)和 code(具体错误码)。

    • 最终生成的错误码类型为 int32_t(32位有符号整数)。

  2. 位运算逻辑
    0x80000000:十六进制常量,二进制为 10000000 00000000 00000000 00000000,表示最高位(符号位)为1,确保生成的错误码为负数(通常用于标识错误状态)。

    (mod) << 16:将模块标识符 mod 左移16位,使其占据第16~31位(共16位)。例如,若 mod = 0x01,左移后为 0x00010000

    (code):直接使用 code 的值,占据低16位(第0~15位)。

    • 通过按位或运算 | 将三部分合并:

    错误码 = 0 x 80000000 ∣ ( mod ≪ 16 ) ∣ code \text{错误码} = 0x80000000 \, | \, (\text{mod} \ll 16) \, | \, \text{code} 错误码=0x80000000(mod16)code

  3. 示例
    假设 mod = 0x01code = 0x0A,则:
    0x80000000 | (0x01 << 16) | 0x0A

    • 等价于 0x80000000 | 0x00010000 | 0x0000000A

    • 结果为 0x8001000A(十进制值 -2147416054)。

  4. 应用场景
    • 这种设计常用于系统或库中,通过模块标识符和错误码的组合,快速定位错误来源。例如:

    ◦ 模块A(mod = 0x01)的错误码 0x0A 会被编码为 0x8001000A

    ◦ 模块B(mod = 0x02)的错误码 0x0A 则为 0x8002000A,避免冲突。

  5. 注意事项
    • 参数范围:modcode 需确保在合法范围内(如 mod 不超过16位,code 不超过16位),否则可能导致位溢出。

    • 符号位:最高位固定为1,生成的错误码始终为负数,符合许多系统将负数作为错误码的惯例。

参考类似位操作宏的实现逻辑,这种设计在嵌入式或系统编程中常见,用于高效编码和解码错误信息。

相关文章:

  • Babylon.js学习之路《四、Babylon.js 中的相机(Camera)与视角控制》
  • plus-uiRuoYi-Vue-Plus 基于pgSql本地运行实践
  • 20250512期:基于arcpy数据驱动的大批量规范化出图
  • 从入门到精通:Drools全攻略
  • centos9安装docker 配置docker代理
  • 阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)
  • ubuntu部署supabase
  • flutter编译时 设置jdk版本
  • 在Java中实现Parcelable接口和Serializable接口有什么区别?
  • 工程师必读! 3 个最常被忽略的 TDR 测试关键细节与原理
  • T-BOX硬件方案深度解析:STM32与SD NAND Flash存储的完美搭配
  • 音频转文字-在线工具包及使用记录
  • 2025年PMP 学习十一 第8章 项目质量管理(8.3)
  • 分布式链路跟踪
  • qemu热迁移后内存占用突增问题
  • C++23 ranges::range_adaptor_closure:程序定义的范围适配器闭包的辅助类
  • Starrocks的主键表涉及到的MOR Delete+Insert更新策略
  • 【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.4 模型部署与定期评估
  • 从HTTP轮询到WebSocket:如何让体育API性能提升100倍?
  • 第四届长三角国际应急博览会开幕,超3000件前沿装备技术亮相
  • 特朗普开启第二任期首次外访:中东行主打做生意,不去以色列
  • 《AI×SCIENCE十大前沿观察》9:合成数据和数据基础设施
  • 中国一直忽视欧盟经贸问题关切?外交部:事实证明中欧相互成就,共同发展
  • 《淮水竹亭》:一手好牌,为何打成这样
  • 哈尔滨工业大学原副校长王魁业逝世,享年92岁