1

Linux カーネルprintkの一連のショートカット マクロを作成 して、モジュール名のプレフィックスを付け、重大度の一連のエイリアスを設定しました。

#define _pp(severity, format, args...) \
  printk(severity "%s: " #format "\n", THIS_MODULE->name, ##args)

#define pp_warn(args...) _pp(KERN_WARNING, args)
#define pp_note(args...) _pp(KERN_NOTICE, args)
#define pp_info(args...) _pp(KERN_INFO, args)

これらのマクロを次のように使用します。

static int __init pretty_printk_demo_init(void) {

  pp_warn("Warning severity");
  pp_warn("Warning, checking arguments, %s and %i", "DDD", 44);

}

問題は、カーネル リング バッファーの最終出力が次のように引用されることです。

[  470.819436] pp_demo_module: "Warning severity"
[  470.819438] pp_demo_module: "Warning, checking arguments, DDD and 44"

この余分な引用符を避ける方法について何か考えはありますか?

完全なファイルについては、ヘッダーソースファイルをご覧ください。

お時間をいただきありがとうございます。可能な解決策を楽しみにしています。

4

1 に答える 1