> 文档中心 > OpenHarmony轻内核编码规范

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中:

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 longINT64;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_TaskCreateLOS_TaskResumeLOS_TaskSuspend

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

OsTaskInitOsTaskEntry

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'前缀的大驼峰风格

ArchIntLockArchIntRestoreArchIntUnLock

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 编码规范。