PREEMPT_ENABLE
Posts
2 posts[리눅스커널][스케줄링] 선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개
선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개 리눅스 커널에서 선점 스케줄링을 동작을 잠시 지연할 수 있는 함수를 지원합니다. preempt_disable(): 선점 지연 활성화preempt_enable(): 선점 지연 비활성화 preempt_disable() 함수 이름은 "선점"을 의미하는 "preempt" 단어에 "불능"란 단어인 "disable"의 조합입니다.즉, preempt_disable() 함수를 실행하면 선점 스케줄을 지연할 수 있습니다. 마찬가지로 preempt_enable() 함수를 실행하면 선점 스케줄링을 활성화합니다. preempt_disable() 함수와 preempt_enable() 함수의 기본 원리를 알아보기 앞서 커널
[Linux][Kernel] preempt_disable()/preempt_enable() 주의 사항
preempt_disable() 함수를 쓸 때 주의해야 할 점이 있습니다.preempt_disable() 함수는 preempt_enable() 함수와 반드시 Pair로 써야 합니다. preempt_disable() 함수를 호출한 다음 스케줄링 동작을 수행하는 함수를 쓰면 리눅스 시스템은 오동작합니다. 예를 들어 다음과 같은 드라이버를 초기화하는 코드를 예를 들겠습니다.1 void configure_something_driver(void) 2 {3 preempt_disable();4 5 do_something();6 mdelay(100);7 do_something();8 9 preempt_enable();10 } 5~7 번 코드가 실행할 때 Preemption이 되면 안된다고 판단했습니다.그래서 3 번


