2013-11-28 1 views
1

모든 CPU의 CPU 백 트레이스를 덤프해야한다는 요구 사항이 있습니다.멀티 코어 플랫폼의 모든 CPU에서 호출 추적을 얻는 방법

우리는 dump_stack을 가지고 있습니다. 이것은 현재의 CPU 스택을 덤프하는데 사용될 수 있습니다.

내 요구 사항은 모든 CPU (내 경우 4 CPU)에서 실행중인 프로세스의 호출 스택을 인쇄하는 것입니다. 어떻게 할 수 있습니까? 이 API가 미리 빌드되어 있습니까?

답변

1

다른 CPU에서 트리거하려면 플랫폼이 IPI를 사용합니다.

팔에이 작업을 수행하는 논리의 정의, smp_send_all_cpu_backtrace() -> 파일 - kernel/arch/arm/kernel/smp.c

이 모든 IPI를 전송하는 CPU의 스택을 덤프합니다. 당신이 당신의 코드에서 사용하려면, asm/irq.h

#include <asm/irq.h> 

void dump_all_cpu_stack(void) 
{ 
    arch_trigger_all_cpu_backtrace(); 
} 
을 포함하여 플랫폼 독립적 인 래퍼 arch_trigger_all_cpu_backtrace()를 사용
관련 문제