boot state: schedule static callbacks
Many of the boot state callbacks can be scheduled at compile time. Therefore, provide a way for a compilation unit to inform the boot state machine when its callbacks should be called. Each C module can export the callbacks and their scheduling requirements without changing the shared boot flow code. Change-Id: Ibc4cea4bd5ad45b2149c2d4aa91cbea652ed93ed Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/3133 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
committed by
Ronald G. Minnich
parent
7e35efa83c
commit
a4feddf897
@@ -158,4 +158,25 @@ int boot_state_sched_on_exit(struct boot_state_callback *bscb,
|
||||
/* Entry into the boot state machine. */
|
||||
void hardwaremain(int boot_complete);
|
||||
|
||||
/* In order to schedule boot state callbacks at compile-time specify the
|
||||
* entries in an array using the BOOT_STATE_INIT_ENTRIES and
|
||||
* BOOT_STATE_INIT_ENTRY macros below. */
|
||||
struct boot_state_init_entry {
|
||||
boot_state_t state;
|
||||
boot_state_sequence_t when;
|
||||
struct boot_state_callback bscb;
|
||||
};
|
||||
|
||||
#define BOOT_STATE_INIT_ATTR __attribute__ ((used,section (".bs_init")))
|
||||
|
||||
#define BOOT_STATE_INIT_ENTRIES(name_) \
|
||||
static struct boot_state_init_entry name_[] BOOT_STATE_INIT_ATTR
|
||||
|
||||
#define BOOT_STATE_INIT_ENTRY(state_, when_, func_, arg_) \
|
||||
{ \
|
||||
.state = state_, \
|
||||
.when = when_, \
|
||||
.bscb = BOOT_STATE_CALLBACK_INIT(func_, arg_), \
|
||||
}
|
||||
|
||||
#endif /* BOOTSTATE_H */
|
||||
|
||||
Reference in New Issue
Block a user