커널레벨(모듈)에서 시리얼 프로그램을 구현하고자 합니다.

jgm2000의 이미지

시리얼 프로그램 /dev/ttyS0 이용해서 application에서 짜보았습니다.
실행도 잘되구요.

제가 하고자 하는 것은 모듈을 하나 만들어서 거기서 시리얼쪽으로 데이터를 보내고자 합니다.
application에서야 open, write, read 같은 것을 이용해서 하면 되지만,
모듈로 테스트를 할 경우에는 커널 레벨의 함수로 구현을 해야 하는데, 어떤 함수를 써야 하는지요?

그냥 커널레벨에서 open, write를 썼더니 다음과 같은 에러가 납니다.

/root/gw.c: In function 'usn_xmit':
/root/gw.c:467: warning: implicit declaration of function 'write'
/root/gw.c: In function 'gateway_init':
/root/gw.c:890: warning: implicit declaration of function 'open'
/root/gw.c:898: warning: implicit declaration of function 'tcgetattr'
/root/gw.c:909: warning: implicit declaration of function 'tcflush'
/root/gw.c:911: warning: implicit declaration of function 'tcsetattr'
Building modules, stage 2.
MODPOST
*** Warning: "tcsetattr" [/root/gw.ko] undefined!
*** Warning: "tcflush" [/root/gw.ko] undefined!
*** Warning: "tcgetattr" [/root/gw.ko] undefined!
*** Warning: "open" [/root/gw.ko] undefined!
*** Warning: "write" [/root/gw.ko] undefined!
CC /root/gw.mod.o
LD [M] /root/gw.ko

혹 이 상황에 대해 아시는 분 계시면 답변부탁드립니다.

wish의 이미지

커널의 일부로 생각해야 됩니다. 따라서 사용자 스페이스에 있는 어떤 함수도 써서는 안되고, 커널 내부에 있는 함수 만을 사용 해야 합니다. 어떤 외부와의 라이브러리와도 링크 될 수 없고, 그러므로 물론 libc 에서 사용되는 함수도 사용할 수 없습니다. 일단 커널 내로 들어오면 손쉽게 파일 조작하는 것은 거의 불가능합니다. user level 이 아닌 kernel level 에서 꼭 해야만 되는 작업을 먼저 추려 내시고, 커널 내부를 약간 파악하신 후 짜셔야 합니다. 구글링 하면 linux kernel api 문서도 나오기는 할텐데, 사용자 프로그램 짜듯이 레퍼런스 보면서 짜내려가기는 좀 애매하실 듯 합니다 ^^

jgm2000의 이미지

kernel 레벨에서 한다는거 자체가 많이 어렵긴 합니다...
답변 감사드립니다..
시리얼 통신에서 유저레벨에서 사용하는 open, write, read 또, baudrate 설정하는 등등에 관하여
커널레벨에서 어떤 걸 이용하는지 빨리파악하는것이 우선일거 같습니다.

저두 어케해야 되는지는 알겠는데..찾기가 힘드네요...ㅠ.ㅠ

댓글 달기

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