glibc에 래퍼가 없는 리눅스 시스템 콜 — syscall()로 futex_waitv() 호출하기

커널에 새 시스템 콜이 들어와도 glibc에 래퍼 함수가 없으면 C에서 일반 함수처럼 부를 수 없다. 이때는 syscall(SYS_xxx, ...)로 번호와 인자를 직접 넘긴다. 커널 5.16에 들어온 futex_waitv()도 아직 래퍼가 없다. LPC…

Continue Readingglibc에 래퍼가 없는 리눅스 시스템 콜 — syscall()로 futex_waitv() 호출하기

리눅스 커널의 시스템 콜 처리 경로 — arm64 예외 벡터부터 핸들러까지

x86-64에서는 syscall 명령이 MSR_LSTAR에 적힌 주소로 곧장 점프한다. 시스템 콜 전용 진입점이 레지스터 하나에 박혀 있는 구조다. arm64에는 그런 전용 레지스터가 없다. svc 명령이 만드는 것은 "동기 예외" 하나일 뿐이고,…

Continue Reading리눅스 커널의 시스템 콜 처리 경로 — arm64 예외 벡터부터 핸들러까지