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中:
- typedef unsigned char UINT8;
- typedef unsigned short UINT16;
- typedef unsigned int UINT32;
- typedef signed char INT8;
- typedef signed short INT16;
- typedef signed int INT32;
- typedef float FLOAT;
- typedef double DOUBLE;
- typedef char CHAR;
-
- typedef unsigned int BOOL;
- typedef unsigned long long UINT64;
- typedef signed long long INT64;
- typedef unsigned int UINTPTR;
- typedef signed int INTPTR;
举例如下:
- UINT32 size = 0;
- UINT32 LOS_TaskResume(UINT32 taskID)
- UINT32 LOS_TaskSuspend(UINT32 taskID)
| 类别 | 命名风格 | 形式 |
|---|---|---|
| 函数、结构体类型、枚举类型、联合体类型、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.1 Liteos 所有对外API 采用以:'LOS_'前缀的大驼峰风格
- LOS_TaskCreate
- LOS_TaskResume
- LOS_TaskSuspend
2.1.2 Liteos 所有模块间API 采用以:'Os'前缀的大驼峰风格
- OsTaskInit
- OsTaskEntry
2.1.3 Liteos 本源文件内调用的API:使用 'STATIC' 修饰的大驼峰风格,且不添加'Os'前缀
- STATIC VOID XxxRead(VOID) // 不加'Os' 前缀
- {
- return 0;
- }
-
- INT32 OsXxxAaa(VOID)
- {
- return XxxRead();
- }
2.2.1 Liteos arch 层提供给内核模块的API命名以:'Arch'前缀的大驼峰风格
- ArchIntLock
- ArchIntRestore
- ArchIntUnLock
2.2.2 Liteos arch 层对外(上层组件、三方应用等)API命名以:'Arch'前缀的大驼峰风格, 并采用宏重定义的方式,对外提供'LOS_'前缀的大驼峰风格API
- #define LOS_IntLock ArchIntLock
- #define LOS_IntRestore ArchIntRestore
- #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'为前缀的接口。
整体编码规范遵循OpenHarmony C语言编程规范,在命名方面遵循 posix 编码规范。
整体编码规范遵循OpenHarmony C语言编程规范,在命名方面遵循 cmsis 编码规范。