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"