[리눅스커널] 인터럽트 후반부 처리: IRQ 스레드 생성 예제 코드 분석
By Guillermo Austin Kim | 2019년 2월 9일 |
이번에는 IRQ 스레드를 생성하는 예제 코드를 소개합니다. 실제 request_threaded_irq() 함수를 호출해서 IRQ 스레드를 생성하는 과정을 살펴보겠습니다. 분석할 코드는 다음과 같습니다.[https://elixir.bootlin.com/linux/v4.14.30/source/drivers/usb/dwc3/gadget.c]1 static int dwc3_gadget_start(struct usb_gadget *g,2 struct usb_gadget_driver *driver)3 {4 struct dwc3 *dwc = gadget_to_dwc(g);5 unsigned long flags;6 int ret = 0;7 int irq;89 irq = dwc->irq_gadget;1
[라즈베리파이] Process - 대기큐(Wait queue)- (1)
By Guillermo Austin Kim | 2018년 9월 14일 |
대기 큐(wait queue) 소개대기 큐는 커널에서 여러 용도로 사용합니다. 특히 인터럽트 핸들링과 프로세스 동기화, 타이밍으로 씁니다. 프로세스는 디스크 연산이 끝나기를 기다리거나, 시스템 리소스가 해제되기를 기다리며 시간이 얼마간 흐르길 기다려야 할 때가 있습니다 대기 큐는 여러 이벤트에 대한 조건부로 대기를 구현하고 표현합니다. 특정 이벤트를 기다리는 프로세스는 적절한 대기 큐에 자기 자신을 넣고 CPU 제어를 포기합니다. 그러므로 대기 큐는 잠자고 있는 프로세스들이 모여있는 장소라고 볼 수 있습니다. 이 프로세스들은 특정 조건이 true가 되면 커널이 깨워줍니다. 대기 큐는 이중 링크드 리스트로 구현되어 있으며, 이 리스트의 각 개체에는 프로세스 디스크립터를 가리키는 포인터가 들어있습니다. 대
mcomix - 리눅스용 만화 뷰어
By 반달가면 | 2020년 4월 8일 |
mcomix는 리눅스용 만화 뷰어 프로그램이다. cbz, cbr 등 압축 파일로 된 만화를 볼 수 있고 jpg 파일 등 일반적인 이미지도 볼 수 있다. 설치는 터미널창에서 아래와 같이 작업하면 되겠다. 데비안/우분투 계열 배포판 기준이다. # S/W 저장소 정보 갱신 sudo apt-get update # mcomix 설치 sudo apt-get install mcomix zip 형식으로 압축된 cbz 파일의 경우 통상 이미 기본으로 unzip 패키지가 설치되어 있으므로 신경쓸 필요가 없겠으나, rar 형식으로 압축된 cbr 파일을 보려면 rar 압축을 해제할 수 있도록 unrar 패키지를 추가로 설치해 주어야 한다. # cbr(rar 압축) 파일 지원을 위하여 unrar 설치
Spinlock(스핀락) - Deadlock 시나리오
By Guillermo Austin Kim | 2017년 12월 6일 |
자자, 이제 A, B, C 모듈에서 spinlock을 순서대로 잡는 시나리오를 만들어 볼께요.spinlock value는 특정 메모리 공간에 있는 전역 변수와 같다고 보면 되요. 1. A 모듈이 스핀락을 겁니다.spinlock valuenext | owner0001 0000 2. B 모듈이 스핀락을 겁니다. 자 이때 A모듈이 스핀락을 잡고 있어요. spinlock value next | owner 0001 0000 //<<-- arch_spin_lock() 진입 전 next값을 로컬 변수에 저장, 자 그럼 로컬 변수 lockval.tickets.next=1, lockval.tickets.owner=0 이겠죠 0002 0000 // spinlock value next를