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

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");
}

主站蜘蛛池模板: 广水市| 昭通市| 瑞安市| 永登县| 和龙市| 剑河县| 磐石市| 桦甸市| 临海市| 泰来县| 阿克苏市| 阜康市| 南城县| 内丘县| 团风县| 西乌珠穆沁旗| 理塘县| 新民市| 鹤庆县| 石家庄市| 栾城县| 万安县| 临邑县| 桂平市| 洛阳市| 上蔡县| 巩留县| 古浪县| 盐津县| 田东县| 右玉县| 仁怀市| 儋州市| 夏津县| 启东市| 贺兰县| 汉阴县| 青川县| 全州县| 天台县| 漠河县|