• OpenHarmony轻内核编码规范


    OpenHarmony Liteos 内核编码规范整体遵循 OpenHarmony C语言编程规范 , 在此基础上做以下额外补充。

    https://gitee.com/openharmony/docs/blob/master/zh-cn/contribute/OpenHarmony-c-coding-style-guide.md

    一、Liteos 内核编码规范附加要求(不包括C库、posix和cmsis)
    1、基础数据类型
    统一采用Liteos自定义数据类型,定义在los_compiler.h中:

    1. typedef unsigned char UINT8;
    2. typedef unsigned short UINT16;
    3. typedef unsigned int UINT32;
    4. typedef signed char INT8;
    5. typedef signed short INT16;
    6. typedef signed int INT32;
    7. typedef float FLOAT;
    8. typedef double DOUBLE;
    9. typedef char CHAR;
    10. typedef unsigned int BOOL;
    11. typedef unsigned long long UINT64;
    12. typedef signed long long INT64;
    13. typedef unsigned int UINTPTR;
    14. typedef signed int INTPTR;

    举例如下:

    1. UINT32 size = 0;
    2. UINT32 LOS_TaskResume(UINT32 taskID)
    3. UINT32 LOS_TaskSuspend(UINT32 taskID)

    2、总体命名原则

    类别命名风格形式
    函数、结构体类型、枚举类型、联合体类型、typedef定义的类型、函数式宏大驼峰AaaCxx
    局部变量、函数参数、宏定义、结构体中字段、联合体成员小驼峰aaaCxx
    全局变量、常量(在函数外部定义的由const修饰的)带'g_'前缀的小驼峰g_aaCxx
    宏(不包括函数式宏)、枚举值、goto 标签全大写、下划线分割AAA_BBB

    Liteos 内核API总体规则:

    • 前缀 'LOS_' 开头的API均为对外API,可被上层组件、应用、三方库等使用,该类接口的修改需要明确写明对外影响。

    • 前缀 'Os' 开头的API为内核模块间API,只允许内核模块间调用,不允许上层组件、应用、三方库等使用。

    • 前缀 'Arch' 开头的API为内核arch层对内核提供的API,不允许上层组件、应用、三方库等使用,如若上层组件、应用、三方库等需要按2.2.2 规则处理。

    2.1、Liteos API命名规则(不包括arch层)

    2.1.1 Liteos 所有对外API 采用以:'LOS_'前缀的大驼峰风格

    1. LOS_TaskCreate
    2. LOS_TaskResume
    3. LOS_TaskSuspend

    2.1.2 Liteos 所有模块间API 采用以:'Os'前缀的大驼峰风格

    1. OsTaskInit
    2. OsTaskEntry

    2.1.3 Liteos 本源文件内调用的API:使用 'STATIC' 修饰的大驼峰风格,且不添加'Os'前缀

    1. STATIC VOID XxxRead(VOID) // 不加'Os' 前缀
    2. {
    3. return 0;
    4. }
    5. INT32 OsXxxAaa(VOID)
    6. {
    7. return XxxRead();
    8. }

    2.2、Liteos arch 层API命名规则

    2.2.1 Liteos arch 层提供给内核模块的API命名以:'Arch'前缀的大驼峰风格

    1. ArchIntLock
    2. ArchIntRestore
    3. ArchIntUnLock

    2.2.2 Liteos arch 层对外(上层组件、三方应用等)API命名以:'Arch'前缀的大驼峰风格, 并采用宏重定义的方式,对外提供'LOS_'前缀的大驼峰风格API

    1. #define LOS_IntLock ArchIntLock
    2. #define LOS_IntRestore ArchIntRestore
    3. #define LOS_IntUnLock ArchIntUnLock

    2.2.3 Liteos arch 层本架构内调用(跨文件调用,或本文件内调用)的API采用以:大驼峰风格,不加 'Arch' 和 'Os' 前缀

    HwiInit
    
    • Liteos arch下的公共API(2.2.1 和2.2.2两种情况)原型的声明放在 arch/include 下对应的头文件中,每个架构下自调用的API(2.2.3描述的情况)放在自己架构内部头文件中。

    • 原则上产品、上层组件等只允许调用以'LOS_'为前缀的接口,不允许直接调用以'Arch'为前缀的接口。

    二、Liteos posix(kal/posix)编码规范要求

    整体编码规范遵循OpenHarmony C语言编程规范,在命名方面遵循 posix 编码规范。

    三、Liteos cmsis(kal/cmsis) 编码规范要求

    整体编码规范遵循OpenHarmony C语言编程规范,在命名方面遵循 cmsis 编码规范。

  • 相关阅读:
    Go单元测试及框架使用
    【springcloud】一些项目结构模式
    SpringMVC与JavaConfig笔记整理
    基于BS架构考试系统的设计与分析
    论文阅读:One Embedder, Any Task: Instruction-Finetuned Text Embeddings
    2022年高教社杯全国大学生数学建模竞赛-【比赛规则篇】比赛规则及比赛指导
    我的实用小软件(持续更新)
    2010-2019年208个地级市城乡收入差距泰尔指数
    EasyExcel 复杂数据导出
    云服务器哪家便宜?教你怎么在AWS免费领一年云服务器(领取篇)
  • 原文地址:https://blog.csdn.net/wjffsx/article/details/128175908