Linux driver framework에 대한 질문

rockme의 이미지

저는 linux driver framework가 궁금한 사람입니다. 곧바로 드라이버로 뛰어 들기 보다는 전체적인 구조를 파악하고 싶어서요.
누군가 이곳 강좌란에 올리신 글을 보니 윈도우에는 NDIS가 있고, 유닉스에는 STREAM 드라이버가 있다고 하더군요.

STREAM Framework에 대한 글을 보니 상위 계층에서 어플리케이션이 파일을 만들면
파일 디스크립터가 만들어지고 그것을 통해서 커널의 여러모듈에 전달되어 마지막에
드라이버와 통신하게 된다는 그런 내용이던데. 이것은 통상 보아오던 흐름인것 같은데.
그렇다면 특별히 네트워크 드라이버뿐만 아니라 유닉스의 거의 모든 드라이버가 이 모델을 따르게 되는건가요?

지리즈의 이미지

일단 적어도 block devices들...
/dev/hdx /dev/sdx /dev/dspx
모두 제어하기 위해서는 파일 디스크립터를 이용합니다.

/* eject.c 
** Copyright Paul Dwerryhouse, 1997
*/
#include <sys/types.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/cdrom.h>

#define CDDEVICE "/dev/cdrom"		/* CDROM device */

int main(int argc,char **argv)
{
   int cdrom;				/* CDROM device file descriptor */

   /* Open the CDROM device
   */
   if ((cdrom = open(CDDEVICE,O_RDONLY)) <0) {
        perror("open");
        exit(1);
   }

   /* Use ioctl to send the CDROMEJECT command
   */
   if (ioctl(cdrom,CDROMEJECT,0)<0) {
        perror("ioctl");
        exit(1);
   }
}

There is no spoon. Neo from the Matrix 1999.

이광우의 이미지

SVR4 계열의 유닉스 시스템에는 STREAMS 라고 불리우는 모델이 있는 것으로 알고 있고, 리눅스에서도 지원은 가능한 것으로 들었던 것 같습니다.
따라서, 솔라리스 등이 STREAMS 모델을 사용하는 것으로 알고 있습니다.
STREAMS는 계층별로 만드는 것으로 기억이 납니다만.. 자세한 것은 책을 다시 봐야 겠네요... 이론..
어설픈 지식이었습니다.. ㅡ.ㅡ;

Be Creative For Fun!!

rockme의 이미지

그러면 리눅스에서 네트워크쪽 그러니까 커널모드의 프로토콜 스택에서 드라이버까지 사용되는 프레임워크나 모델이 있는가요? 예를 들어 윈도우에서 NDIS가 있고 SVR4계열에는 STREAMS가 있듯이요.

The sun behind the clouds is still shining

댓글 달기

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