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