리눅스 커널 질문입니다.

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

감사합니다.

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를 알아낼 수 있습니다.

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.