System Call 분석
·
Linux/start_analyse()
시스템 콜 번호 정의는 어디에 되어있는가?include/uapi/asm-generic/unistd.h 에 시스템 콜 번호가 저장되어있다. 만약, fork() 시스템콜이 몇번인지 확인하고자 한다면?#define __NR_clone 220__SYSCALL(__NR_clone, sys_clone)__SYSCALL은 _arm64##sym로 define 되어있다. 따라서 unistd.h는 이렇게 구성이 될 것이다.#define __NR_clone 220__arm64_sys_clone그러면 나중에 unistd.h만 include를 하면, __arm64_sys_clone() 함수를 사용할 수 있다는 뜻이다.시스템 콜의 실제 정의시스템 콜의 실제 정의는 SYSCALL_DEFINEx 매크로에 의해서 정의된다. SYSCA..
나의 sht20드라이버는 무엇이 부족했을까, 메인라인 코드와 비교 분석
·
Linux/start_analyse()
라즈베리파이 온습도 제어 시스템을 만들면서sht20 온습도 센서를 사용했고, 이 과정에서 sht20센서의 디바이스 드라이버를 직접 제작했다. 디바이스 트리를 작성하고, 데이터 시트를 보고 명령어를 짜고 꽤나 공부가 되었던 토이 프로젝트 인데,정작 리눅스 내에 sht21 드라이버가 있는 줄은 몰랐다.https://github.com/Jminu/Yocto-rasp-BSP/blob/master/meta-mylayer/recipes-kernel/sensor-drivers/files/sht20_driver.c Yocto-rasp-BSP/meta-mylayer/recipes-kernel/sensor-drivers/files/sht20_driver.c at master · Jminu/Yocto-rasp-BSPbuil..
/drivers/char/mem.c 드라이버 2차 분석
·
Linux/start_analyse()
기존devlist[5] = {"zero", &zero_fops, FMODE_NOWAIT, 0666};devlist[7] = {"full", &full_fops, 0, 0666};에서 write_zero와 read_zero에 대해서 이전에 봤다. 간단하게 보자면,zero_fops#define write_zero write_null이고,write_null 코드421 static ssize_t write_null(struct file *file, const char __user *buf,422 size_t count, loff_t *ppos)423 { 424 return count;425 }걍 아무 동작도 하지않음.read_zero 코드4..