Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
초기화와 종료 처리<br />
261<br />
일반적인 read() 함수의 처리 구조<br />
<br />
read() 함수의 에러 : return 값이 음수인 경우<br />
• EAGAIN : O_NONBLOCK으로 열렸지만 즉시 읽을 수 있는 데이터<br />
가 없다<br />
• EIO : I/O 에러 발생<br />
• EFAULT : buf가 접근할 수 없는 주소 공간을 가리킨다<br />
http://eoslab.ssu.ac.kr<br />
Linux Device Driver<br />
초기화와 종료 처리<br />
262<br />
write() 함수의 구현<br />
<br />
<br />
read() 함수와 마찬가지로 buf의 주소가 응용 프로그램에서의 주<br />
소이므로 디바이스 드라이버에서 직접적인 사용 불가능<br />
커널 메모리 공간과 사용자 메모리 공간의 이동을 위한 함수<br />
• copy_ from_ user(to, from, n)<br />
• 사용자 메모리 from을 커널 메모리 to로 n만큼 복사<br />
• get_user(x, ptr)<br />
• x 변수에 ptr의 사용자 메모리 값을 대입<br />
http://eoslab.ssu.ac.kr<br />
Linux Device Driver