GNU/Linux >> Linux の 問題 >  >> Linux

Linux カーネルのデバッグ中に dev_*() ファミリ関数はどのように役立ちますか?

pr_*() 関数はプレーンな printk() と同じです 、しかし KERN_xxx ログ レベルは既に含まれています。

dev_*() 関数は対応する pr_*() と同じです 関数だけでなく、 struct device に関する識別情報も出力します .

メッセージが何らかのデバイスに関連している場合 (通常はドライバーの場合)、dev_*() を使用する必要があります。 .たとえば、USB ドライバーでは:

struct usb_device *usb_dev;
dev_info(&usb_dev->dev, "hello\n");

struct usb_interface *usb_intf;
dev_info(&usb_intf->dev, "hello\n");

または PCI ドライバーで:

struct pci_dev *pci;
dev_info(&pci->dev, "hello\n");

dev_* 関数は pr_* に似ています だけでなく、デバイスに関する情報も出力します(struct device )、最初の引数として渡されます。この情報は、具体的なデバイスに属するメッセージのシステム ログをフィルタリングするのに役立つ場合があります。

したがって、 dev_* を使用できます pr_* の代わりの関数 メッセージが具体的なデバイスに適用可能な場合 (およびそのデストリプタがある場合)。


Linux
  1. Linux – Linuxカーネルシステムコールの実装を見つける方法は?

  2. Linux – Linuxカーネルはどのようにしてデバイスのメジャー番号とマイナー番号を認識しますか?

  3. Linux –どのモジュールがカーネルを汚染しているかを判断する方法は?

  1. Linux カーネルが使用するキャッシュを消去する方法

  2. Linux カーネルは __init 呼び出しの順序をどのように決定しますか?

  3. オペレーティング システムの実行中の BIOS の機能は何ですか?

  1. Linux:デバイスに使用されているデバイスドライバーを見つける方法は?

  2. Linux でデバイスをマウントするには?

  3. Linux カーネルからメモリのブロックを予約するにはどうすればよいですか?