캐릭터 디바이스 드라이버
1. 디바이스 타입
- dev_t
MAJOR(dev_t dev); 주번호 추출
MINOR(dev_t dev); 부번호 추출
MKDEV(int ma, int mi); 번호 설정
- major 번호의 결정
- cdev 구조체
<linux/cdev.h> |
struct cdev{ struct kobject kobj; struct module *owner; const struct file_operations *ops; struct list_head list; dev_t dev; unsigned int count; } |
2. 캐릭터 디바이스 드라이버 API
- register_chrdev_region()
디바이스 개수를 포함한 디바이스 드라이버 등록 함수
- 함수
int register_chrdev_region (dev_t first, unsigned int count, char* name)
- 매개 변수
first |
할당 받으려는 디바이스 번호 범위 중 시작 번호. major/minor 번호를 모두 포함 |
count |
minor 번호로 디바이스 개수 |
*name |
디바이스 이름 (/proc/devices 에 나타난다) |
- alloc_chrdev_region()
*dev |
성공적인 경우 디바이스 번호가 할당 |
firstminor |
디바이스에 할당될 첫번째 minor number, 일반적으로 0 |
count |
minor number로 디바이스 개수 |
*name |
디바이스 이름(/proc/devices와 sysfs에 나타난다) |
- unregister_chrdev_region()
- cdev_init()
*cdev |
초기화할 cdev 구조체 |
*fops |
등록할 fop 구조체 포인터 |
- cdev_add()
*cdev |
등록한 cdev 구조체 |
num |
등록할 디바이스 번호 (major/minor 포함) |
count |
등록할 디바이스 개수, 주로 1 |
- cdev_del()
'Linux Driver' 카테고리의 다른 글
디바이스 드라이버 (Device Driver) - 3. file_operations 구조체 (0) | 2018.09.10 |
---|---|
디바이스 드라이버 (Device Driver) - 2. 디바이스 파일 (0) | 2018.09.10 |
디바이스 드라이버 (Device Driver) - 1. 개요 (1) | 2018.08.29 |
커널 모듈 (Kernel Module) (0) | 2018.08.29 |
디바이스 드라이버를 위한 커널 서비스 (Kernel Service for Device Driver) - 2. 인터럽트 처리 (0) | 2018.08.29 |