RAISE_SOFTIRQ

Category
아이템: 
포스트 갯수2

[라즈베리파이] 커널 타이머 -동적 타이머는 누가 언제 호출하나? (2)

By Guillermo Austin Kim | 2018년 8월 27일 | 
커널 타이머는 타이머 인터럽트가 발생 후 동작을 시작합니다. 다음 그림은 커널 시스템 타이머 전체 흐름도 중 1단계 부분입니다. [그림] 커널 타이머 전체 흐름도 1단계 타이머 인터럽트가 발생하면 인터럽트 핸들러 함수인 arch_timer_handler_phys() 가 실행하고 HZ (100)만큼 jiffies를 증감시키는 tich_sched_timer() 함수를 호출합니다. 이후 update_process_times() 함수를 호출하고 나서 run_local_timers() 함수가 run_local_timers() 함수를 호출합니다. 먼저 update_process_times() 함수를 봅시다.1 void update_process_times(int user_tick)2 {3struct ta

[라즈베리파이] Soft IRQ 서비스는 언제 요청하나?

By Guillermo Austin Kim | 2018년 7월 8일 | 
[라즈베리파이] Soft IRQ 서비스는 언제 요청하나?
이번 시간에는 Soft IRQ 서비스를 어떻게 요청하는지 배워 보겠습니다. 우리는 이전에 Soft IRQ를 등록하는 과정을 배웠습니다. 다음 코드와 같이 open_softirq 함수를 써서 TIMER_SOFTIRQ 타입의 Soft IRQ 서비스를 등록했습니다.1 void __init init_timers(void)2 {3init_timer_cpus();4open_softirq(TIMER_SOFTIRQ, run_timer_softirq);5 } 그럼 TIMER_SOFTIRQ 타입의 Soft IRQ 서비스를 등록만 하면 핸들러 함수인 run_timer_softirq() 함수가 호출될까요? 그렇지 않습니다. 따로 Soft IRQ 서비스를 요청해야 합니다. 인터럽트 핸들러를 등록하는 과정보다 약간 복잡합니다.