XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_init_registry.h 文件参考

使用注册表实现初始化。 更多...

#include "../xf_init_config_internal.h"
#include "xf_utils.h"
xf_init_registry.h 的引用(Include)关系图:

浏览源代码.

结构体

struct  _xf_init_registry_desc_t
 初始化函数详情结构体. 更多...
 
struct  _xf_init_registry_desc_node_t
 初始化函数链表结构体. 更多...
 
#define __constructor   __attribute__((constructor))
 
#define XF_INIT_EXPORT_REGISTRY(type, function)
 
#define XF_INIT_EXPORT_REGISTRY_SETUP(function)   XF_INIT_EXPORT_REGISTRY(SETUP, function)
 导出板级初始化函数, 全局函数实现.
 
#define XF_INIT_EXPORT_REGISTRY_BOARD(function)   XF_INIT_EXPORT_REGISTRY(BOARD, function)
 导出板级初始化函数, 全局函数实现.
 
#define XF_INIT_EXPORT_REGISTRY_PREV(function)   XF_INIT_EXPORT_REGISTRY(PREV, function)
 导出板级初始化函数, 全局函数实现.
 
#define XF_INIT_EXPORT_REGISTRY_CLEANUP(function)   XF_INIT_EXPORT_REGISTRY(CLEANUP, function)
 导出板级初始化函数, 全局函数实现.
 
#define XF_INIT_EXPORT_REGISTRY_DEVICE(function)   XF_INIT_EXPORT_REGISTRY(DEVICE, function)
 导出板级初始化函数, 全局函数实现.
 
#define XF_INIT_EXPORT_REGISTRY_COMPONENT(function)   XF_INIT_EXPORT_REGISTRY(COMPONENT, function)
 导出板级初始化函数, 全局函数实现.
 
#define XF_INIT_EXPORT_REGISTRY_ENV(function)   XF_INIT_EXPORT_REGISTRY(ENV, function)
 导出板级初始化函数, 全局函数实现.
 
#define XF_INIT_EXPORT_REGISTRY_APP(function)   XF_INIT_EXPORT_REGISTRY(APP, function)
 导出板级初始化函数, 全局函数实现.
 
enum  _xf_init_registry_type_t {
  XF_INIT_REGISTRY_TYPE_SETUP = 0x00 , XF_INIT_REGISTRY_TYPE_BOARD , XF_INIT_REGISTRY_TYPE_PREV , XF_INIT_REGISTRY_TYPE_CLEANUP ,
  XF_INIT_REGISTRY_TYPE_DEVICE , XF_INIT_REGISTRY_TYPE_COMPONENT , XF_INIT_REGISTRY_TYPE_ENV , XF_INIT_REGISTRY_TYPE_APP ,
  XF_INIT_REGISTRY_TYPE_MAX
}
 初始化功能类型。 更多...
 
typedef enum _xf_init_registry_type_t xf_init_registry_type_t
 初始化功能类型。
 
typedef int(* xf_init_fn_t) (void)
 初始化函数类型.
 
typedef struct _xf_init_registry_desc_t xf_init_registry_desc_t
 初始化函数详情结构体.
 
typedef struct _xf_init_registry_desc_node_t xf_init_registry_desc_node_t
 初始化函数链表结构体.
 
void xf_init_registry_register_desc_node (xf_init_registry_desc_node_t *p_desc_node, xf_init_registry_type_t type)
 (内部函数)注册初始化函数,无需直接调用,使用宏调用
 
void xf_init_from_registry (void)
 注册函数收集后,统一在此调用初始化函数
 

详细描述

使用注册表实现初始化。

作者
catcatBlue (catca.nosp@m.tblu.nosp@m.e@qq..nosp@m.com)
版本
1.0
日期
2024-07-02

Copyright (c) 2024, CorAL. All rights reserved.

在文件 xf_init_registry.h 中定义.

宏定义说明

◆ __constructor

#define __constructor   __attribute__((constructor))

在文件 xf_init_registry.h40 行定义.

◆ XF_INIT_EXPORT_REGISTRY

#define XF_INIT_EXPORT_REGISTRY (   type,
  function 
)
值:
void __used __constructor __xf_init_registry_##function(void) { \
static const xf_init_registry_desc_t CONCAT(__xf_init_desc_, function) = { \
.func = (function), \
.func_name = XSTR(function), \
};\
static xf_init_registry_desc_node_t CONCAT(__xf_init_desc_node_, function) = { \
.node = XF_LIST_HEAD_INIT(CONCAT(__xf_init_desc_node_, function).node), \
.p_desc = &CONCAT(__xf_init_desc_, function), \
};\
xf_init_registry_register_desc_node(&CONCAT(__xf_init_desc_node_, function), XF_INIT_REGISTRY_TYPE_##type); \
}
#define __used
编辑器不会优化掉被 __used 修饰的符号, 即使在代码中即使没有使用到该符号。
Definition xf_attr.h:60
#define XF_LIST_HEAD_INIT(name)
静态定义时初始化链表。
Definition xf_list.h:82
#define CONCAT(a, b)
拼接。
Definition xf_predef.h:71
#define XSTR(x)
参数字符串化。 见:https://gcc.gnu.org/onlinedocs/gcc-3.4.3/cpp/Stringification.html
Definition xf_predef.h:110
初始化函数链表结构体.
初始化函数详情结构体.
const xf_init_fn_t func
#define __constructor

