Global_init_slot High Quality May 2026

Linker script collects all .init_slots.* into an array:

.init_slots : __init_slots_start = .; KEEP(*(.init_slots.001)) KEEP(*(.init_slots.002)) /* higher priorities may be overridden by explicit ordering */ __init_slots_end = .; >FLASH Startup code: global_init_slot

// slot_def.h typedef void (*init_fn_t)(void); #define GLOBAL_INIT_SLOT(fn, priority) \ __attribute__((section(".init_slots." #priority))) \ const init_fn_t _slot_##fn = fn // peripherals.c void clock_init(void) ... void gpio_init(void) ... Linker script collects all

GLOBAL_INIT_SLOT(clock_init, 001); GLOBAL_INIT_SLOT(gpio_init, 002); global_init_slot

This site has been tested and optimized for Firefox, Safari, Chrome and Internet Explorer 10+. We recommend users of early versions of Internet Explorer to update to Version 11 or later.