LINUX
Posts
477 posts[Linux][Kernel] irq - in_interrupt irq context
커널이나 드라이버 코드 리뷰를 하는 도중에 preempt_add, preempt_sub 그리고 in_interrupt 함수를 자주 마주칩니다. 이 함수들의 사용 예와 구현부에 대해서 좀 더 짚어 볼까요? 리눅스 커널에서 보는 모든 코드는 두 가지 모드에서 돌고 있어요.process context: 우리가 보는 대부분의 코드라고 할 수 있는데, 커널 쓰레드로 돌고 있는 상태죠.IRQ context: 어떤 디바이스던 인터럽트 전기 신호로 IRQ가 Trigger될 수 있어요. 그래서 해당 IRQ에 매핑되는 Interrupt Subroutine(ISR) 핸들러나 이 서브 루틴에서 돌고 있는 상태죠. 그럼 어떤 함수가 IRQ/process context인지는 어떻게 알 수 있을까요? 스스로 참 알기 어렵죠.이를
[Kernel][Debug] "cat /d/shrinker" kernel panic
100% 커널 패닉으로 타겟이 죽어버리는 이슈를 발견했어요.자자, 일단 커널 로그부터 좀 볼까요? 뭐, PID가 6978이 sh 프로세스에서 do_raw_spin_lock() 함수에서 데이터 어보트를 유발시켰네요.[ 761.636711] Unable to handle kernel paging request at virtual address f38a9a84[ 761.645048] pgd = e8074000[ 761.649800] [f38a9a84] *pgd=a0721811, *pte=00000000, *ppte=00000000[ 761.658106] Internal error: Oops: 7 [#1] PREEMPT SMP ARM[ 761.665481] Modules linked in:[ 761.6
[Linux][Kernel] T32 - 구조체 확인 (v.type)
T32로 디버깅을 하다보면 struct의 선언부를 확인하고 싶을 때가 있어요.예를 들어서 struct tty_struct 구조체의 멤버를 갑자기 확인하고 싶은 경우, "do do_struct.cmm tty_struct" 요렇게 입력하면 상세 멤버 변수를 확인할 수 있어요.struct tty_struct struct tty_struct struct(620 bytes, [0] int magic (signed 32 bits), [4] struct kref kref struct(4 bytes, [0] atomic_t refcount struct(4 bytes, [0] int counter (signed 3
리눅스에서 로그아웃 없이 그룹 소속 변경 적용
리눅스에서 그룹(group) 소속을 변경했을 때, 변경 사항을 적용하기 위해서는 로그아웃 했다가 다시 로그인해야 한다(사용자 그룹의 생성/수정 등에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로). 그런데 예를 들어 작업중인 터미널창이 여러개 있는데 그룹을 변경하고 새로 터미널창을 열어서 뭔가 추가적으로 작업해야 하는 경우처럼, 당장 로그아웃하기 어려운 상황에서 변경 사항을 적용시켜 뭔가 작업을 하고 싶을 경우가 있을 수 있다. 이럴 때 su 명령이 상당히 요긴하다. su 명령으로 해당 터미널창에서 새로 로그인한 것과 같은 효과를 줄 수 있기 때문이다. 예를 들어 계정 john을 사용중인데 my_group이라는 그룹에 소속되도록 한 후에 이 그룹과 관련된 작업을 하는 경우를 생각해 보자.
![[웹툰단행본] 『통제구역관리부』 1권 후기 : 이상한 변칙과 기이한 일들이 일어나는 공간에 대하여](https://img.zoomtrend.com/2026/06/09/1780996474-SE-5eda86fa-0d63-4afd-b8dd-b801879fed52.jpg)


![[CV] [Comi] 'あかね噺'(아카네 이야기) 22권. 아카네의 첫 전력 승부](https://img.zoomtrend.com/2026/06/08/1780982081-EC9D8CEC9585EC9D98EBA6ACEB93ACEC9CBCEBA19C.jpg)