Linux(20)
-
로그를 콘솔에 표시하면서 파일에 저장하기
file > log.txt위와 같이 하게되면 file이라는 앱이 출력하는 print 내용을 log.txt에 저장합니다. warning, error log까지 모두 저장하려면 다음과 같이 2> 역시 log.txt로 redirection 합니다. file > log.txt 2>&1로그의 출력을 화면에서 출력하면서 파일에 저장하려면 다음과 같이 처리합니다. file | tee log.txtlog.txt의 마지막에 '추가' 하려면 -a 옵션도 함께 사용합니다. file | tee -a log.txt
2023.02.23 -
Linux kernel memory management - 2
Slab Layer 1) 범용 자료구조의 cache layer 2) 빈번한 할당과 해제 작업이 용이하게 개발자들은 해제 리스트(free list)를 많이 사용 3) 새로 memory를 할당하고 그 memory에 자료구조를 준비하는 대신 해제 list에 들어 있는자료구조를 바로 사용 object cache 기법 1) Kernel 내에서 free list를 사용하는데 가장 큰 문제점은 전체적인 제어 방법이 없다는 것. 2) 전체적인 system memory 부족 시 해제 list의 cache 크기를 줄여서memory를 확보할 방법이 없음 3) 커널은 어떤 해제 list를 선택 해야 할 지알 수 없음 그래서 1) 이런 부분을 처리하는 layer로서 slab layer를 만듦 2) slab layer는 범용 자..
2022.05.07 -
Linux kernel Memory management - 1
Memory management word ? page ? 커널은 물리적 페이지를 메모리 관리의 기본 단위로 사용 processor는 memory에 접근 시 byte나 word 단위로 접근, MMU는 page 단위로 처리함 * virtual memory 관점에서는 page가 유의미한 최소 단위임 page 크기 대부분의 32 bit architecture는 4KB 64bitarchitecture의 경우 8KB page 구조체 struct page 구조체를 사용해모든 물리적 page를 표현 에정의 struct page { unsigned long flags; atomic_t _count; atomic_t _mapcount; ... struct list_head lru; void *virtual; }; _cou..
2022.05.07 -
dlopen 시 undefined symbol 발생 이슈 해결 방법
shared lib.의 build 후, dlopen 시 undefined symbol 발생 - shared lib 내에 UND symbol에 대해 사용하는 code가 존재 -> dlopen 시 오류 . 해당 UND global symbol이 1) 다른 file 내 정의되어 있다면, -> 해당 file을 함께 compile 해야 함 2) 다른 lib 내 정의되어 있다면, -> 해당 symbol을 정의하고 있는 library를 link 해야 함
2022.05.06 -
Kernel device driver 추가
built-in으로 kernel driver를 추가 하고 싶을 시 다음과 같이 처리 obj-y는 built-in obj-m은 module obj-$(CONFIG_MY_SETTING) :=
2021.12.31 -
Linux kernel: kthread & wait_event_interruptible 사용법
Kernel thread에서event wait 사용 법 1. Dependencies #include #include #include 2. Declaring variables static DECLARE_WAIT_QUEUE_HEAD(hub_wait_queue); static struct { unsigned int evt_thread_stt; unsigned int evt_wait_cond; struct task_struct *evt_kthread; spinlock_t evt_thread_lock; } hub_wait_queue_ctx; 3. Condition check used by kthread bool _hub_work_evt_check_cond() { spin_lock(&hub_wait_queue_ct..
2021.12.31