Linux 6.12를 위한 printk 변경 사항의 최근 제출은 'No Big console lock CONsoles'를 의미하는 NBCON 콘솔 준비에 있어 중요한 진전을 나타냅니다. 이번 업데이트는 콘솔 구조에 새로운 콜백을 도입하며, 여기에는 작업 컨텍스트에서 nbcon 콘솔을 플러시하기 위한 write_thread()와 원자적 컨텍스트 플러싱을 위한 write_atomic()가 포함되어 있습니다. 이 원자적 컨텍스트 플러싱은 NMI(Non-Maskable Interrupt)를 포함합니다. 또한, 변경 사항은 드라이버 전용 잠금을 관리하기 위해 con->device_lock() 및 device_unlock()을 구현합니다.
새로운 printk 전용 커널 스레드(kthreads)가 생성되었으며, 여기에는 nbcon 콘솔에서 일반 우선 순위 메시지를 플러시하기 위한 콘솔별 kthreads와 CONFIG_RT가 활성화된 경우 모든 콘솔에서 메시지를 플러시하기 위한 전용 스레드가 포함됩니다. 새로운 콜백은 콘솔별 잠금 하에서 작동하여 정상, 비상, 패닉의 세 가지 심각도 수준을 관리할 수 있도록 합니다. 더 높은 우선 순위의 컨텍스트는 기록 처리 중 안전하게 소유권을 가질 수 있으며, 패닉 컨텍스트는 안전하지 않은 조건에서도 개입할 수 있도록 허용되어, 주로 무한 루프에 들어가기 전 최종 플러시를 수행합니다.
현재 nbcon 콘솔은 사용 가능하지 않으므로, 이러한 변경 사항은 기존 동작에 영향을 미치지 않습니다. 단, CONFIG_RT는 레거시 루프를 전용 kthreads로 오프로드합니다. 이러한 변경 사항의 3분의 2는 6.11 버전의 풀 리퀘스트에 이미 포함되어 있으며, 사용자에게 보이는 변경 사항은 비상 섹션 동안 플러시가 더 이상 지연되지 않도록 보장합니다. 논리는 printk_get_console_flush_type()을 활용하여 단순화되었습니다. 마지막 3분의 1의 변경 사항은 write_thread() 콜백을 도입하고, kthreads를 구현하며, procfs 및 sysfs 인터페이스를 업데이트합니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.