리눅스

포스트: 554|조회수: 0|TERM
Items

Posts

554 posts

[Linux][Kernel] 매크로 ##uname 파라미터 전달 기법

Guillermo Austin Kim|2018년 3월 28일

여러분 리눅스 커널 코드를 자주 보시나요? 그런데 커널 소스를 보다가 막힐 때가 종종 있지 않나요? 함수를 따라 가다 보면 존재하지 않는 함수를 호출해서 길을 잃기도 합니다. 그리고 매크로가 너무 많아서 분석 시간이 너무 오래 걸리는 경우도 있습니다. 이번 장에서는 리눅스 커널 코드를 읽다가 만나는 매크로를 모두 풀어보겠습니다. 이 매크로만 풀어도 리눅스 커널 소스 코드를 아주 효율적으로 읽을 수 있어요. 자 그럼 한 가지 예를 들게요. 아래 코드를 보면 PageReclaim와 ClearPageReclaim 함수가 보입니다.[mm/filemap.c]void end_page_writeback(struct page *page){ if (PageReclaim(page)) { ClearPageReclaim

[bash: cd] 디렉토리 내용 새로 고침(refresh)

반달가면|2018년 3월 28일

자주 일어나는 일은 아닌데, 간혹 리눅스 bash 스크립트로 작업하면서 디렉토리 안의 파일 목록이 계속 변하는 경우(추가, 삭제) 변경 내용이 반영되지 않아서 이미 삭제된 파일이 존재한다고 간주해서 오동작을 하는 경우가 있었기 때문에 간단한 해결책을 정리해 두기로. 아마도 캐싱(caching)과 연관되어 발생하는 문제가 아닌가 추측하고 있다. 아래와 같은 예시를 생각해 보자. while [[ 1 ]] do ... for file in `find ~/my_data/ -type f` do ... done sleep 5 done 5초 간격으로 ~/my_data 디렉토리 안에 있는 파일에 대해서 뭔가 작업을 하는 경우다. 잘 동작하면 괜찮은데, 혹시라도 작업

arm instruction(명령어) - push & 스택 푸쉬

Guillermo Austin Kim|2018년 3월 28일

push & 스택 푸쉬리눅스 커널 함수를 어셈블리 코드로 열어보면 바로 push란 명령어가 눈에 보입니다. 그럼 정말 맞는지 샘플 코드를 볼까요? 아래 코드는 리눅스 커널 핵심 함수입니다. 각 함수에서 가장 먼저 실행되는 명령어가 push죠.NSR:C0FF413C|__schedule: push {r4-r11,r14}NSR:C0FF4140| add r11,r13,#0x20 ; r11,r13,#32NSR:C0FF4144| ldr r3,0xC0FF4948 NSR:C017B0C4|handle_irq_event_percpu: push {r0-r2,r4-r11,r14}NSR:C017B0C8|

버추얼박스 가상 머신에서 유튜브 동영상을 재생할 때 소리가 늘어지는 문제

반달가면|2018년 3월 27일

버추얼박스(VirtualBox) 가상 머신(virtual machine)에서 구동한 리눅스 민트에서 유튜브 동영상을 재생하다가 이상한 점을 발견. 마치 LP 레코드를 느리게 재생하는 것처럼 소리가 전체적으로 낮고 느리게 늘어지는 현상이었다. 평소에 사용하지 않았던 가상 머신이라 그런지 원인을 찾는데 시간이 좀 걸렸다. 처음에는 동영상 재생에 사용되는 WebM VP9 코덱에 무슨 문제가 있나 싶어서 설정을 이리 저리 헤매였으나 별다른 해결책이 없었다. 브라우저를 바꾸면 어떨까 싶어 크로미움 브라우저를 설치해서 시험해 보았으나 결과는 마찬가지. 계속 고민하다가 눈에 들어온 것이 이 가상 머신의 디스플레이 설정이다. 3D 가속이 활성화되어 있었다. 혹시 가상 머신에서 3D 가속 기능을 사용하