리눅스 커널에서 파일입출력을 할려고 합니다.

legend2c의 이미지

커널 모드에서 파일 입출력을 하고자 합니다.
커널 모듈에서는 성공했는데 커널 코드를 바로 수정해서 파일 입출력을 하고자 하였으나 2주동안 패닉화면만 무진장 보고 있습니다.
제가 하고자 하는것은 페이지 폴트 발생하여 인터럽트가 발생하게 되면 do_page_fault()로 가게 됩니다.
제가 지금 해야 되는것이 이 함수 안에서 System.map이라는 파일을 입출력을 해야됩니다.
계속 kernel BUG at sched.c:565!라고 뜨며 패닉이 발생하네요
원래 커널 모드에서는 파일 입출력이 되지 않는다고 해서 set_fs(KERNEL_DS)를 사용했고 sys_open이나 sys_filp을 사용하면서 계속 바꿔 봤는데 안되네요.
인터럽트 중에는 파일 입출력을 할수가 없는것인지 ... 아님 인터럽트가 걸리면 그전에 다른 루틴을 수행하고 가게 할수 있는지 .. 반대로 인터럽트가 끝나고 다른 특정 루틴을 실행하게 할수 있는지 .. 인터럽트 중에 커널 쓰레드를 생성할수 있는지 .. 인터럽트 중에 적재되어 있는 모듈을 사용할수 있는지 궁금합니다. 모듈은 파일 입출력을 구현해 놓은 모듈이고 커널 쓰레드를 생성할수 있는지 묻는것은 커널쓰레드 내에서는 시스템콜이 가능하다고 해서 혹시나 인터럽트 중에 커널 쓰레드를 생성해서 시스템콜을 사용하여 파일 입출력이 가능한지 볼려는 것입니다.
초보라서 모르는것이 너무 많아서 질문도 맞는지 모르겠네요..
어떤 방법이라도 됩니다.
리눅스가 페이지 폴트로 인한 인터럽트 발생시에(커널 모드에서 이며 패닉 발생시입니다.) System.map파일을 입출력 해야합니다.

uosarang의 이미지

Interrupt context routine에서 process context routine으로 바꿔보세요~

머리를 굴려라! 그래야 먹고 산다.

bushi의 이미지

메모리에 미리 읽어놓고, 필요할 때 참조만하는게 정답 같습니다.

built-in 되는 core 에서는 EXPORT_SYMBOL() 로 초기값 NULL 인 포인터만 노출하고,
간단한 모듈 작성하셔서 모듈 올라갈 때 메모리 할당하고 System.map 읽어서 복사한 다음 포인터에 연결만 해주면 ?
물론 참조할 때 NULL 인지 아닌지 반드시 검사하셔야겠지요.

눈치채셨겠지만, 사실 커널모드에서 파일 입출력할 필요도 없습니다.

OTL

댓글 달기

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