리눅스 커널 질문입니다.

조회수 2719회

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

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)