poll_wait 문제
글쓴이: wizard1483 / 작성시간: 월, 2014/06/30 - 3:02오후
안녕하세요. poll을 이용한 wait를 구현 중입다.
일단 open, read는 정상 동작합니다.
user에서 poll을 이용해서 wait를 걸려고 하는데, drvier에서 wait가 걸리지 않습니다.
poll을 호출 하면 driver에서 사용자 정의 poll이 호출 되고 poll_wait 함수를 호출 하여 wait를 합니다.
poll(struct file *filep, struct poll_table_staruct *pt) { unsigned int ret = 0; printk("poll Start\n"); poll_wait(filep, &wait_wq, pt); prinkt("poll End\n"); ret |= POLLIN; return ret; }
위와 같이 했는데요, 저는 poll_wait 함수를 호출 하면 poll start만 출력이 되고 wake_up을 해 주지 않으면
poll end가 출력이 안 될줄 알았습니다. 근데 user에서 아래와 같은 code로 테스트를 했는데
poll이 호출 되자 마자 drvier에서 start, end가 바로 찍히고, user에서도 start, end가 바로 찍힙니다. 혹시 poll을 사용하기 위해 config옵션을 주어야 하나요? 일반 적으로 지원 되는 기능이 아닌가요?
#include <sys/poll.h> struct pollfd events[1]; dev = open("dev/test_poll", O_RDWR); events[0].fd = dev; events[0].events = POLLIN; printf("Poll Start"); poll((struct pollfd*)&events, 1, -1)); printf("Poll end");
Forums:
통상적인 파일의 경우 항상 저렇게 동작할
통상적인 파일의 경우 항상 저렇게 동작할 겁니다.
socket 파일에 대해서 테스트 해보세요.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기