[완료] Userspace Device Driver

박영만의 이미지

Userspace 에서 Device Driver 제작이 가능하다는 이야기를 들었는데,
그게 현재 리눅스 시스템에서도 가능한 것인가요?
혹시 가능하다면 관련 정보를 어디서 구할 수 있을까요?
아시는 분 도움 부탁드립니다. (--)(__)

bushi의 이미지

말초적인 드라이버는 가능합니다.
core 에 속하는... 예를 들면 DMA 컨트롤러, USB 칩셋... 드라이버들은 micro kernel 에서도 불가능하거나 아주 어렵고 제한적입니다. 어떻게 간신히 구현해도 user mode 의 장점을 하나도 살리지 못한 반푼이 드라이버가 되더군요.

이미 framework 을 제공하고 있는 것들엔 다음과 같은 예가 있습니다.
filesystem 은 FUSE (sshfs, curl-ftpfs ...)
HID input 은 input 의 evdev (제한적인 합니다만 serio dicp. 도 일종의 user mode 드라이버)
USB 호스트 측에선 usbfs (gphoto2, sane ...)
USB 디바이스 측에선 gadgetfs (PTP-still_image_class, MTP-extended_PTP)

기본적으로...
interrupt, DMA 등의 event driven 이 아니라 poll 이나 단순한 I/O 만 할 경우라면
/proc/mem 을 통해서 CPU 가 접근할 수 있는 모든 곳에 접근할 수 있습니다.
주소가 동적이라면 /proc/iomem, /proc/ioports
혹은 각 subsystem 에서 제공하는 인터페이스(/sys/bus/pci)등을 통해 정보를 획득할 수 있습니다.

덧.
FUSE for MacOS 에 자극받아 FUSE for Windows 에 대한 논의가 있었고,
얼마전 LGPL 로 공개된 것으로는 최초의 결과물이 나왔습니다.
아직 API 가 완전히 호환되지는 않는 것 같은데 관심있는 분은 테스트 졈...
일에 치여서 이놈이 shell name extention 를 사용하는지 IFS 를 구현했는지 조차도 알아보지 못하고 있습니다.

OTL

vamf12의 이미지

윈두우용 userspace file system 이라면 dokan이 잇습니다.

http://dokan-dev.net/en/download

제작자가 자신의 라이브러리로 만든 sshfs를 사용해 봤는데, 잘돌아 가더군요 ^^

박영만의 이미지

저번에도 bushi 님께서 답변 해주신 거 같은데 번번히 감사드립니다. (--)(__)

댓글 달기

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