xref: /optee_os/core/include/initcall.h (revision 9e5923381a5c001594baebfa7975965d42a0f7c1)
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 
9*9e592338SJens 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) \
15*9e592338SJens Wiklander 	SCATTERED_ARRAY_DEFINE_PG_ITEM_ORDERED(initcall, level, initcall_t) = \
16*9e592338SJens Wiklander 		(fn)
1703c21dc9SSY Chiu 
18*9e592338SJens Wiklander #define initcall_begin	SCATTERED_ARRAY_BEGIN(initcall, initcall_t)
19*9e592338SJens Wiklander #define initcall_end	SCATTERED_ARRAY_END(initcall, initcall_t)
20*9e592338SJens Wiklander 
21*9e592338SJens Wiklander #define service_init(fn)	__define_initcall(1, fn)
22*9e592338SJens Wiklander #define service_init_late(fn)	__define_initcall(2, fn)
23*9e592338SJens Wiklander #define driver_init(fn)		__define_initcall(3, fn)
24*9e592338SJens Wiklander #define driver_init_late(fn)	__define_initcall(4, fn)
25*9e592338SJens Wiklander 
2603c21dc9SSY Chiu 
2703c21dc9SSY Chiu #endif
28