커널내에서 디바이스 드라이버를 사용하려면..?

poohmong의 이미지

커널내의 변수 정보를 수시로 체크 할려는 목적으로

디바이스 드라이버를 제작해서 ioctl 함수를 사용하여서

사용자 레벨의 프로그램에서 주기적으로 확인하도록 하였는데,

커널내에서는 사용자 레벨에서 읽고 쓰는 방법처럼 라이브러리를 제공하고 있지 않아서

open을 이용하여 디바이스를 열어서 사용하는 것이 않되는데,

어떻게 하면 디바이스 장치를 활용할수 있는지 궁금합니다.

검색을 해보니깐, 커널내에서는 사용자레벨의 프로그램 작성 방식이 아니라,

다바이스 드라이버 작성하는 것과 같이 프로그래밍 하면 된다. 이런식의 힌트가 있었는데,

실력이 부족해서 약간 모호한 감이 있어서, 질문 드립니다.

커널내에서 디바이스 드라이버 사용하는 방법이나 아니면 (이러한 방식이 잘못된 거라면 혹은 효율적이지 못하다면)

사용자 레벨의 프로그램과 정보를 주고 받는 것에 대한 방법에 대해서 어떠한 것이 있는지 부탁드립니다.

poplinux의 이미지

캐릭터 디바이스를 하나 만들어서 ioctl 쪽에 필요한 함수들을 추가한 다음 open 해서 쓰면 됩니다.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

poohmong의 이미지

커널 소스내에서는
open과 같은 함수를 사용할수 없던데

그 문제에 대해서 질문을 올린 거랍니다.

혹시 커널 내에서 사용 방법을 알고 계신분은 안계신지....

sjpark의 이미지

해당 Device Driver 내에 보면, 몇가지 기본 동작을 위한 함수 포인터를 테이블로 관리하는 부분이 있을꺼에요.

그 부분에서 등록되는 함수를 호출하시면 될거에요.

물론, 해당 함수 호출 전에, Device driver 가 available 한 상태인지 확인하는 것도 잊으시면 안될거에요.

http://nicesj.com

powerson의 이미지


우선 device driver에 대해서 잘 모르시는거 같습니다만.. 그렇다면, 먼저 LDD(Linux Device Driver)를 먼저 공부하셔야 할거 같습니다. 해당 내용에서 file operation이라는 것이 있는데, 해당 data structure를 사용해서 open, read, write 등을 구현하실 수 있습니다.

또한 단순히 변수의 data 값에 대한 추적이라면, 위와 같은 open, read 등을 구현하는 것보다는 proc file system을 사용하셔서 하시는게 좀더 편할 거 같다는 생각이 듭니다. 해당 정보는 웹이나, 위에 말씀 드린 LDD 책을 보시면 확인 하실 수 있습니다.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.