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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

초기화와 종료 처리<br />

247<br />

<br />

디바이스 파일이 있고 디바이스 파일의 주번호에 해당하는 디바<br />

이스 드라이버가 커널에 등록된 상태이면, 디바이스 드라이버의<br />

file_operations 구조체의 open 필드에 선언된 함수가 호출된다<br />

struct file_operations call_fops =<br />

{<br />

…<br />

open : xxx_open,<br />

…<br />

}<br />

<br />

file_operations 구조체의 open 필드에 대입되는 함수 형식<br />

int open(struct inode *inode, struct file *filp)<br />

{<br />

int err = 0;<br />

// open 시 처리 내용들<br />

…<br />

return error;<br />

}<br />

http://eoslab.ssu.ac.kr<br />

Linux Device Driver<br />

초기화와 종료 처리<br />

248<br />

<br />

<br />

Error<br />

• ENODEV<br />

• ENOMEM<br />

• EBUSY<br />

: 하드웨어가 존재하지 않는다<br />

: 커널 메모리가 부족하다<br />

: 디바이스가 이미 사용중이다<br />

에러 값이 양수이므로 에러를 반환시에는 음수로 변환한 값을 사<br />

용<br />

• return –ENODEV;<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!