조회 수 14432 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

read() 함수


 기능
 응용 프로그램에서 디바이스 파일에 read를 수행했을 때 호출되는 함수로 읽기를 처리한다.

 

 형태 

#include <linux/fs.h>
 
 ssize_t read(struct file* filp, const char* buf size_t count, loff_t* fpos)


 매개변수
filp: 열린 파일에 대한 연산을 위한 구조체 주소
buf: 응용 프로그램에서 전달된 데이터의 선두 구조(사용자 공간)
count: 읽고자 요청한 데이터 개수
f_pos: 파일의 위치 변수(seek 값)


 반환값
 정상적으로 수행했다면 처리된 데이터 개수를, 그렇지 않으면 0보다 작은 값을
반환한다. 반환값은 저수준 파일 입출력 함수인 read의 반환값을 기준으로 해야
한다.
 

ssize_t xxx_read( struct file* filp, const char* buf, size_t count, loff_t* f_pos)
{
 if( !(준비된 데이터가 있는가?) )
 {
 if( !(filp->f_flags & O_NOBLOCK) )
 {
 // 블록 모드로 열렸다면 프로세스를 재운다.
 }
 }
 
 // 하드웨어에서 데이터를 읽는다.
 // inb(), outb(), ..., readb(), writeb() 함수 사용
 // 또는 버퍼를 읽는다.
 
 // 사용자 공간에 데이터를 전달한다.
 // copy_to_user, put_user
 
return 처리된 데이터 개수;
}



 
write() 함수


 기능
 응용 프로그램에서 디바이스 파일에write를 수행했을 때 호출되는 함수로, 쓰기를 처리한다.


 형태

 #include <linux/fs.h>
 
 ssize_t write(struct file* filp, const char* buf, size_t count, loff_t* f_pos)


 매개변수
filp: 열린 파일에 대한 연산을 위한 구조체 주소
buf: 응용 프로그램에서 전달된 데이터의 선두 구조(사용자 공간)
count: 쓰고자 요청한 데이터 개수
f_pos: 파일의 위치 변수(seek 값)


 반환값
 정상적으로 수행했다면 처리된 데이터 개수다. 그렇지 않다면 0보다 작은 값을
반환한다. 반환값은 저수준 파일 입출력 함수인 write의 반환값을 기준으로 해야한다.
 

ssize_t xxx_write( struct file* filp, const char* buf, size_t count, loff_t* f_pos)
{
 if( !(데이터가 처리 가능한가?) )
 {
 if( !(filp->f_flags & O_NOBLOCK) )
 {
 // 블록 모드로 열렸다면 프로세스를 재운다.
 }
 }
 // 사용자 공간에 데이터를 가져온다.
 // copy_from_user, get_user
 
 // 하드웨어에서 데이터를 읽는다.
 // inb(), outb(), ... , readb(), writeb() 함수 사용
 // 또는 버퍼를 읽는다.
 return 처리된 데이터 개수;
}

 
 
 
​※ 출처 : IT EXPERT 리눅스 디바이스 드라이버 - 유영창​ 저


  1. No Image

    libblkid - USB Storage의 정보 가져오기

    Date2018.10.18 Bymakersweb Views2978
    Read More
  2. No Image

    tslib 크로스 컴파일과 터치스크린 보정

    Date2018.08.02 Bymakersweb Views4863
    Read More
  3. Ubuntu Linux에서 dbus-c++바인딩 D-Bus 테스트

    Date2018.03.07 Bymakersweb Views10216
    Read More
  4. No Image

    NFS를 통해 파일시스템 공유

    Date2018.03.05 Bymakersweb Views3173
    Read More
  5. Wayland에 대한 간단한 소개

    Date2017.12.29 Bymakersweb Views5960
    Read More
  6. Ubuntu16.04에서 weston구동

    Date2017.12.28 Bymakersweb Views3867
    Read More
  7. No Image

    UVC 장치를 사용할때 v4l2: select timeout 에러 발생

    Date2017.12.27 Bymakersweb Views5217
    Read More
  8. [IPC]D-Bus 소개

    Date2015.02.28 Bymakersweb Views32525
    Read More
  9. No Image

    리눅스 데스크탑 환경 종류

    Date2015.02.11 Bypjk Views7008
    Read More
  10. No Image

    디바이스 드라이버에 대해서

    Date2014.04.19 Bymakersweb Views7103
    Read More
  11. 리눅스 커널 소스코드 구성도

    Date2014.03.04 Bymakersweb Views8198
    Read More
  12. No Image

    read() 함수, write() 함수

    Date2014.03.04 Bymakersweb Views14432
    Read More
  13. No Image

    리눅스 디렉터리 구조

    Date2014.02.28 Bymakersweb Views5407
    Read More
  14. No Image

    1. make

    Date2014.02.05 Bypjk Views4393
    Read More
  15. No Image

    2. 간단한 Makefile

    Date2014.02.05 Bypjk Views5193
    Read More
  16. No Image

    3. 매크로(Macro) 와 확장자(Suffix) 규칙

    Date2014.02.05 Bypjk Views4820
    Read More
  17. No Image

    4. Makefile를 작성할 때 알면 좋은 것들

    Date2014.02.05 Bypjk Views6270
    Read More
  18. No Image

    5. make 중요 옵션 정리

    Date2014.02.05 Bypjk Views5166
    Read More
  19. No Image

    6. Makefile 작성의 가이드라인

    Date2014.02.05 Bypjk Views4292
    Read More
  20. No Image

    mmap() 함수, munmap() 함수

    Date2014.02.05 Bypjk Views18932
    Read More
Board Pagination Prev 1 2 3 Next
/ 3