/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (c) 2011 The Chromium OS Authors. */ #ifndef __INITCALL_H #define __INITCALL_H #include #include _Static_assert(EVT_COUNT < 256, "Can only support 256 event types with 8 bits"); /** * init_fnc_t - Init function * * Return: 0 if OK -ve on error */ typedef int (*init_fnc_t)(void); /* Top bit indicates that the initcall is an event */ #define INITCALL_IS_EVENT GENMASK(BITS_PER_LONG - 1, 8) #define INITCALL_EVENT_TYPE GENMASK(7, 0) #define INITCALL_EVENT(_type) (void *)((_type) | INITCALL_IS_EVENT) /** * initcall_run_list() - Run through a list of function calls * * This calls functions one after the other, stopping at the first error, or * when NULL is obtained. * * @init_sequence: NULL-terminated init sequence to run * Return: 0 if OK, or -ve error code from the first failure */ int initcall_run_list(const init_fnc_t init_sequence[]); #endif