강좌 & 팁
안녕하세요 판다 이우영입니다.
회사에서 전시회 준비로 바쁜 일주일을 보냈습니다.
그래도 해야할껀 해야죠 ㅎㅎ
그럼 오늘도 디바이스 드라이버 공부를 시작하겠습니다.
1. 복습!!!
저번 시간에는 디바이스 드라이버에서 해주어야 하는 것을 알아 보았습니다.
그럼 다시 한번 확인해 볼까요?
블록킹 I/O를 사용하기위해서는 다음 해더 파일을 추가 해야 합니다.
▪ #include <linux/wait.h>
사용하는 법을 다시 보도록 하겠습니다.
▪ DECLARE_WAIT_QUEUE_HEAD( WaitQueue );
위와 같이 매크로를 사용해서 “wait_queue_head_t” 구조체를 선언하고 초기화를 해야합나다.
사용할때는 다음 함수를 통해서 응용프로그램을 재우고 깨워 줍니다.
▪ interrupible_sleep_on(&WaitQueue);
▪ wake_up_interruptible(&WaitQueue);
자 그럼 다음으로 넘어 가겠습니다.
2. 응용 프로그램에서 해야할 일!!
응용 프로그램은 복잡한 관정은 필요 없습니다.
그냥 평소와 같이 만들어 주면 끝입니다. ㅎㅎㅎ
하지만 응용프로그램이 잠들고 싶지 않은 경우가 있겠죠?
그런 경우에는 디바이스를 오픈 할 때 옵션을 하나 더주면 끝입니다.
예를 들어 볼까요?
기존의 a 라는 디바이스를 오픈 할 때는 다음과 같이 진행합니다.
#define DEVICE_FILENAME "/dev/a" int main() { int dev; dev = open( DEVICE_FILENAME, O_RDWR ); close(dev); } |
그럼 응용프로그램이 잠들지 않는 방법은 어떤 걸까요? 다음과 같습니다.