IT EXPERT 의 리눅스 디바이스 드라이버  -유영창 - 을 읽으며   정리해 보았다.

 

문자디바이스 드라이버의 특성 바이트 단위로 처리되고, 써넣는 데이터는 보존될 수도 , 보존되지 않을 수도 있다.

 

문자 디바이스 드라이버의 경우

 

char_dev.c

/usr/src/linux-4.0.2/include/linux/fs.h

 

/usr/src/linux-4.0.2/include/linux/types.h"

 

 

typedef long long   __kernel_loff_t;  // 8byte 32bit system

 #if defined(__GNUC__)
typedef __kernel_loff_t     loff_t;
#endif



 

 

 

 

struct module *owner;

- 파일 오퍼레이션의 소유자를 나타낸다. 디바이스 드라이버의 사용 횟수를 커널에서 관리해야 하기 때문에 이 필드를 지정한다. 보통은 THIS_MODULE을 지정한다.

ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);

- 디바이스 드라이버의 비동기 읽기를 구현하는 함수를 지정한다. 일반적인 디바이스 드라이버에서는 이 기능을 사용하지 않기 때문에 NULL을 지정한다.

 

문자디바이스 드라이버를 동작하려면 커널에 등록되어 있어야한다.

<linux/fs.h> 헤더파일을 소스에 포함 시켜야 한다.

- register_chrdev : 디바이스를 등록한다.

- unregister_chrdev:등록된 디바이스를 제거한다.

 

 

/usr/src/linux-4.0.2/include/linux/fs.h"

 

 

 

 

 

'리눅스커널 > Device Driver' 카테고리의 다른 글

USB 인사이드 muosys.egloos.com  (0) 2016.05.16
PS/2 키보드 LED제어  (0) 2015.05.13
IOCTL  (0) 2015.05.12
디바이스드라이버기초정리  (0) 2015.05.11
platform_driver  (0) 2015.04.23

+ Recent posts