[리눅스커널][시스템콜] 전처리 코드에서 시스템콜 핸들러 확인하기
By Guillermo Austin Kim | 2019년 2월 21일 |
전처리 코드에서 시스템 콜 핸들러 확인하기이번에는 전처리 코드에서 실제 시스템 콜 핸들러 구현부를 찾아보겠습니다. sys_read() 시스템 콜 핸들러를 찾으려면 다음 명령어을 입력하면 됩니다.root@raspberrypi:/home/pi/RPi_kernel_src/linux #egrep -nr SYSCALL_DEFINE * | grep read...fs/read_write.c:566:SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count) 시스템 콜 핸들러는 SYSCALL_DEFINE으로 시작하는 매크로로 선언됐으니 이 매크로로 검색하고 grep 명령어로 지정한 이름이 포함된 결과를 출력하면 되는 것입니다. 이전 절에서 시
천체 관측 프로그램 “스텔라리움”
By 소인배(小人輩).com | 2019년 1월 5일 |
[Kernel] slab object 자료구조 - 페이지, 슬랩 캐시
By Guillermo Austin Kim | 2018년 4월 23일 |
이번 시간에는 코어 덤프에서 페이지 디스크립터와 슬랩 오브젝트 자료구조를 알아 봅니다. 우선 다음과 같은 페이지 디스크립터가 있습니다.(struct page *) (struct page*)0xEC778540 = 0xEC778540 -> ( (long unsigned int) flags = 128 = 0x80, //<<--[1] (struct address_space *) mapping = 0x0, (void *) s_mem = 0x0, (long unsigned int) index = 3306744832 = 0xC518EC00, (void *) freelist = 0xC518EC00, //<<--[2] (bool) pfmemalloc = FALSE, (unsign
[리눅스커널] 인터럽트 후반부 처리: IRQ 스레드를 깨우는 코드 분석
By Guillermo Austin Kim | 2019년 2월 24일 |
IRQ 스레드는 누가 언제 실행할까? 이번 절에서는 IRQ 스레드가 어떤 과정으로 실행하는지 살펴보겠습니다. IRQ 스레드는 크게 다음 단계로 실행합니다.1. 인터럽트 핸들러에서 IRQ_WAKE_THREAD 반환2. IRQ 스레드 깨움3. IRQ 스레드 핸들러 실행 IRQ 스레드를 실행하는 출발점은 인터럽트 핸들러가 IRQ_WAKE_THREAD 를 반환하는 시점입니다. 이 부분부터 IRQ 스레드를 어떤 과정으로 깨우는지 세부 동작을 점검하겠습니다. IRQ 스레드를 깨우는 코드 분석 인터럽트가 발생하면 인터럽트 핸들러가 실행됩니다. 이 인터럽트 핸들러가 IRQ 스레드 실행의 출발점입니다. 인터럽트 핸들러에서 IRQ_WAKE_THREAD를 반환하면 해당 IRQ 스레드를 깨웁니다. 예를 들어 92번 “m