리눅스 디바이스 드라이버관련 질문이 있습니다.
글쓴이: tango / 작성시간: 화, 2016/03/08 - 1:41오전
디바이스 드라이버를 공부하는 학생입니다.
공부하는 도중에 궁금한게 생겼는데 제가 지금까지 책을 봤던 부분중에서는 해결할 수 없을꺼 같아서 이렇게 도움을 청합니다.
일반적으로
fd = open(DEVICE_FILENAME, O_READ);
이런식으로 어떤 디바이스 파일을 여는 open함수가 있다고 하고
file_operations 구조체에 open 필드에 해당하는 함수가
int xxx_open(struct inode *inode, struct file *filp)
{
....
}
라고 했을때 책에 있는 예제도 그렇고 xxx_open 함수가 return 0를 하는데 어떻게 파일 디스크립터에는 open했던 파일에 대한 값이 들어가는지...........
머리속으로 연결이 안되요ㅠㅠㅠ 아직 공부를 시작한지 얼마 안되서 그런거 같은데 이부분에 대해서 이해하려면 어떤 부분을 찾아보는게 이해하는데 도움될지
답변 부탁드립니다.
Tango 올림
Forums:
유저 영역에서의 open함수가
유저 영역에서의 open함수가 file_operations의 open로 바로 연결되는것이 아닙니다.
커널 소스중 fs/open.c의 do_sys_open()을 한번 보시면 도움이 될 듯 합니다.
한가지만 더 여쭤봐도 될까요? 제가 fs에 접근하려고
한가지만 더 여쭤봐도 될까요? 제가 fs에 접근하려고 하면 매번 접근권한?이 없거나 존재하지 않다고 나오는데
아마도 접근권한인거 같은데 제가 root 권한으로 접근하는데도 매번 위와같은 메세지가 뜹니다.
구글링을 해봐도 접근할 수 있는 방법에 대해서 기술 사이트가 안나와서 그런데
혹시 접근방법이나 아니면 참고할만 사이트 아시면 도움 부탁드립니다.
Tango 올림
말씀하신것만으로는 알수 없을것 같습니다. 읽기 전용
말씀하신것만으로는 알수 없을것 같습니다.
읽기 전용 파일에 쓰기 시도를 해서 그럴수도 있고, 파일이 없을수도 있고...
댓글 달기