MIGHT_SLEEP

Category
아이템: MIGH(1)
포스트 갯수1

[리눅스커널] preempt_disable() 함수: 스케줄링을 지원하는 함수 실행 금지

By Guillermo Austin Kim | 2020년 2월 20일 | 
preempt_disable()/preempt_enable() 함수를 사용할 때 주의해야 할 점이 있습니다. 그것은; * preempt_disable()/preempt_enable() 함수를 사용하는 구간에서 스케줄링을 지원하는 함수가 호출되면 안된다. 라는 점입니다. 다들 아시다시피, 커널 드라이버에서 preempt_disable() 함수를 호출하면 프로세스 struct thread_info 의 preempt_count를 +1만큼 증가시켜 Preemption을 비활성화합니다. 다음 예제 코드를 보면서 설명을 시작 하겠습니다. bool try_module_get(struct module *module)02 {03 bool ret = true;0405 if (module) {06 + preempt