#define pr_expected_config(kconfig) \ do { \ if (IS_ENABLED(kconfig)) \
pr_err("Unexpected! This %s was built with "#kconfig"=y\n", \
lkdtm_kernel_info); \ else \
pr_warn("This is probably expected, since this %s was built *without* "#kconfig"=y\n", \
lkdtm_kernel_info); \
} while (0)
#ifndef MODULE int lkdtm_check_bool_cmdline(constchar *param); #define pr_expected_config_param(kconfig, param) \ do { \ if (IS_ENABLED(kconfig)) { \ switch (lkdtm_check_bool_cmdline(param)) { \ case 0: \
pr_warn("This is probably expected, since this %s was built with "#kconfig"=y but booted with '" param "=N'\n", \
lkdtm_kernel_info); \ break; \ case 1: \
pr_err("Unexpected! This %s was built with "#kconfig"=y and booted with '" param "=Y'\n", \
lkdtm_kernel_info); \ break; \ default: \
pr_err("Unexpected! This %s was built with "#kconfig"=y (and booted without '" param "' specified)\n", \
lkdtm_kernel_info); \
} \
} else { \ switch (lkdtm_check_bool_cmdline(param)) { \ case 0: \
pr_warn("This is probably expected, as this %s was built *without* "#kconfig"=y and booted with '" param "=N'\n", \
lkdtm_kernel_info); \ break; \ case 1: \
pr_err("Unexpected! This %s was built *without* "#kconfig"=y but booted with '" param "=Y'\n", \
lkdtm_kernel_info); \ break; \ default: \
pr_err("This is probably expected, since this %s was built *without* "#kconfig"=y (and booted without '" param "' specified)\n", \
lkdtm_kernel_info); \ break; \
} \
} \
} while (0) #else #define pr_expected_config_param(kconfig, param) pr_expected_config(kconfig) #endif
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.