이 문서의 저작권은 GPL 라이센스를 따릅니다(This document is released under the GPL license).
cpu_policy_rwsem 은 락 이슈와 관련된 모든 cpufreq/핫플러그/워크 큐/기타를
해결하기 위한 per CPU reader-writer 세마포어입니다.
이 세마포어를 위한 규칙은 다음과 같습니다:
– policy 구조체로부터 읽기를 원하는 어떤 루틴은 이 세마포어를 down_read해야
할 것입니다.
– policy 구조체로 쓸 것이고(또는) 함께 그 policy를 취해갈(예를 들면, CPU
핫플러그) 어떤 루틴은 쓰기 전에 쓰기 모드에서 이 락을 잡아야 할 것입니다.
추가적인 규칙:
– 모든 이 락을 잡고 있는 자들은 그들이 락을 잡은 후에 그들이 신경쓰는 CPU가
온라인임을 확인하기 위해 검사하여야 합니다.
– cpufreq 핫플러그 패스에서 호출될 수 있는 가버너 루틴은 이를 취하는 최고 레벨
핫플러그 노티파이어 핸들러로서 이 세마포어를 취하지 말아야 합니다.
– __cpufreq_governor(data, CPUFREQ_GOV_STOP); 을 가로지르는 락은 잡지 말아야
합니다
static DEFINE_PER_CPU(int, cpufreq_policy_cpu);
static DEFINE_PER_CPU(struct rw_semaphore, cpu_policy_rwsem);