すべての CPU の CPU バックトレースをダンプする必要があります。
Linux ではdump_stack
、現在の CPU のスタックをダンプするために使用できるものがあります。
私の要件は、すべての CPU (私の場合は 4 つの CPU) で実行されているプロセスのコール スタックを出力することです。どうすればそれができますか?このためのビルド済み API はありますか?
すべての CPU の CPU バックトレースをダンプする必要があります。
Linux ではdump_stack
、現在の CPU のスタックをダンプするために使用できるものがあります。
私の要件は、すべての CPU (私の場合は 4 つの CPU) で実行されているプロセスのコール スタックを出力することです。どうすればそれができますか?このためのビルド済み API はありますか?
他の CPU で何かをトリガーするには、プラットフォームは IPI を使用します。
アームでこれを行うロジックは、 smp_send_all_cpu_backtrace()
-> file -で定義されています。kernel/arch/arm/kernel/smp.c
これにより、IPI がすべての CPU に送信され、スタックがダンプされます。コードで使用する場合は、プラットフォームに依存しないラッパーarch_trigger_all_cpu_backtrace()を含めて使用しますasm/irq.h
#include <asm/irq.h>
void dump_all_cpu_stack(void)
{
arch_trigger_all_cpu_backtrace();
}