01.01.2015 Views

device_driver-08.pdf(1.9MB)

device_driver-08.pdf(1.9MB)

device_driver-08.pdf(1.9MB)

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!