리눅스 커널 질문입니다.


kernel space에 insmod로 모듈을 하나 추가한 후에 그 추가한 드라이버에서 SIGUSR1 신호를 내려고 합니다. 이때 user space에서 kernel space의 SIGUSR1 신호를 받아서 처리해주려고 하는데 kernel space에서 user space로 SIGUSR1 신호를 주는 방법에 어떤게 있을까요?

감사합니다.

  • 2016년 04월 27일에 작성됨

조회수 269


1 답변


send_sig()를 사용하시면 됩니다.
send_sig(int sig, struct task_struct *p, int priv)

ex )

send_sig(SIGUSR1, my_task, 0);
send_sig(SIGUSR2, my_task, 0);

관련 링크


my_task 부분에는 signal을 전달할 task struct를 넣어주면되는데, pid를 알고있다면

struct task_struct *my_task;
my_task = pid_task(find_vpid(process_pid), PIDTYPE_PID);

위와같은 방법으로 task를 알아낼 수 있습니다.

  • 2016년 04월 27일에 작성됨

  • my_task에는 어떤값이 들어가야되나요?    hsyoon702   2016.4.27 13:34     
  • 답변을 수정하였습니다.    임병준   2016.4.27 13:57     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close