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

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

主站蜘蛛池模板: 贵阳市| 赤峰市| 桐庐县| 阿坝| 增城市| 沂南县| 奉节县| 修武县| 云梦县| 兴国县| 德保县| 石门县| 萝北县| 临猗县| 酉阳| 神木县| 马尔康县| 霍城县| 新干县| 资溪县| 通河县| 深水埗区| 鹤山市| 佛坪县| 成武县| 靖边县| 青田县| 定日县| 花莲市| 晋城| 徐州市| 华安县| 全南县| 休宁县| 潞城市| 肇源县| 麦盖提县| 汽车| 根河市| 固始县| 冕宁县|