안녕하세요. 요즘 driver를 좀 짜고 있는데요. 궁금 한 것이 있어서 질문 드립니다.
아래의 사항이 가능 한가요?
제가 하고 싶은게
보통 sysfs를 이용해서 userspace에서 poll을 하면서 event를 받고 싶습니다.
즉, 예를 들어 drvier에서 /sys/class/test/ctrl 이라는 sysfs를 만들고
userspace에서 fs = open("/sys/class/test/ctrl");
그리고 epoll_ctl(fs, .....);
epoll_wait(.....)
합니다.
그럼 driver에서 변화를 알려 주기 위해 "/sys/class/test/ctrl" 에 값을 쓰면,
userspace에서 epoll_wait()이 이 값을 감지하고 처리를 하는 것이죠.
근데 문제는 driver에서 /sys/class/test/ctrl에 어떻게 값을 쓰는 가입니다.
아시는 분 좀 알려주세요. ㅜ.ㅜ
댓글 2
-
오시리스
2014.06.19 21:44
-
wizard1483
2014.06.26 19:32
감사합니다.
.
http://stackoverflow.com/questions/16367623/using-the-linux-sysfs-notify-call
http://lwn.net/Articles/174660/
sysfs_notify(...) 호출이 없으면, 아마도 바로 epoll에서 return 될 겁니다. 그렇게 되면 poll 이나 select를 쓸 수가 없고, 다시 open 하거나 seek로 fd를 되돌려야 됩니다. 참고로 kernel 내부의 device attribute도 select나, epoll을 쓸 수 없는 것들이 있습니다. 도움 되셨길 바랍니다.