官术网_书友最值得收藏!

How to do it...

In the previous example, we saw that we can use the printk() function to generate kernel messages, but there are other functions that we can use in place of printk() in order to have more efficient messages and compact and readable code:

  1. Use the following macros (as defined in the include/linux/printk.h file), which are listed in the following:
#define pr_emerg(fmt, ...) \
printk(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__)
#define pr_alert(fmt, ...) \
printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
#define pr_crit(fmt, ...) \
printk(KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__)
#define pr_err(fmt, ...) \
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
#define pr_warning(fmt, ...) \
printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
#define pr_warn pr_warning
#define pr_notice(fmt, ...) \
printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)
#define pr_info(fmt, ...) \
printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
  1. Now, to generate a kernel message, we can do the following: looking at these definitions, we can rewrite our dummy_code_init() and dummy_code_exit() functions from the previous example into the dummy-code.c file, as follows:
static int __init dummy_code_init(void)
{
pr_info("dummy-code loaded\n");
return 0;
}

static void __exit dummy_code_exit(void)
{
pr_info("dummy-code unloaded\n");
}

主站蜘蛛池模板: 河间市| 繁昌县| 江城| 绍兴县| 丰县| 邹城市| 固始县| 田东县| 巴南区| 盐源县| 乌什县| 阳春市| 应城市| 舒兰市| 广灵县| 乐平市| 班玛县| 夏邑县| 湟源县| 望江县| 宜宾县| 福安市| 平武县| 曲沃县| 邛崃市| 西乌珠穆沁旗| 诸暨市| 黔江区| 南溪县| 新河县| 保山市| 枣强县| 湘西| 西乌珠穆沁旗| 长沙市| 麟游县| 抚松县| 柘城县| 京山县| 华容县| 茂名市|