KERNEL

포스트: 183|조회수: 0|PERSON
Items

Posts

183 posts

[Linux][Kernel] irq - in_interrupt irq context

Guillermo Austin Kim|2017년 12월 3일

커널이나 드라이버 코드 리뷰를 하는 도중에 preempt_add, preempt_sub 그리고 in_interrupt 함수를 자주 마주칩니다. 이 함수들의 사용 예와 구현부에 대해서 좀 더 짚어 볼까요? 리눅스 커널에서 보는 모든 코드는 두 가지 모드에서 돌고 있어요.process context: 우리가 보는 대부분의 코드라고 할 수 있는데, 커널 쓰레드로 돌고 있는 상태죠.IRQ context: 어떤 디바이스던 인터럽트 전기 신호로 IRQ가 Trigger될 수 있어요. 그래서 해당 IRQ에 매핑되는 Interrupt Subroutine(ISR) 핸들러나 이 서브 루틴에서 돌고 있는 상태죠. 그럼 어떤 함수가 IRQ/process context인지는 어떻게 알 수 있을까요? 스스로 참 알기 어렵죠.이를

in_interrupt 매크로

Guillermo Austin Kim|2017년 5월 13일

커널이나 드라이버 코드 리뷰를 하는 도중에 preempt_add, preempt_sub 그리고 in_interrupt 함수를 자주 마주칩니다. 이 함수들의 사용 예와 구현부에 대해서 좀 더 짚어 보도록 하겠습니다.in_interrupt 매크로의 역할을 간단히 말하면, 현재 실행 중인 코드가 process context 혹은 interrupt context 상에서 돌고 있는 지 알려줍니다. process context 혹은 interrupt context의 개념은 여러 리눅스 커널 교재에서 마르고 닳도록 설명하고 있는데요, 아래 스택 트레이스를 보면 간단히 파악할 수 있습니다. __irq_svc(asm) -- unwind_backtrace() 사이에 보이는 함수(붉은색으로 마킹)들은 irq context에서

[영국/양조장]The Kernel Brewery

[영국/양조장]The Kernel Brewery

맥덕 김미고|2013년 10월 5일

비터와 ESB, 잉글랜드 포터와 같은 비교적 저도수의 세션 에일들로 대표되는 영국. 맥주의 스타일에 있어서는 그 특유의 펍 문화와 맞물려 보수적인 영국입니다만, 물론 이 곳에도 크래프트 맥주 바람은 불고 있습니다. 그리고 그 중심에는 커널 양조장이 있습니다. 커널 양조장은 런던 동부에 위치해 있어 주요 관광지들과는 거리가 어느정도 있는 편입니다. 그나마 가장 가까운 버몬지 역이 2존에 있긴 하지만, 그것도 2존에서 맨 끝. 확실히 동부가 서부에 비하면 상황(?)이 썩 좋진 않습니다. 개발이 별로 되지 않아 약간 빈민촌(?)같은 느낌... 아, 오픈시간은 토요일 오전 10시부터 오후 4시까지입니다. 태블릿에 저장한 구글지도와 GPS만 믿고 갔다가 좀 해매야 했습니다