16#if XF_INIT_IMPL_METHOD == XF_INIT_IMPL_BY_REGISTRY || XF_INIT_IMPL_METHOD == XF_INIT_IMPL_BY_CONSTRUCTOR
26#if XF_INIT_IMPL_METHOD == XF_INIT_IMPL_BY_REGISTRY
27static void xf_init_explicit_call_registry(
void);
42#define s_head(x) s_init_head[x]
51 || (NULL ==
s_head(type).next))) {
55 || (NULL == p_desc_node->
node.
next))) {
68#if XF_INIT_IMPL_METHOD == XF_INIT_IMPL_BY_REGISTRY
69 xf_init_explicit_call_registry();
84#if XF_INIT_IMPL_METHOD == XF_INIT_IMPL_BY_REGISTRY
85static void xf_init_explicit_call_registry(
void)
87#define XF_INIT_REGISTRY_ACTION_DECLARE
89#define XF_INIT_REGISTRY_ACTION_CALL
#define unlikely(x)
分支预测,优化条件为 假 的可能性更大的情况。
static void xf_list_init(xf_list_t *list)
动态初始化链表.
static void xf_list_add_tail(xf_list_t *new_node, xf_list_t *head)
xf_list_add_tail - 在指定节点之前添加一个 new_node.
#define XF_LIST_HEAD_INIT(name)
静态定义时初始化链表。
#define xf_list_for_each_entry(pos, head, type, member)
list_for_each_entry - 迭代给定类型的链表。
const xf_init_registry_desc_t *const p_desc
struct xf_list_head * next
struct xf_list_head * prev
void xf_init_registry_register_desc_node(xf_init_registry_desc_node_t *p_desc_node, xf_init_registry_type_t type)
(内部函数)注册初始化函数,无需直接调用,使用宏调用
static xf_list_t s_init_head[XF_INIT_REGISTRY_TYPE_MAX]
void xf_init_from_registry(void)
注册函数收集后,统一在此调用初始化函数
enum _xf_init_registry_type_t xf_init_registry_type_t
初始化功能类型。
@ XF_INIT_REGISTRY_TYPE_SETUP
@ XF_INIT_REGISTRY_TYPE_APP
@ XF_INIT_REGISTRY_TYPE_MAX
@ XF_INIT_REGISTRY_TYPE_DEVICE
@ XF_INIT_REGISTRY_TYPE_PREV
@ XF_INIT_REGISTRY_TYPE_BOARD
@ XF_INIT_REGISTRY_TYPE_CLEANUP
@ XF_INIT_REGISTRY_TYPE_ENV
@ XF_INIT_REGISTRY_TYPE_COMPONENT
#define XF_LOGD(tag, format,...)