[리눅스커널] 메모리관리/디버깅: kmalloc() 함수로 메모리 할당 후 슬랩 캐시 종류 확인하기
By Guillermo Austin Kim | 2019년 9월 3일 |
이번 소절에서는 가상주소를 물리주소로 변환하는 과정을 실습으로 알아봅시다. 3장 3.6 절에 소개한 rpi_debugfs.c 소스를 활용해 실습을 진행합니다. 먼저 rpi_debugfs.c 소스를 입력하고 커널 빌드를 하시기 바랍니다. 패치 코드 입력 방법 알아보기 먼저 입력할 패치 코드부터 소개합니다.[drivers/soc/bcm/rpi_debugfs.c] 01 static int rpi_kernel_debug_stat_set(void *data, u64 val)02 {03 int ret;04 05 raspbian_debug_state = (uint32_t)val;06 07 if ( raspbian_debug_state == 1402 ) {08 unsigned long ph
[리눅스커널][SoftIRQ] Soft IRQ 컨택스트에 대해서 - in_softirq()
By Guillermo Austin Kim | 2019년 4월 14일 |
6.10 Soft IRQ 컨택스트에 대해서 인터럽트가 발생한 후 인터럽트 핸들러가 실행 중인 상태를 인터럽트 컨택스트라고 합니다. 이와 마찬가지로 Soft IRQ 서비스를 실행 중인 상태를 Soft IRQ 컨택스트라고 부릅니다. 이번 절에서는 Soft IRQ 컨택스트 시작 시점과 관련 자료구조에 대해서 살펴보겠습니다. 6.10.1 Soft IRQ 컨택스트 시작점은 어디인가? Soft IRQ 컨택스트는 Soft IRQ 서비스를 실행할 때 활성화됩니다. Soft IRQ 서비스는 __do_softirq() 함수에서 실행하니 다음 코드를 보면서 Soft IRQ 컨택스트 활성화 시점을 알아봅시다.[https://elixir.bootlin.com/linux/v4.19.30/source/kernel/softirq.
[음악] 맥이나 리눅스에서 명령어로 ape 파일을 flac 으로 변환
By 지훈현서 | 2018년 5월 27일 |
요즘에야 음악을 듣더라도 스트리밍을 대부분 이용하기 때문에 별 관심이 없을 수도 있지만,최근에 무손실 압축 음악인 flac 확장자에 대하여 많이 거론이 되기도 합니다.MP3 는 손실 압축이기 때문에 음질 손실이 있다는 것이지요. 다른 말로 CD 700 메가 등에 들어있는 십여곡 등이 손실없이 flac 파일로 담길 수 있고,이를 플레이하면 CD 음질과 동일하게 들을 수 있다는 것입니다. 물론 이를 플레이하는 코덱과 헤드폰 등도 이를 지원해야 되겠지요.특히 블루투스 연결인 경우에는 연결 방식 등에 대해 잘 따져 봐야 합니다.(SBC 연결, aptx 연결 등등) 암튼 그동안 모아 놓았던 음악들 중에서 .ape 와 .cue 확장자가 붙은 것들이 있었습니다. 잠깐 확인해 보니, .ape는 CD 내용을 압축 D
[리눅스커널] 워크큐(workqueue): __queue_work() 함수 분석하기
By Guillermo Austin Kim | 2019년 9월 16일 |
워크를 워크큐에 큐잉하는 핵심 동작은 __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