LINUX
Posts
487 postsvmalloc - overview(1)
vmalloc에 대해서 리뷰를 해보려고 합니다.vmalloc이라. 이 놈도 리눅스 커널 책에서 엄청나게 많이 소개가 되고 있죠. 너무나도 좋은 글들이 있지만 vmlloc을 쓸 때를 허접하게 요약하면 아래와 같아요.1> 물리적으로 연속적이지 않은 메모리를 할당하고 싶을 때.2> 큰 사이즈의 가상 메모리 공간을 확보하고 싶을 때. 흠냐. 이게 뭔 소리지? 사실 전 머리 속에 개념이 잘 안 들어오더라구요.자, 코드 좀 살펴볼께요. 우선 vmalloc을 관리하는 핵심 변수를 소개하자면 vmap_area_list 이 분들 소개 안 할 수 없네요.LIST_HEAD(vmap_area_list); vmap을 관리하는 링크드 리스트가 vmap_area_list인데요, __insert_vmap_area 함수
[Linux][Kernel] ftrace: stack tracer
리눅스 커널에서 제공하는 여러 profile tool 중에 ftrace가 있어요. 매우 강력해요. 잠깐 기억하는게, 저번 리눅스 커널 세미나에 갔었을 때 리눅스 커널 고수들이 ftrace로 벌이는 향연을 보고 참 라이브 공연에 있는 듯한 착각을 받았어요. ftrace 기능 중 stack tracer 기능을 잠깐 소개하고자 해요. 리눅스 커널 고수들 ftrace 로그를 밥 먹듯이 본다고 하네요. 저도 밥 먹듯이 보고는 있지만, 영 실력이 느는 것 같지 않아 짜증이 나지만요. 우선 stack tracer 기능을 좀 소개하려고 해요. 기능도 참 강력해요. 아래와 같이 커널 Config를 설정합니다.--- a/arch/arm/configs/pompeii_com_defconfig+++ b/arch/arm/conf
Spinlock(스핀락) - 소개
스핀락. 리눅스 커널 책에서 언제나 볼 수 있는 개념이죠.싱크로나이제이션, 동기화, 어쩌구. 실제 Spinlock 구현부를 좀 살펴볼께요. 아래 코드를 전처리해서 코드를 보면,[kernel/fs/jbd2/commit.c]void jbd2_journal_commit_transaction(journal_t *journal) {//snip spin_lock(&commit_transaction->t_handle_lock); 아래 순서로 함수 콜이 수행되는 걸 알 수 있죠. 실제 스핀락 구현부는 arch_spin_lock() 함수라고 할 수 있어요. 우리 눈에 보이는 spin_lock()의 실체는 arch_spin_lock()군요.spin_lock() -> _raw_spin_lock()
Character Device Driver(캐릭터 디바이스 드라이버) - Overview
캐릭터 디바이스 코드를 보다가 한 가지 의문이 생겼어요.아래 코드는 캐릭터 타입 디바이스의 메이저 번호를 0으로 설정하네요. 어라?이거 잘못된 코드인가? static int pacman_probe(struct platform_device *pdev){ pr_debug("%s: %s version %s\n", __func__, DEVICE_NAME, PACMAN_VERSION); pacman_ctl.dev_num = register_chrdev(0, DEVICE_NAME, &pacman_fops); //<<-- if (pacman_ctl.dev_num < 0) { pr_err("%s: register_chrdev failed\n", __func__);



![[Spoiler] '우주 형제' 완결. 매거진 신작 '천선 전기'.](https://img.zoomtrend.com/2026/06/10/1781142015-ECBD98ED8AB8EBA1A4EB9FACEBA5BCEB93A0EC9E90.jpg)