dev_warn() とか、どこで定義されてるのか?

Linuxカーネルで dev_warn() とか dev_notice() とかありますけど、これがソースのどこで実装されているのか非常に分かり難いです。プロトタイプ宣言は、include/linux/device.h とかにありますけど。
実は、これは drivers/base/core.c というファイルで、マクロを使って定義されているんですね。ま、マクロで関数定義したくなるのは分かりますけど、せめて Documentation/ に書いておいて欲しい! プンプン。有名な Free Electrons の Linux Cross Reference とか見ても分からないから!
という訳で、繰り返しになりますが、答は drivers/base/core.c です。
検索している人もあるかもなので、リストしておきます。(^^)

  • dev_emerg()
  • dev_alert()
  • dev_crit()
  • dev_err()
  • dev_warn()
  • dev_notice()
  • dev_info()
  • dev_dbg()

ちなみにどうやって調べたかというと、Eclipseソースコードレベルデバッグして、System.map と逆アセンブルリストで見つけたorz