[Linux][GCC]## 매크로 - 심볼 생성
By Guillermo Austin Kim | 2018년 5월 3일 |
리눅스 커널 코드를 읽다 보면 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
리눅스에서 특정 디렉토리가 속한 파티션의 빈 공간 확인
By 반달가면 | 2019년 7월 8일 |
df 명령을 아용한 디스크 빈 공간 확인은 이미 이전에 정리했으나(여기로), 몇가지 유용한 옵션이 있어 추가로 정리하기로. df에 별도의 옵션을 지정하지 않으면 현재 마운트되어 있는 파티션들의 목록과 사용률 관련 정보를 표시해 준다. 여기에 디렉토리를 인자(argument)로 지정하면 해당 디렉토리가 속한 디스크에 대한 정보만 표시한다. # /data 디렉토리가 속한 디스크의 정보 표시 df /data # -h 옵션으로 좀 더 읽기 쉬운 형태로 출력 df -h /data 만약 특정 정보만 표시하고 싶다면 --output 옵션으로 지정할 수 있다. # /data 디렉토리가 속한 파티션의 빈 공간만 출력 df --output=avail /data # -h 옵션 추가 df
리눅스에서 로그아웃 없이 그룹 소속 변경 적용
By 반달가면 | 2017년 11월 29일 |
리눅스에서 그룹(group) 소속을 변경했을 때, 변경 사항을 적용하기 위해서는 로그아웃 했다가 다시 로그인해야 한다(사용자 그룹의 생성/수정 등에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로). 그런데 예를 들어 작업중인 터미널창이 여러개 있는데 그룹을 변경하고 새로 터미널창을 열어서 뭔가 추가적으로 작업해야 하는 경우처럼, 당장 로그아웃하기 어려운 상황에서 변경 사항을 적용시켜 뭔가 작업을 하고 싶을 경우가 있을 수 있다. 이럴 때 su 명령이 상당히 요긴하다. su 명령으로 해당 터미널창에서 새로 로그인한 것과 같은 효과를 줄 수 있기 때문이다. 예를 들어 계정 john을 사용중인데 my_group이라는 그룹에 소속되도록 한 후에 이 그룹과 관련된 작업을 하는 경우를 생각해 보자.
Spinlock(스핀락) - 소개
By Guillermo Austin Kim | 2017년 12월 5일 |
스핀락. 리눅스 커널 책에서 언제나 볼 수 있는 개념이죠.싱크로나이제이션, 동기화, 어쩌구. 실제 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()