hardware interrupt 시 user space의 함수를 실행시키고 싶습니다. 알려주세요...
글쓴이: diebu / 작성시간: 수, 2009/12/02 - 2:36오후
linux kernel 2.6.3x
arm architecture
ixp42x 를 사용하고 있습니다.
네트워크의 링크가 끊기면 kernel에서 interrupt를 발생시켜서
user space에 있는 함수를 실행시키려고 합니다.
user space와 kernel space는 서로 function 을 사용하지 못한다고 알고 있는데...
방법이 없나요?
kernel level에서 timer interrupt를 모방하여 irq 11번으로 interrupt를 생성했는데...
interrupt handler에서 어떻게 해야 하는지 모르겠습니다.
interrupt가 발생했을 때 application에서 만든 함수를 실행하고 싶어요...
방법을 알려주시거나 참조할 사이트좀 알려주세요....
Forums:
ethernet 케이블
ethernet 케이블 plug/unplug 이벤트를 감지하고 싶으신게 맞나요?
'Linux Kernel'/Documentation/networking/operstates.txt 문서와 man netlink를 참고해보시기 바랍니다.
제가 하고자하는
제가 하고자하는 것은
interrupt가 발생했을 때 application에서 만든 함수를 사용하고 싶은 겁니다.
kernel에서 interrupt를 등록하고 handler를 작성했는데..
user space에 있는 함수를 실행할 방법을 모르겠네요....
^^;
시그널
인터럽트 핸들러는 프로세스 컨텍스트가 아니니까 유저 스페이스에 있는 함수를 부를 수는 없겠죠.
시그널은 어떨지요?
인터럽트가 발생했을 때 인터럽트 핸들러에서 원하시는 프로세스로 send_sig()하시면 될 듯 합니다만...
그러러면 어느 프로세스로 시그널을 보내야 할 지 알아야 되니까, 유저 프로세스에서 드라이버를 open할 때, pid 혹은 task_struct포인터를 인터럽트 핸들러가 구현되어있는 드라이버에 변수로 저장해 놓고 send_sig()할 때 쓰시면 될 것 같은데요.
시그널 번호는 미정의 중에서 적당하게 고르시고...
--------------
save the earth
생산적인 댓글을 달자
한번 해보겠습니다.
한번 해보겠습니다.
댓글 달기