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 />

249<br />

Open() 함수 호출 시 초기화 처리<br />

<br />

<br />

<br />

<br />

<br />

디바이스 드라이버가 처음 열렸을 때 하드웨어 초기화<br />

디바이스 드라이버의 동작에 필요한 에러 체크<br />

부번호에 대한 처리가 필요한 경우 파일 오퍼레이션 구조체의 갱<br />

신<br />

프로세스별 메모리 할당과 초기화<br />

모듈의 사용 횟수 증가<br />

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

Linux Device Driver<br />

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

250<br />

디바이스 드라이버의 release() 함수<br />

<br />

<br />

<br />

응용 프로그램에서 하드웨어의 제어가 끝나 디바이스 드라이버를 사용할<br />

필요가 없다면 디바이스 파일을 닫아야 한다<br />

if (fd >= 0) close(fd);<br />

정상적으로 열린 디바이스 파일을 close() 함수를 이용해 닫으면, 등록된<br />

디바이스 드라이버의 file_operations 구조체의 release 필드에 선언된 함<br />

수가 호출 된다<br />

struct file_operations call_fops =<br />

{<br />

…<br />

release : xxx_release,<br />

…<br />

}<br />

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

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

{<br />

// close 시처리내용<br />

return 0;<br />

}<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!