2012-02-17 2 views
2

임베디드 Linux 시스템에서 작업 중이며 특정 IRQ 처리기가 실행될 때 시스템을 종료해야합니다. 나는 많은 시간 (수십 밀리 초)이 없다. emergency_restart()를 사용하고 있었지만 플래시 드라이버가 지원하지 않기 때문에 인터럽트 컨텍스트에서 수행 할 수없는 작업 (플래시에 대한 종료 관련 정보 작성)을 수행해야합니다.IRQ 처리기에서 사용자 응용 프로그램을 제거하려면 어떻게합니까?

누구든지 좋은 방법을 권장 할 수 있습니까? 필자는 플래시를 쓸 수 있도록 신호를 보내어 사용자 공간 응용 프로그램을 제대로 종료하려고합니다. 어떻게해야합니까? 나는 대안으로, 우선 인터럽트가 발생하는 세마포어를 기다리는 중대한 우선 순위 프로세스를 가질 수 있다고 생각합니다. 내 옵션은 무엇입니까? 미리 감사드립니다!

답변

1

정확히 신호가 무엇입니까. 기존 신호 중 하나가 (man 7 signal 참조) 이해가되지 않는 경우, 사용자 정의 신호 중 하나를 사용

#define SIGUSR1   10  /* User-defined signal 1 (POSIX). */ 
#define SIGUSR2   12  /* User-defined signal 2 (POSIX). */ 
+0

'SIGPWR'이 적절한 것 같다. – caf

관련 문제