1# bootstrap服务启动组件 2 3 4bootstrap服务启动组件实现了服务的自动初始化,即服务的初始化函数无需显式调用,而是将其使用宏定义的方式申明,就会在系统启动时自动被执行。实现原理是将服务启动的函数通过宏定义的方式申明之后,放在预定义好的zInit代码段中,系统启动的时候调用OHOS_SystemInit接口遍历该代码段并调用其中的函数。因此,需要在链接脚本中添加zInit段,并且在main函数里调用OHOS_SystemInit接口。 5 6 7zInit段的添加可参考已有的Hi3861平台的链接脚本,文件路径为vendor/hisi/hi3861/hi3861/build/link/link.ld.S。 8 9 10用于实现服务的自动初始化的宏定义接口请参见启动恢复子系统的[API接口文档](https://device.harmonyos.com/cn/docs/develop/apiref/init-0000001054598113)。 11 12 13## 接口说明 14 15bootstrap服务自动初始化宏如表1所述。 16 17 **表1** 主要的服务自动初始化宏 18 19| 接口名 | 描述 | 20| -------- | -------- | 21| SYS_SERVICE_INIT(func) | 标识核心系统服务的初始化启动入口。 | 22| SYS_FEATURE_INIT(func) | 标识核心系统功能的初始化启动入口。 | 23| APP_SERVICE_INIT(func) | 标识应用层服务的初始化启动入口。 | 24| APP_FEATURE_INIT(func) | 标识应用层功能的初始化启动入口。 | 25 26 27## 开发实例 28 29 服务自动初始化宏使用实例: 30 31``` 32void SystemServiceInit(void) { 33 printf("Init System Service\n"); 34} 35SYS_SERVICE_INIT(SystemServiceInit); 36 37void SystemFeatureInit(void) { 38 printf("Init System Feature\n"); 39} 40SYS_FEATURE_INIT(SystemFeatureInit); 41 42void AppServiceInit(void) { 43 printf("Init App Service\n"); 44} 45APP_SERVICE_INIT(AppServiceInit); 46 47void AppFeatureInit(void) { 48 printf("Init App Feature\n"); 49} 50APP_FEATURE_INIT(AppFeatureInit); 51 52// 日志打印顺序为: 53// Init System Service 54// Init System Feature 55// Init App Service 56// Init App Feature 57``` 58