1 /* SPDX-License-Identifier: BSD-2-Clause */ 2 /* 3 * Copyright (c) 2014, Linaro Limited 4 */ 5 6 #ifndef INITCALL_H 7 #define INITCALL_H 8 9 #include <scattered_array.h> 10 #include <tee_api_types.h> 11 12 typedef TEE_Result (*initcall_t)(void); 13 14 #define __define_initcall(level, fn) \ 15 SCATTERED_ARRAY_DEFINE_PG_ITEM_ORDERED(initcall, level, initcall_t) = \ 16 (fn) 17 18 #define initcall_begin SCATTERED_ARRAY_BEGIN(initcall, initcall_t) 19 #define initcall_end SCATTERED_ARRAY_END(initcall, initcall_t) 20 21 #define service_init(fn) __define_initcall(1, fn) 22 #define service_init_late(fn) __define_initcall(2, fn) 23 #define driver_init(fn) __define_initcall(3, fn) 24 #define driver_init_late(fn) __define_initcall(4, fn) 25 26 27 #endif 28