ioctl 관련 질문

swunk의 이미지

ioctl 을 정의 하려 합니다.

일반 캐릭터 디바이스 드라이버 혹은 네트워크 디바이스 드라이버가 아닌,

일반 커널 모듈에서 ioctl 을 정의할 수 있는 방법이 있나요 ?

mknod 해서 가상의 장치파일 만들고 open() 함수를 수행후register_chrdev() 해서 사용할 수 있겠지만 이렇게 하지 않고,

socket()을 통하거나 혹은 다른 방법을 통해서 사용할 수 있는 방법이 없는지 궁급합니다.

답변 부탁드립니다.

익명 사용자의 이미지

무엇을 원하시는지 모르겠으나, 유닉스/리눅스의 ioctl은 모든 것(!)을 파일로 보고자 하는 유닉스의 관점에서 출발입니다.
무엇이건 간에 유닉스의 기본자원이라면 ioctl을 지원하는게 좀.. 보편적입니다.

swunk의 이미지

제가 원하는건...

디바이스 드라이버(캐릭터,블록,네트워크)가 아닌 커널 모듈에서 ioctl을 정의해서 사용하고자 합니다.

캐릭터 디바이스와 블록 디바이스는 mknod를 사용해서 파일을 생성후 open() 을 통하고 register_chrdev()등의 함수를 통하여 사용하고, 네트워크 디바이스 드라이버는 socket() 함수와 register_netdev() 함수를 통하여 ioctl() 로 접근 하여 사용하는 것으로 알고 있습니다. 물론 파일오퍼레이션도 등록해야 되고요...

그런데 이런 디바이스 드라이버가 아닌 커널 모듈에 ioctl() 을 사용는게 가능한가가 궁금합니다.

곰곰히 생각해보니...
안될것 같군요...손님 말씀과 같이 모든 자원들을 파일을 통해서 사용하는게 기본 개념인 점을 감안하면 안되는게 맞는것 같습니다.

혹시 사용가능하다면 답변 부탁드립니다.

익명 사용자의 이미지

만드시고자 하는 커널모듈을 파일개념에 접목시켜서 만드시면 별 무리없어 보이는데, 어떻게 생각하십니까?
적어도 해당모듈(?!)을 다루기 위해, 핸들을 얻게 하고(open), 사용후 반납하게 한후(close), 해당 핸들을 통해 해당 모듈을 제어를 하고(ioctl), 일반적인 read,write는 사용하지 않더라도 말입니다. mmap정도로 사용하는 방법도 고려할 수 있을듯해 보입니다.

swunk의 이미지

Anonymous wrote:
만드시고자 하는 커널모듈을 파일개념에 접목시켜서 만드시면 별 무리없어 보이는데, 어떻게 생각하십니까?.

이 말씀은 캐릭터 디바이스와 같은 형태로 사용하라는 말씀이죠 ?
mknod 로 /dev/ 밑에 장치파일을 생성하고
해당 장치 파일을
fd = open( /dev/xxx,....) 로 열고
ioctl(fd,....) 로 접근하라는...

제가 잘못 이해했나요 ?

지금까지 위와 같이 사용해 왔는데...이 방법 말고 다른 방법이 없나해서 질문을 드린겁니다.

hie의 이미지

질문의 의도를 정확히 모르겠군요.. mknod 등의 일련의 작업이 귀찮다면 sysctl을 사용하세요.

익명 사용자의 이미지

반드시 ioctl로 해야하는 상황이 아니라면 별도의 시스템호출을 만들어 보시는것은 어떨까요?
물론, 표준적인 방식이 아니라서 좀... 그렇군요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.