Friday, April 24, 2015

Practice Example in Embedded Linux

@ Problem
 : 'test' 라는 application program을 작성해보자. test는 자신의 process id를 Device Driver를 이용하여 kernel로 전달할 수 있다. Kernel 에서는 process id를 받으면 Kernel Timer를 동작시켜 주기적으로 test 프로세스에게 Signal(SIGUSR1)을 전달하고, Signal을 받으면 Kernel에서 전달한 int형 data를 출력해보자.

@ Answer
  1) PID 전달
    ① character device driver 이용
    ② copy_from_user를 통해 User -> Kernel 영역으로 data 복사

  2) 주기적인 Signal 전달
    ① Kernel Timer 이용
    ② Timer Handler에서 kill_proc 함수를 통해 Kernel -> User 특정 프로세스로 signal 전달
    ③ Timer 대신 Key를 이용하는 경우 Interrupt Handler에서 kill_proc 함수를 사용하면 됨

  3) Signal 처리
    ① 전달받은 signal을 처리할 handler 등록
    ② Signal Handler에서 원하는 동작을 수행

@ Summary

No comments:

Post a Comment