int register_chrdev(unsigned int major , const char *mem , struct file_operation *fopen)
- 문자 디바이스 드라이버를 커널에 등록하는 함수
- major : 디바이스 주번호
- mem : 디바이스 이름
- fopen : file_operation 구조체 변수 주소
- return값 : 실패 음수값 , 성공 major값
basic.c
register_chrdev 함수를 활용하여 커널 드라이버를 등록 하고 unregister_chrdev함수를 활용하여 등록된 커널드라이버를 헤제한다.
결과는 다음과 같다.
/proc/devices 를 보고 등록된 커널 드라이버목록을 확인한다. 주번호 240 에 basic_driver라는 드라이버가 등록되어있다.
nknod /dev/basic c 240 0
-> 디바이스 파일 만들어 주며 해당 basic에대한 디바이스 파일을 만들어준다. user모드에서 해당 장치를 호출하게 되면 디바이스 파일을 거쳐서 kernel에 요청하게 된다. 구분하는 번호는 240(주번호) 로 구분된다.
open 과 release 가 호출될때 basic_open 그리고 basic_release 로 연결해준다.
다음 소스로 test 해보았다.
해당 소스는 /dev/basic 을 open하였고 open하게되면 basic_open을 호출한다. 그리고 close 를 호출하게 되면 basic_release를 호출하게된다.
결과는 다음같다.
커널 드라이버를 떼어내고 실행하게되면 No such device or address 라는 에러 메세지를 보여준다.
open으로 파일을 열었지만 하나의 devie로 인식한다는 것을 보여준다.
'보안공부 > Linux' 카테고리의 다른 글
volatility 명령어 (0) | 2017.01.10 |
---|---|
드라이버 Read Write (0) | 2016.05.23 |
2016-05-09 심볼공유 (0) | 2016.05.09 |
2016.05.02 수업 (0) | 2016.05.02 |
lsmod (0) | 2016.04.18 |