커널내에서 디바이스 드라이버를 사용하려면..?
글쓴이: poohmong / 작성시간: 목, 2007/08/16 - 3:00오전
커널내의 변수 정보를 수시로 체크 할려는 목적으로
디바이스 드라이버를 제작해서 ioctl 함수를 사용하여서
사용자 레벨의 프로그램에서 주기적으로 확인하도록 하였는데,
커널내에서는 사용자 레벨에서 읽고 쓰는 방법처럼 라이브러리를 제공하고 있지 않아서
open을 이용하여 디바이스를 열어서 사용하는 것이 않되는데,
어떻게 하면 디바이스 장치를 활용할수 있는지 궁금합니다.
검색을 해보니깐, 커널내에서는 사용자레벨의 프로그램 작성 방식이 아니라,
다바이스 드라이버 작성하는 것과 같이 프로그래밍 하면 된다. 이런식의 힌트가 있었는데,
실력이 부족해서 약간 모호한 감이 있어서, 질문 드립니다.
커널내에서 디바이스 드라이버 사용하는 방법이나 아니면 (이러한 방식이 잘못된 거라면 혹은 효율적이지 못하다면)
사용자 레벨의 프로그램과 정보를 주고 받는 것에 대한 방법에 대해서 어떠한 것이 있는지 부탁드립니다.
Forums:
캐릭터 디바이스를
캐릭터 디바이스를 하나 만들어서 ioctl 쪽에 필요한 함수들을 추가한 다음 open 해서 쓰면 됩니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
커널 소스내에서는
커널 소스내에서는
open과 같은 함수를 사용할수 없던데
그 문제에 대해서 질문을 올린 거랍니다.
혹시 커널 내에서 사용 방법을 알고 계신분은 안계신지....
operation table 에 등록되는 함수들을 사용하시면 될거에요..
해당 Device Driver 내에 보면, 몇가지 기본 동작을 위한 함수 포인터를 테이블로 관리하는 부분이 있을꺼에요.
그 부분에서 등록되는 함수를 호출하시면 될거에요.
물론, 해당 함수 호출 전에, Device driver 가 available 한 상태인지 확인하는 것도 잊으시면 안될거에요.
http://nicesj.com
https://nicesj.com
https://blog.nicesj.com
우선 device driver에
우선 device driver에 대해서 잘 모르시는거 같습니다만.. 그렇다면, 먼저 LDD(Linux Device Driver)를 먼저 공부하셔야 할거 같습니다. 해당 내용에서 file operation이라는 것이 있는데, 해당 data structure를 사용해서 open, read, write 등을 구현하실 수 있습니다.
또한 단순히 변수의 data 값에 대한 추적이라면, 위와 같은 open, read 등을 구현하는 것보다는 proc file system을 사용하셔서 하시는게 좀더 편할 거 같다는 생각이 듭니다. 해당 정보는 웹이나, 위에 말씀 드린 LDD 책을 보시면 확인 하실 수 있습니다.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
댓글 달기