MOS Source Code
Loading...
Searching...
No Matches
setup.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-3.0-or-later
2
3#pragma once
4
5#include <mos/types.hpp>
6
7typedef enum
8{
9 INIT_TARGET_POWER, // Power management subsystem
10 INIT_TARGET_PRE_VFS, // Pre-virtual file system
11 INIT_TARGET_VFS, // Virtual file system
12 INIT_TARGET_SYSFS, // sysfs filesystem
13 INIT_TARGET_KTHREAD, // Kernel threads
15
16typedef struct
17{
18 const char *param;
19 bool (*hook)(const char *arg);
21
22typedef struct
23{
27
28#define MOS_EARLY_SETUP(_param, _fn) \
29 static bool _fn(const char *arg); \
30 MOS_PUT_IN_SECTION(".mos.early_setup", mos_cmdline_hook_t, __setup_##_fn, { .param = _param, .hook = _fn }); \
31 static bool _fn(const char *arg)
32
33#define MOS_SETUP(_param, _fn) \
34 static bool _fn(const char *arg); \
35 MOS_PUT_IN_SECTION(".mos.setup", mos_cmdline_hook_t, __setup_##_fn, { .param = _param, .hook = _fn }); \
36 static bool _fn(const char *arg)
37
38#define MOS_INIT(_comp, _fn) \
39 static void _fn(void); \
40 MOS_PUT_IN_SECTION(".mos.init", mos_init_t, __init_##_fn, { .target = INIT_TARGET_##_comp, .init_fn = _fn }); \
41 static void _fn(void)
42
MOSAPI void(1, 2) fatal_abort(const char *fmt
int bool
Definition pb_syshdr.h:57
init_target_t
Definition setup.hpp:8
@ INIT_TARGET_PRE_VFS
Definition setup.hpp:10
@ INIT_TARGET_KTHREAD
Definition setup.hpp:13
@ INIT_TARGET_POWER
Definition setup.hpp:9
@ INIT_TARGET_VFS
Definition setup.hpp:11
@ INIT_TARGET_SYSFS
Definition setup.hpp:12
void startup_invoke_early_cmdline_hooks(void)
Definition setup.cpp:56
void startup_invoke_cmdline_hooks(void)
Definition setup.cpp:49
void startup_invoke_autoinit(init_target_t target)
Definition setup.cpp:8
bool(* hook)(const char *arg)
Definition setup.hpp:19
const char * param
Definition setup.hpp:18
init_target_t target
Definition setup.hpp:24
void(* init_fn)(void)
Definition setup.hpp:25