在文件 xf_init_registry.h112 行定义.

◆ XF_INIT_EXPORT_REGISTRY_SETUP

#define XF_INIT_EXPORT_REGISTRY_SETUP (   function)    XF_INIT_EXPORT_REGISTRY(SETUP, function)

导出板级初始化函数, 全局函数实现.

注意
不要直接使用该宏. 请使用 XF_INIT_EXPORT_BOARD.
参数
function初始化函数.

在文件 xf_init_registry.h132 行定义.

◆ XF_INIT_EXPORT_REGISTRY_BOARD

#define XF_INIT_EXPORT_REGISTRY_BOARD (   function)    XF_INIT_EXPORT_REGISTRY(BOARD, function)

导出板级初始化函数, 全局函数实现.

注意
不要直接使用该宏. 请使用 XF_INIT_EXPORT_BOARD.
参数
function初始化函数.

在文件 xf_init_registry.h141 行定义.

◆ XF_INIT_EXPORT_REGISTRY_PREV

#define XF_INIT_EXPORT_REGISTRY_PREV (   function)    XF_INIT_EXPORT_REGISTRY(PREV, function)

导出板级初始化函数, 全局函数实现.

注意
不要直接使用该宏. 请使用 XF_INIT_EXPORT_PREV.
参数
function初始化函数.

在文件 xf_init_registry.h150 行定义.

◆ XF_INIT_EXPORT_REGISTRY_CLEANUP

#define XF_INIT_EXPORT_REGISTRY_CLEANUP (   function)    XF_INIT_EXPORT_REGISTRY(CLEANUP, function)

导出板级初始化函数, 全局函数实现.

注意
不要直接使用该宏. 请使用 XF_INIT_EXPORT_BOARD.
参数
function初始化函数.

在文件 xf_init_registry.h159 行定义.

◆ XF_INIT_EXPORT_REGISTRY_DEVICE

#define XF_INIT_EXPORT_REGISTRY_DEVICE (   function)    XF_INIT_EXPORT_REGISTRY(DEVICE, function)

导出板级初始化函数, 全局函数实现.

注意
不要直接使用该宏. 请使用 XF_INIT_EXPORT_DEVICE.
参数
function初始化函数.

在文件 xf_init_registry.h168 行定义.

◆ XF_INIT_EXPORT_REGISTRY_COMPONENT

#define XF_INIT_EXPORT_REGISTRY_COMPONENT (   function)    XF_INIT_EXPORT_REGISTRY(COMPONENT, function)

导出板级初始化函数, 全局函数实现.

注意
不要直接使用该宏. 请使用 XF_INIT_EXPORT_COMPONENT.
参数
function初始化函数.

在文件 xf_init_registry.h177 行定义.

◆ XF_INIT_EXPORT_REGISTRY_ENV

#define XF_INIT_EXPORT_REGISTRY_ENV (   function)    XF_INIT_EXPORT_REGISTRY(ENV, function)

导出板级初始化函数, 全局函数实现.

注意
不要直接使用该宏. 请使用 XF_INIT_EXPORT_ENV.
参数
function初始化函数.

在文件 xf_init_registry.h186 行定义.

◆ XF_INIT_EXPORT_REGISTRY_APP

#define XF_INIT_EXPORT_REGISTRY_APP (   function)    XF_INIT_EXPORT_REGISTRY(APP, function)

导出板级初始化函数, 全局函数实现.

注意
不要直接使用该宏. 请使用 XF_INIT_EXPORT_APP.
参数
function初始化函数.

在文件 xf_init_registry.h195 行定义.

类型定义说明

◆ xf_init_registry_type_t

初始化功能类型。

◆ xf_init_fn_t

typedef int(* xf_init_fn_t) (void)

初始化函数类型.

返回
int

在文件 xf_init_registry.h70 行定义.

◆ xf_init_registry_desc_t

初始化函数详情结构体.

desc: description.

注解
基于 section 初始化时用.

◆ xf_init_registry_desc_node_t

初始化函数链表结构体.

注解
基于 registry 初始化时用.

枚举类型说明

◆ _xf_init_registry_type_t

初始化功能类型。

枚举值
XF_INIT_REGISTRY_TYPE_SETUP 

板级

XF_INIT_REGISTRY_TYPE_BOARD 

板级

XF_INIT_REGISTRY_TYPE_PREV 

组件级预初始化

XF_INIT_REGISTRY_TYPE_CLEANUP 

组件级预初始化

XF_INIT_REGISTRY_TYPE_DEVICE 

设备级

XF_INIT_REGISTRY_TYPE_COMPONENT 

组件级

XF_INIT_REGISTRY_TYPE_ENV 

环境级

XF_INIT_REGISTRY_TYPE_APP 

应用程序级

XF_INIT_REGISTRY_TYPE_MAX 

在文件 xf_init_registry.h50 行定义.

函数说明

◆ xf_init_registry_register_desc_node()

void xf_init_registry_register_desc_node ( xf_init_registry_desc_node_t p_desc_node,
xf_init_registry_type_t  type 
)

(内部函数)注册初始化函数,无需直接调用,使用宏调用

参数
p_desc_node函数详情结构体
type注册初始化函数的类型

在文件 xf_init_registry.c48 行定义.

◆ xf_init_from_registry()

void xf_init_from_registry ( void  )

注册函数收集后,统一在此调用初始化函数

在文件 xf_init_registry.c61 行定义.