본문 바로가기

Core BSP 분석/리눅스 커널 핵심 분석

파레트

-리눅스 커널 전처리 파일 추출 방법(마무리)
irq 워닝 매크로
- slab 디버거 기본 코드 + 디버깅 정보
 
- stack canary에 대해서
 
- ftrace에 대해서
 
- T32 여러 기본 명령어들
y.l.line 등등
 
- IRQ에 대해서
irq desriptor + ftrace 분석 방법 + 
handler private 변수
 
-last kernel message 저장, ramoops 저장 조건
-tty_drivers 전역 변수
-workqueue: ftrace 분석 + T32 점검
-P1V: stack corruption, 구글 패치 건!!!!
-P1V: 세마 포어 락업 건!!!
-리부팅 시 일어나는 현상 - notifier call
-cds lock - ipi call
-file descriptor
-i_node descriptor
-spinlock 상세 + 오버뷰
-커널 크래시 발생 시 스택 덤프 추가
-캐릭터 디바이스 등록 시 0: 자동 등록
-INIT_WORK callstack 확인
-다중 인자 구문
-ftrace event 추가 건
 
wake_lock 디버깅(ToDo)
ftrace early boot ftrace(내가 짠 코드 소개) Todo
volumeUpIRQStormIssue(ToDo)
커맨드라인전달하면 해당 값이 처리되는 과정(Todo)
부팅 도중 rc 파일로 ftrace 설정하는 방법(Todo)
kmalloc-64의 정체(ToDo)
부팅도중 찍히는 vmalloc 섹션정보(ToDo)
T32_TTBR0_TTBR1_소스업데이트(ToDo)
각 slab 타입을 볼 수 있는 크래시툴 명령어(ToDo)
mem_map에 대해서(ToDo)
timerAPI를 써서 타임아웃 시 커널 패닉 유발 코드(ToDo)
signalHandler 처리(ToDo)
init_task linkedlist로 각 프로세스가 연결된 과정(ToDo)
wait_queue에 대한 소개(ToDo)
좀비 프로세스에 대해서(ToDo)
lk_멀티_쓰레드구현(ToDo)
슬랩_디버거 옵션을 키면 일어나는 현상(ToDo)
콘택스트 스위치 정보는 어디에 저장(ToDo)
per_cpu 소개 및 개념(ToDo)
노티파이어콜 소개 및 개념(ToDo)
워크큐 API 소개 - flush 등등(ToDo)
INIT_Work 매크로 콜 트레이스 하는 방법(ToDo)
preempt_count가 0이어야 preemption을 하는 이유(Todo)
 
 
 
 
이럴 때 참고하면 아주 좋은 변수가 있어요. tty_driver랍니다.
자, 이렇게 선언되어 있어요. 주석문이 많은 걸 알려주죠.
LIST_HEAD(tty_drivers); /* linked list of tty drivers */
 
 
tty driver는 tty_register_driver() 함수를 호출하거든요. 그런데 아래 tty_drivers란 링크드 리스트에 등록을 하죠. 
int tty_register_driver(struct tty_driver *driver)
{
int error;
int i;
// ...생략...
 
mutex_lock(&tty_mutex);
list_add(&driver->tty_drivers, &tty_drivers);  //<<--
mutex_unlock(&tty_mutex);