ARM Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

197239
1625
172594


태그 : preempt_count 요약보기전체보기목록닫기

1

[리눅스커널] thread_info 구조체의 preempt_count - 선점 스케줄링 여부 확인

리눅스 커널의 핵심 동작은 스케줄링입니다. 프로세스는 schedule() 함수를 호출해서 명시적으로 스케줄링할 수도 있지만 인터럽트 처리 후 선점 스케줄링될 수 있습니다. 커널은 스케줄링 동작 중에 thread_info 구조체의 preempt_count 필드에 저장된 값을 보고 선점 스케줄링 실행 여부를 판단합니다.그런데 여기서 한 가지 의문이 생깁니다...

[리눅스커널] thread_info 구조체의 preempt_count - Soft IRQ 컨텍스트 실행

Soft IRQ 컨텍스트의 시작 상태 저장프로세스가 Soft IRQ 서비스를 처리 중이면 preempt_count 필드에 SOFTIRQ_OFFSET 매크로를 저장합니다. 다음 그림을 보면서 Soft IRQ 컨텍스트의 실행 시작을 설정하는 과정을 알아보겠습니다. 그림 4.18 Soft IRQ 컨텍스트 설정 시의 함수 흐름그림 4.18에서 irq_...

[리눅스커널] thread_info 구조체의 preempt_count - 인터럽트 컨텍스트 실행 저장

리눅스 시스템에서 인터럽트는 언제든지 발생할 수 있습니다. 인터럽트가 발생하면 프로세스 실행을 멈추고 인터럽트에 해당하는 인터럽트 핸들러를 실행합니다. 커널에서는 인터럽트가 발생해서 인터럽트 서비스 루틴을 실행하는 동작을 인터럽트 컨텍스트라고 부릅니다.  ---참고로 인터럽트는 외부 입출력 장치에 어떤 변화가 있을 때 발생하는 전기 신...

[리눅스커널] 프로세스: 프로세스 컨택스트 정보는 어떻게 저장할까?

thread_info 구조체의 필드 중 preempt_count는 프로세스 컨텍스트 정보를 저장합니다. 이번 절에서는 preempt_count 필드를 중심으로 컨텍스트 정보가 바뀌는 과정을 살펴보겠습니다.다음은 preempt_count 필드가 바뀌면서 컨텍스트 정보가 바뀌는 상황입니다. 인터럽트 컨텍스트 실행 시작 및 종료 설정 Soft IRQ 컨텍...

[리눅스커널] 프로세스: struct thread_info 구조체 소개

프로세스 상세 정보를 저장하는 자료구조는 태스크 디스크립터입니다. 이와 더불러 프로세스 세부 실행 정보를 저장하는 struct thread_info 자료구조가 있습니다.커널이 프로세스를 생성할 때 프로세스마다 고유한 스택 공간을 부여합니다. 스택 최상단 주소에 struct thread_info 구조체 필드가 저장돼 있습니다. 이 구조체 필드는 커널이 프...

ARM64 - 프로세스(Process) preempt_disable(), preemption 스케줄(Schedule) 조건 분석

아래 제 블로그에서 ARM32 아키텍처에서 preempt_disable() 매크로 함수를 호출하면 __irq_svc 벡터에서 svc_preempt 함수를 호출하지 않아, preemption이 수행되지 않는다고 확인했어요.http://rousalome.egloos.com/9964816이번에는 ARM64(Aarch64) 아키텍처에서는 어떤 코드로 ...

[Linux][Kernel] irq - in_interrupt irq context(BEST)

커널이나 드라이버 코드 리뷰를 하는 도중에 preempt_add, preempt_sub 그리고 in_interrupt 함수를 자주 마주칩니다. 이 함수들의 사용 예와 구현부에 대해서 좀 더 짚어 볼까요?리눅스 커널에서 보는 모든 코드는 두 가지 모드에서 돌고 있어요.process context: 우리가 보는 대부분의 코드라고 할 수 있는데, 커...
1