init.h 970 B

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