ARM64 inline asm 포팅 가이드 (커널/Clang 포팅 관점)
ARM64(AArch64)에서 inline asm은 “문법이 어렵다”보다 컴파일러가 더 엄격하고 최적화가 더 공격적이라서 사고가 난다.특히 벤더 커널을 Clang으로 옮길 때는 constraint 선택 + clobber + barrier 3개가 대부분의 원인이다. 이 글에서는 ARM64에서…
Linux Kernel
ARM64(AArch64)에서 inline asm은 “문법이 어렵다”보다 컴파일러가 더 엄격하고 최적화가 더 공격적이라서 사고가 난다.특히 벤더 커널을 Clang으로 옮길 때는 constraint 선택 + clobber + barrier 3개가 대부분의 원인이다. 이 글에서는 ARM64에서…
이 글에서는 Linux 커널 기준으로 자주 사용하는 inline asm constraint를 정리한다. GCC + Clang 공통 기준으로, 특히 Clang에서 주의해야 할 포인트를 포함한다. 1. 기본 구조 asm volatile ( "asm template"…
Linux 커널은 전통적으로 GCC로 빌드되어 왔다. 하지만 최근 몇 년간 Clang / LLVM 기반 빌드가 빠르게 확산되었다. 현재는 둘 다 “정식 지원” 상태이며, 차이는 “지원 여부”가 아니라 특성의 차이에 가깝다.…
이 글은 Ubuntu 환경에서 Clang / LLVM 툴체인을 이용해 Linux 커널을 실제로 빌드하는 방법을 단계별로 정리한다. Clang/LLVM 툴체인 설치는 아래 글을 먼저 확인한다. https://junorionblog.co.kr/linux-%ec%bb%a4%eb%84%90-clang-llvm-%ed%88%b4%ec%b2%b4%ec%9d%b8-%ec%a4%80%eb%b9%84%ed%95%98%ea%b8%b0/ Ubuntu 커널 빌드에 대한건 아래 글을…
이 글은 리눅스 커널을 Clang/LLVM 툴체인으로 빌드하기 위한 실전 가이드다.LLVM=1 기반의 표준 빌드 플로우, 크로스 컴파일(arm64 포함), LLD/IAS, BTF(pahole), LTO까지 한 번에 정리한다. 커널에서 말하는 “LLVM 빌드”의 의미 커널 문서에서…
리눅스 커널 메일링 리스트(보통 LKML)에 가입하는 방법은 생각보다 단순하다.천천히 단계별로 정리해 본다. 리눅스 커널 메일링 리스트(LKML)란 무엇인가? Linux Kernel Mailing List 는리눅스 커널 개발자들이 패치, 설계 논의, 버그 리포트를 공개적으로…
watermark_boost는 리눅스 커널의 zone 워터마크(watermark) 기반 메모리 리클레임 시스템에서 사용되는 메모리 부족 예측에 따른 proactive reclaim 트리거 조절 값이다. 말 그대로 워터마크의 임계값(watermark_high)을 일시적으로 높여, 더 많은 페이지를 reclaim 하도록…
리눅스 커널을 플랫폼 또는 목적에 맞게 빌드하기 위해서는 .config 파일을 생성하고, 적절한 옵션들을 구성해야 한다. 이 과정은 커널 빌드 전체의 품질과 기능성에 큰 영향을 미친다. 이 글에서는 커널 설정 방법에…
Linux 커널은 다양한 방식으로 시스템의 상태와 이벤트를 기록한다. 가장 대표적인 로그 시스템은 **printk()**를 통해 출력되는 커널 메시지이며, 이 메시지들은 ring buffer 형태로 저장되어 /dev/kmsg 또는 dmesg 명령어로 확인할 수 있다.…
**SysRq(System Request)**는 리눅스 커널에 내장된 긴급 제어 백도어이다. 커널이 응답하지 않거나 시스템이 매우 불안정할 때도, SysRq 키 조합을 통해 시스템을 진단하거나 복구할 수 있도록 도와주는 기능을 한다. 이 글에서는 SysRq의…