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__) |
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 |