Posts
556 posts[리눅스커널] 워크큐(workqueue): __queue_work() 함수 분석하기
워크를 워크큐에 큐잉하는 핵심 동작은 __queue_work() 함수에서 수행합니다. 코드 분석을 통해 워크를 워크큐에 어떤 방식으로 큐잉하는지 살펴보겠습니다. 코드 분석에 앞서 __queue_work() 함수 선언부와 인자를 점검합시다.static void __queue_work(int cpu, struct workqueue_struct *wq, struct work_struct *work); queue_work() 함수에서 첫 번째 인자로 WORK_CPU_UNBOUND, 두 번째 인자로 system_wq 를 전달했으니 cpu는 WORK_CPU_UNBOUND, wq는 system_wq 시스템 워크큐 전역 변수 주소입니다. 함수 인자 목록을 정리하면 다음과 같습니다. int cpu: WORK_CP
[리눅스커널] 워크큐(workqueue): 워크를 워크큐에 큐잉하는 인터페이스 함수 분석하기
커널은 디바이스 드라이버 레벨에서 워크큐를 큐잉할 수 있는 여러 가지 함수를 지원합니다.이번 시간에는 워크를 워크큐에 큐잉할 때 사용하는 함수를 소개하고 코드를 분석합니다. schedule_work() queue_work() queue_work_on() 먼저 schedule_work() 함수를 분석해볼까요? schedule_work() 함수 분석하기 schedule_work() 함수 구현부 코드는 다음과 같습니다.[https://github.com/raspberrypi/linux/blob/rpi-4.19.y/include/linux/workqueue.h]1 static inline bool schedule_work(struct work_struct *work)2 {3 return queue_wo
blkid - 리눅스에서 연결(마운트)된 저장장치(파티션) 정보 표시
blkid 명령으로 리눅스에서 현재 연결(마운트)된 저장장치(파티션, partition)에 관한 정보를 확인할 수 있다. 장치이름, 파일시스템 종류(type), 고유식별자(UUID) 등이 출력된다. 배포판에 따라서 해당 정보를 열람하려면 루트(root) 권한을 요구할 수도 있다. 일반 사용자 권한으로 실행했을 때 아무런 출력도 없다면 루트 권한으로 실행해 보자. # blkid 실행 sudo blkid /dev/sda1: LABEL="rootMX18.1" UUID="ef8a7380-6cc0-4bbd-aef2-b2617588e528" TYPE="ext4" PARTUUID="abb0a64f-01" 위의 예시를 보면, 장치는 /dev/sda1, 레이블(lable)은 "rootMX18.1", 고유
[리눅스커널] 스케줄링: 스케줄링/디버깅: ftrace: sched_switch와 sched_wakeup 이벤트 소개
리눅스 커널 ftrace 에서 sched_switch와 sched_wakeup 이벤트를 지원합니다. 각각 이벤트에 대해 소개하고 메시지를 분석하는 방법을 살펴보겠습니다. 리눅스 커널의 프로세스 동작을 처음 접하는 분들이 겪는 어려움이 있습니다. 실제 리눅스 시스템에서 얼마나 자주 프로세스가 스케줄링 되는지 확인할 수 없다는 것입니다. 그 이유는 간단합니다. 코드를 분석한 내용을 실제 리눅스 시스템에서 확인하지 않기 때문입니다. 그래서 임베디드 리눅스를 개발할 때 모듈이나 드라이버 코드가 실행할 때 어떤 프로세스가 어떻게 스케줄링 되는지 확인하기도 어렵습니다. 리눅스 커널에서는 이런 의문을 해소시킬 수 있는 디버깅 기능을 지원합니다. 바로 ftrace입니다. ftrace 에는 프로세스



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