LINUX
Posts
477 posts[Linux][Kernel] container_of 매크로
이번에는 container_of란 매크로를 배워볼게요. 커널 코드에서 current 매크로 못지않게 많이 활용하는 매크로이니 잘 알아야겠죠. 그럼 다음 샘플 코드를 함께 보면서 container_of란 매크로을 어떻게 활용하는지 살펴볼까요? 다음 wq_barrier_func 함수를 예를 들까요? container_of를 써서 struct wq_barrier *barr 로컬 변수에 어떤 값을 대입하고 있죠.static struct workqueue_struct *dev_to_wq(struct device *dev){ struct wq_device *wq_dev = container_of(dev, struct wq_device, dev); return wq_dev->wq;} 위 코드를 읽기 전에 우
[Linux][GCC]## 매크로 - 심볼 생성
리눅스 커널 코드를 읽다 보면 C 코드에는 존재하지 않는 함수를 호출하는 경우가 있습니다. 희한하게도 해당 함수를 아무리 검색해도 찾을 수 없는데 다른 함수에서 아무 문제 없이 호출합니다. 자 그럼 한 가지 예를 들게요. 아래 코드를 보면 end_page_writeback 함수에서 PageReclaim와 ClearPageReclaim 함수를 호출합니다. 이 함수는 페이지 write back 동작을 멈추는 역할을 하는 것으로 보이네요.[mm/filemap.c]void end_page_writeback(struct page *page){ if (PageReclaim(page)) { ClearPageReclaim(page); rotate_reclaimable_page(page); } PageReclaim
[Linux] 컴파일러(Complier) 소개
소프트웨어에 입문하는 분들은 컴파일러란 단어를 매우 자주 들을 가능성이 높습니다. 왜냐면 현업에서 가장 많이 쓰는 단어 중 하나이거든요.그럼 컴파일이란 단어를 영한 사전으로 찾으면 "안내서를 만들다.", "책을 편집하다."란 의미입니다.그러면 "컴퓨터에게 편집해서 안내서를 만든다"란 문장으로 컴파일이란 단어를 조합할 수 있는 것 같습니다. x86, ARM과 같은 CPU가 해석할 수 있는 것은 오로지 명령어이며, 이는 비트 패턴인 기계어를 뜻합니다."프로세스는 이미 정해진 특정한 비트 패턴에 반응한다"란 의미로 특정 비트 패턴을 명령어라고 부를 수 있습니다. 조금 쉽게 설명을 드리면 CPU는 여러가지 전기적 스위치로 구성돼 있으며, 어떤 특정한 전기 스위치를 작동시키려면 데이터 버스 선을 따라 전압이 "있
vi 편집기의 몇가지 기본적인 명령어
vi 편집기에서 자주 쓰는 몇가지 명령어를 정리해 두기로. 새로 파일을 만들고 싶거나 기존 파일을 열어서 편집하려면 파일명만 인자로 주면 된다. 인자로 지정된 파일이 존재하면 해당 파일을 열고, 없으면 새로 만든다. # my_data.txt 파일 편집 vi my_data.txt 파일을 열 때 특정 행부터 편집을 시작하고 싶은 경우, + 옵션을 사용한다. # my_data.txt 파일의 100번째 행부터 표시 vi +100 my_data.txt 행번호는 모르겠지만 특정 문자열이 나타나는 곳부터 시작하고 싶을 때도 + 옵션으로 가능. # my_data.txt 파일에서 문자열 abc가 있는 행부터 표시 vi +/abc my_data.txt vi를 실행해서 편집을 할 때



