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)
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_'前缀的大驼峰风格
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、Liteos arch 层API命名规则
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'为前缀的接口。
二、Liteos posix(kal/posix)编码规范要求
整体编码规范遵循OpenHarmony C语言编程规范,在命名方面遵循 posix 编码规范。
三、Liteos cmsis(kal/cmsis) 编码规范要求
整体编码规范遵循OpenHarmony C语言编程规范,在命名方面遵循 cmsis 编码规范。