2009-12-17 3 views

답변

0

네, 알았습니다.

이는 일반적으로 Linux 커널의 단일 실행 컨텍스트 (예 : softIRQ의 단일 인스턴스)에서 동일한 커널 리소스를 참조하여 동일한 기능을 두 번 입력하면 발생합니다. 이 방법은 같은 실행 컨텍스트에서 함수를 두 번 다시 입력하지 않도록하는 것입니다. 이런 일이 발생하면 코드에 버그가 있습니다.

0

디버그? 너 where in the source을 알 필요가 있다는 것을 의미합니까?

+0

감사합니다. 그러나 나는 이미 그것을 'grep'ed했다. 나는이 상황을 초래할 최후의 사태에 대한 이유를 찾고있었습니다. 궁극적으로 그것을 파악할 수있었습니다. – Harty

2

가능한 교착 상태를 유발하는 진단 메시지입니다.

이 특별한 경우 스핀 록으로 보호되는 전송 대기열이 있습니다. 이 잠금과 함께 전송 대기열은이 스핀 록이 보관 될 때 설정된 CPUID를 포함하는 "소유자"필드도 유지합니다.

요청한 잠금이 이미 수행 된 경우 스핀 록이 CPU에서 항상 회전합니다.

그래서 at this location 코드는 cpu가 스핀 록을 잠근 동일한 CPU인지 확인합니다.

동일한 CPU에 있지 않으면 잠금이 필요한 작업을 수행합니다.

다른 CPU가 동일한 CPU 인 경우, 즉 뭔가가 올바르지 않습니다. 즉 실제로 잠금 대기 중일 것입니다. 아마도 우리는 잘못된 인터럽트 핸들러/하반부로 인해 여기에 왔을 것입니다.

잠재적 인 교착 상태를 나타 내기 때문에 진단 메시지가 인쇄됩니다. :).

관련 문제