캐릭터 디바이스 드라이버의 수현 (책 p.70)
insmod를 하면 하드디스크에 파일로 저장되었던게 memory에 붙음
(책 p.72) -> 드라이버 API
register_chrdev_region()
메이져가 0~255 //이미 많이 사용 중 //겹치지 않는 것이 중요 //지금은 늘어남
major number = 253 번의 장치 번호를 받은 것을 알 수 있다.
open(main 함수안(어플리케이션 안에)) -> libaray(libc) -> S/W Interrupt(제일 밑 바닥 //운영체제가 제공하는 기본함수) -> System call(S/W가 부름) -> VFS(File system: 파일의 이름만 알고 있기 때문에 메이저 번호를 찾아야 됨) -> CHR.Device File(정보들을 찾음) -> Device driver(하드웨어를 찾아감)
드라이버는 혼자 움직을 수 없어서 누군가가 움직여줘야됨(책 p.93)
그런게 open임(총의 방아쇠 역활)
open을 담은 library가 내용 중 (※비상👀)인터럽트(※비상✨) 걸어서 해줌
fd 에서 받아온 open은 file의 임시 번호
uers(APP) -> OS -> device
원래 복사는 2번 이루어 지는데 DirectX(window)/mmap(linux)는 한 번만 복사하면 됨(책.93 참조)
(책 p.100 참고)
빠르게 쓰기
arm-no ~ gcc /dev/SK c 253 0
insmod ./sk.ko
mknod /dev/SK c 253 0
ls /dev -al | grep SK
./sk_app
poll 1대 다// io multiplexing
strace -ls : 운영체제와 무슨 대화를 했는지를 알 수 있는 리눅스 명령어