character device 파일 대신 sysfs 파일을 쓰는 이유는?

kkb의 이미지

디바이스 드라이버를 제어할 때,
sysfs를 이용해서 제어하도록 많이 구현하는데

왜 character device 파일 대신 sysfs 파일을 쓰는 건가요?

sysfs가 read, write 처리가 쉽고 간단하다는 말을 많이 듣습니다 (proc과 같이)
매개변수 형식에 따라서 다양한 입력도 가능하고요

그런데 character device 파일을 이용해도
sysfs에서 하는 것 처럼 쉽고 간단하게 read, write 처리할 수 있고 매개변수 형식에 따라 다양한 입력도 가능하지 않나요?

read 함수와 write 함수를 어떻게 구현하는지의 차이인데
sysfs에서 하는 것과 character device 파일로 하는 것의 큰 차이를 모르겠습니다

제가 보기에 sysfs의 이점은 /sys 디렉토리에서 트리로 구조화시켜주는 것이 최대 이점인 것 같은데
혹시 이 이점 때문에 sysfs를 쓰는 것인지
이점이 "구조화" 밖에 없는지 아니면 다른 장점들이 더 많은지 궁금합니다

.

같은 맥락에서의 질문인데
예전 버전에서는 sysfs 이전에 procfs를 많이 썼는데
마찬가지로 예전 버전에서 디바이스 드라이버를 제어할 때
character device 파일을 이용하지 않고 왜 proc 파일로 제어하도록 구현했을까요?

커널 데이터를 제어하는 모든 경우를 말하는 것이 아닙니다
디바이스 드라이버 제어에 관해서만 말하는 것입니다

익명 사용자의 이미지

요즘은 debugfs도 많이 사용합니다.

poplinux의 이미지

구현이 더 간단합니다.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

drinkme의 이미지

그냥 제가 이해하는 바로는:

2.4까지는 character driver를 주로 썼습니다.
2.6 와서 platform driver 개념이 들어왔고요.

character driver는
하나하나가 major/minor number를 받아야 하고,
이걸 /dev에 관리해 줘야 합니다.
사용하기 간단할 수도 있지만, 확장성 있는 방법인지는 잘 모르겠습니다.

sysfs는 각 object들의 property를 구조적(혹자는 객체지향적이라고도 하더만요)으로
표현하기 때문에,
각 device object에서 자기가 원하는 entry를 쉽게 export할 수 있습니다.

댓글 달기

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