xref: /optee_os/core/include/initcall.h (revision 08fc735909abc118d1a2c400353bf20982e8a329)
11bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */
203c21dc9SSY Chiu /*
303c21dc9SSY Chiu  * Copyright (c) 2014, Linaro Limited
403c21dc9SSY Chiu  */
503c21dc9SSY Chiu 
603c21dc9SSY Chiu #ifndef INITCALL_H
703c21dc9SSY Chiu #define INITCALL_H
803c21dc9SSY Chiu 
99e592338SJens Wiklander #include <scattered_array.h>
1003c21dc9SSY Chiu #include <tee_api_types.h>
1103c21dc9SSY Chiu 
1203c21dc9SSY Chiu typedef TEE_Result (*initcall_t)(void);
1303c21dc9SSY Chiu 
1403c21dc9SSY Chiu #define __define_initcall(level, fn) \
159e592338SJens Wiklander 	SCATTERED_ARRAY_DEFINE_PG_ITEM_ORDERED(initcall, level, initcall_t) = \
169e592338SJens Wiklander 		(fn)
1703c21dc9SSY Chiu 
189e592338SJens Wiklander #define initcall_begin	SCATTERED_ARRAY_BEGIN(initcall, initcall_t)
199e592338SJens Wiklander #define initcall_end	SCATTERED_ARRAY_END(initcall, initcall_t)
209e592338SJens Wiklander 
21*08fc7359SRouven Czerwinski #define early_init(fn)			__define_initcall(1, fn)
22*08fc7359SRouven Czerwinski #define early_init_late(fn)		__define_initcall(2, fn)
23*08fc7359SRouven Czerwinski #define service_init(fn)		__define_initcall(3, fn)
24*08fc7359SRouven Czerwinski #define service_init_late(fn)		__define_initcall(4, fn)
25*08fc7359SRouven Czerwinski #define driver_init(fn)			__define_initcall(5, fn)
26*08fc7359SRouven Czerwinski #define driver_init_late(fn)		__define_initcall(6, fn)
279e592338SJens Wiklander 
2803c21dc9SSY Chiu 
2903c21dc9SSY Chiu #endif
30