Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _TOOLS_LINUX_INIT_H_
3#define _TOOLS_LINUX_INIT_H_
4
5#include <linux/compiler.h>
6
7#ifndef __init
8# define __init
9#endif
10
11#ifndef __exit
12# define __exit
13#endif
14
15#define __section(section) __attribute__((__section__(section)))
16
17#define __initconst
18#define __meminit
19#define __meminitdata
20#define __refdata
21#define __initdata
22
23struct obs_kernel_param {
24 const char *str;
25 int (*setup_func)(char *st);
26 int early;
27};
28
29#define __setup_param(str, unique_id, fn, early) \
30 static const char __setup_str_##unique_id[] __initconst \
31 __aligned(1) = str; \
32 static struct obs_kernel_param __setup_##unique_id \
33 __used __section(".init.setup") \
34 __aligned(__alignof__(struct obs_kernel_param)) = \
35 { __setup_str_##unique_id, fn, early }
36
37#define __setup(str, fn) \
38 __setup_param(str, fn, fn, 0)
39
40#define early_param(str, fn) \
41 __setup_param(str, fn, fn, 1)
42
43#endif /* _TOOLS_LINUX_INIT_H_ */