도와주세요!!
글 수 15,339
2003.05.09 22:28:34 (*.186.48.184)
6705
: 1, 각기 다른 장치를 사용 할 때 장치끼리 데이타 교환 같은 것을 할 때요..
: 각각의 디바이스 드라이버가 있고.. 그 디바이스 드라이버를 user level 데이
: 타 교환을 한다고 생각했는데 제 생각이 맞는지요?
디바이스 드라이버간에 메모리는 직접 볼수 있습니다.
EXPORT_SYMBOL(my_data);
일케 선언해 놓으면 다른 디바이스가 my_data를 볼수 있죠.. 함수도 가능하구요
: 2. 보통 디바이스 드라이버에서 핸드러 함수가 사용되는 예가 궁금합니다..
: 그리고 인터럽트 함수는 사용자 공간으로 데이타를 전송할 수 가 없다고 알
: 고 있는데요...그러면 인터럽트가 발생하면 사용자 공간에서 어떠한 작업을 하
: 도록은 만들 수 없는 건가요?
: 그렇다면 인터럽트 함수의 사용이 제한적이 되지는 않는지요?
인터럽트 안에서는 버퍼에다 데이타를 써 넣고 이데이타를 어플에서는
read 함수로 읽어 가면 되죠.. 문제는 현재 데이타가 최근것인지 알아내는게
필요한데 .. 이걸 구현하는건 여러가지 방법이 있습니다.
그중 하나는 poll 을 구현하는 거지요.. 어플에서 select() 함수를 사용하는
방법입니다.
또 다른 하나는 poll과 같지만 그냥 어플에서 read() 함수를 호출하면 이 함수
내에서 interruptible_sleep_on() 에 의해 멈추고
인터럽함수에서 wake_up_interruptible() 을 이용해 read 에서 멈춘 함수를
깨워주는 거지요..