Kernel -> User Application 통신
글쓴이: cramade / 작성시간: 금, 2007/11/30 - 1:35오후
Madwifi 드라이버를 수정해서 특정 상황에서 이벤트를 발생시켜
User Application으로 간단한 데이터와 함께 전달을 하고 싶은데
Kernel 과 User Application은 어떤식으로 통신을 해야 하나요?
찾아본 바로는 iotcl, netlink socket등을 이용하는 방법이 있던데.
netlink은 종류가 routing이나 firewall, arp이런것들 밖에 없네요.
User define type을 넣어서 하는 방법도 있는것 같지만
http://www.linuxjournal.com/article/7356 여기에 있는 것만 봐서는
Kernel에서 전송하고 어플리케이션에서 받는건 잘 모르겠네요.
간단한 설명이라던지 샘플이 있는 곳을 아신다면 부탁드립니다.^^
Forums:
1. User application이
1. User application이 해당 driver에게 특정 ioctl을 호출한 뒤 block되게 만듭니다. (wait queue 이용)
2. 해당 driver동작에서 원하는 event가 발생했다고 판단되면 해당 wait queue 를 통해 User application을 wake up 합니다.
3. User application에 원하는 data를 넘겨주기를 원하면 ioctl 의 parameter를 이용하면 됩니다.
도움이 되었으면 합니다.
재질문.
안녕하세요. 답변감사드립니다^^
하지만 잘 이해가 안되네요.ㅠㅠ
제가 하고 싶은건 Network Device에서 데이터를 보내고 ACK를 받지 못할 경우에 이를
hostapd에 어떤 MAC으로 보내던 것이 ACK를 받지 못했는지를 알리고 싶은건데 지금까지 알아본바로는
이벤트가 발생했을 때 User영역에 MAC주소를 적어놓고 이를 User Application으로 알려야 할듯한데
비동기적인 방식으로 하는 방법은 없을까요? 가능하시면 예제도 함께라면 감사하겠습니다.ㅠㅠ
http://kldp.org/node/36620=
http://kldp.org/node/36620
댓글을 쓰다가 문득든 생각입니다. 내가 왜 이걸 대신 검색해주고 있을까 하는 생각이.. ^^;;
제 개인적으로는 proc 파일시스템이 좋아보입니다.
http://www.ibm.com/developerworks/linux/library/l-proc.html
==========================
별은 바라보는 자에게 빛을 준다
==========================
별은 바라보는 자에게 빛을 준다
http://lwn.net/Articles/13180
http://lwn.net/Articles/131802/
http://lxr.linux.no/source/Documentation/connector/connector.txt
추가질문
tangtung님 답변 감사드립니다. 그 아래 익명 사용자님도^^
IBM문서를 통해서 /proc파일 시스템이 뭐하는건지는 알았는데요.
이쪽으로는 경험이 없어서 아직도 궁금한게 많네요..
우선 LKM을 하나 만들어서 어떻게 돌아가는건지 분석을 해봤는데 제가 이해한바로는
proc_entry->read_proc = mac_read;
proc_entry->write_proc = mac_write;
이렇게 함수를 등록하면 User-Space에서 read, write를 요청할 경우 등록된 함수에서
이를 처리하는 것 같아보입니다.
하지만 driver에서 데이터가 바뀔 경우 user-space에서 이를 알아차리도록 하고 싶은데
이를 어떻게 user-space에 비동기적으로 알려야 하는지 모르겠습니다.
read_proc은 /proc에 read요청이 있을 경우에 값을 update하는 것 같은데 요청이 들어오기 전에는
/proc에 파일이 변하는게 아니기 때문에 파일의 변경을 알아차리지 못하는거 아닌가요?
그렇다고 주기적으로 읽어오는건 좀 무리인것 같은데... 바쁘실텐데 자꾸 질문해서 죄송합니다. ㅠㅠ
제가 알기로는 proc 에
제가 알기로는 proc 에 데이터를 변경한다고 해서 application 에게 알려주거나 하는 일을 하지는 않습니다. 어플에서 주기적으로 체크하는게 무리이시다면 proc 말고 다른 방법을 써야 할 것 같습니다.
커널소켓에서 유저소켓으로 데이터를 보내는 방법을 쓰셔야 할 것 같습니다. 도움이 못되었네요 ^^;
==========================
별은 바라보는 자에게 빛을 준다
==========================
별은 바라보는 자에게 빛을 준다
댓글 달기