SPIN_UNLOCK_IRQ

포스트: 3|조회수: 0|TERM
Items

Posts

3 posts

[리눅스커널] 스핀락 플러그인 함수: spin_lock_irq()/spin_unlock_irq()

Guillermo Austin Kim|2019년 8월 21일

리눅스 커널 코드를 조금만 분석하면 spin_lock() 함수뿐만 아니라 spin_lock_irq() 함수를 써서 임계 영역을 보호하는 코드를 많이 볼 수 있습니다. 이렇게 커널은 스핀락 기능을 확장한 플러그인 형태 스핀락 함수들을 제공합니다. 이번 소절에서는 spin_lock() 함수 기능을 확장한 스핀락 플러그인 함수를 소개합니다. spin_lock_irq()/spin_unlock_irq() 먼저 spin_lock_irq()/spin_unlock_irq() 함수를 리눅스 커널에서 지원하는 이유를 알아보고 세부 코드를 분석하겠습니다. spin_lock_irq()/spin_unlock_irq() 함수가 생겨난 이유는 무엇일까? spin_lock_irq()/spin_unlock_irq() 함수 코드

[리눅스커널] 스핀락 플러그인 함수: spin_lock_irq()/spin_unlock_irq()

Guillermo Austin Kim|2019년 6월 10일

리눅스 커널 코드를 조금만 분석하면 spin_lock() 함수뿐만 아니라 spin_lock_irq() 함수를 써서 임계 영역을 보호하는 동작을 많이 볼 수 있습니다. 이번 소절에서는 spin_lock() 함수 기능을 확장한 스핀락 플러그인 함수를 소개합니다. - spin_lock_irq()/spin_unlock_irq() 먼저 spin_lock_irq()/spin_unlock_irq() 함수를 리눅스 커널에서 지원하는 이유를 알아보고 세부 코드를 분석하겠습니다. spin_lock_irq()/spin_unlock_irq() 함수가 생겨난 이유는 무엇일까?spin_lock_irq()/spin_unlock_irq() 함수의 원리를 살펴보기 앞서 spin_lock_irq()/spin_unlock_irq()

[라즈베리파이] 동기화 - 스핀락(spinlock): spin_unlock_irq() 소개

Guillermo Austin Kim|2019년 1월 2일

이번에는 spin_lock_irq() 함수와 같이 쓰는 spin_unlock_irq() 함수를 점검합시다. spin_unlock_irq() 함수는 spin_unlock() 함수에서 스핀락 기능을 그대로 물려 받았습니다. 대신 스핀락을 해제 한 후 인터럽트를 다시 활성화하고 Preemption을 실행하는 동작만이 추가된 것입니다. spin_unlock_irq() 함수 동작을 3단계로 나눠서 점검합시다 1단계: 스핀락 해제스핀락을 획득하면 스핀락 인스턴스의 next를 +1만큼 증감합니다. 이와 마찬가지로 owner도 +1만큼 증감시키는 동작을 수행합니다. spin_unlock() 함수와 같은 동작입니다. 2단계: 인터럽트 활성화spin_lock_irq() 함수를 실행할 때 인터럽트를 비활성화했습니다. 이