커널 모듈과 어플리케이션의 통신..
글쓴이: j8508 / 작성시간: 목, 2004/07/08 - 11:59오전
커널 모듈과 어플리케이션의 통신을 위한 모듈을 짜려고 합니다...
주된 내용은. 커널 모듈에서 계산된 값을 어플리케이션으로 보내는 것입니다..
일단 ioctl로 짰는데... 이 경우 어플리케이션이 폴링으로 값이 왔는가를 계속 확인해야 하게 되어 있습니다..
그런데, 이런 폴링 방식 말고..
커널쪽에서 어플리케이션에 데이터를 줄 필요가 있을때마다 어플리케이션을 꺠우는 등의 방식으로 통신하는 방법이 있을까요 ?
쓸데없이 시스템 자원 잡아먹게 하는게 싫어서 그렇거든요...
고수님들... 도와주세요...
Forums:
커널쪽에서는 poll을 구현한 다음에, wait_queue를 만들어 데이
커널쪽에서는 poll을 구현한 다음에, wait_queue를 만들어 데이터가 없으면 잠들게 만들고, 데이터가 생겼을 때 깨우면 됩니다.
애플리케이션 쪽에서는 select()로 block된 다음에 깨어날 때마다 읽어 오면 됩니다.
SIGIO를 이용하는 방법도 있습니다.
또다른 방법은 이벤트가 생겼을때 어플리케이션프로세스에서 SIGIO를 쏴주게 할 수 있습니다.
fasync()를 구현해주면 됩니다.
자세한 것은 "리눅스드라이버" 책의 "향상된 문자드라이버 연산"에서 "비동기 통지(Asynchronous Notification)"를 참고하세요.
두분다 감사합니다...
두분의 답변 감사합니다...
일단 리눅스 디바이스 드라이버 책을 참조해서 보면서 해결하려고 합니다....
또 궁금한게 생기면 물으러 올께요~
댓글 달기