디바이스 드라이버 모듈을 사용하는 사태에서 제거를 해버리면 커다란 문제가 발생하기 때문에
커널은 디바이스 드라이버 횟수를 감시하고 사용하지 않을 때만 제거 할 수 있게 한다.
MOD_INC_USE_COUNT : 모듈 사용 횟수 증가
MOD_DEC_USE_COUNT : 모듈 사용 횟수 감소
MOD_IN_USE : 모듈 사용 횟수가 0 이 아니면 참 값을 반환
int xxx_open(struct inode* inode, struct file* filp)
{
if(MOD_IN_USE) return -EBUSY;
MOD_INC_USE_COUNT;
return 0;
}
int xxx_release(struct inode* inode, struct file* filp)
{
MOD_DEC_USE_COUNT;
return 0;
}
커널은 디바이스 드라이버 횟수를 감시하고 사용하지 않을 때만 제거 할 수 있게 한다.
MOD_INC_USE_COUNT : 모듈 사용 횟수 증가
MOD_DEC_USE_COUNT : 모듈 사용 횟수 감소
MOD_IN_USE : 모듈 사용 횟수가 0 이 아니면 참 값을 반환
int xxx_open(struct inode* inode, struct file* filp)
{
if(MOD_IN_USE) return -EBUSY;
MOD_INC_USE_COUNT;
return 0;
}
int xxx_release(struct inode* inode, struct file* filp)
{
MOD_DEC_USE_COUNT;
return 0;
}
'Linux > Device Driver' 카테고리의 다른 글
i/o memory 영역의 경쟁 처리 함수 (0) | 2013.09.26 |
---|---|
I/O Port processing (check_region, request_region, release_region) (0) | 2013.09.26 |
open 초기화시 처리해야할 사항 (0) | 2013.09.26 |
error code (에러 코드) (0) | 2013.09.26 |
device driver register (디바이스 파일 등록) (0) | 2013.09.26 |