[Linux][Kernel] preempt_disable()/preempt_enable() 주의 사항
Post
원문 보기 →[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 번
Related Posts
3 posts[리눅스커널] CPU 코어의 주파수(Frequency) 확인하기 - cpufreq_cpu_data
리눅스 커널에서 CPU Frequency는 성능을 측정할 때 중요한 척도 중 하나입니다.이번 시간에는 리눅스 커널에서 CPU Frequency와 관련된 자료 구조를 소개합니다. cpufreq_cpu_data 선언부 cpufreq_cpu_data는 커널에서 CPU 주파수를 저장하는 중요한 변수입니다. 먼저 cpufreq_cpu_data 변수의 선언부를 봅시다. DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data); 보시다시피 DEFINE_PER_CPU 키워드와 함께 cpufreq_policy 구조체로 선언된 변수임을 알 수 있습니다.즉, CPU 코어 별로 cpufreq_policy 구조체의 정보를 cpufreq_cpu_data 변수가 저장하는 것입니다
[리눅스커널] preempt_disable() 함수: 스케줄링을 지원하는 함수 실행 금지
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
[라즈베리파이] 라즈베리 파이 사용 시 주의사항
이번에는 라즈베리 파이를 쓰면서 주의해야 할 사항 몇 가지를 정리합니다. 이 내용을 숙지하면 조금 더 오랫동안 라즈베리 파이를 쓸 수 있습니다. 1. 라즈베리 파이의 전원을 끌 때는 반드시 셧다운 메뉴를 선택합시다. 컴퓨터의 전원을 끌 때처럼 하면 됩니다. 바로 전원 케이블을 빼버리면 라즈베리 파이가 다시 부팅을 못할 수 있습니다. 마이크로 SD 카드가 제대로 마운트를 해제하지 않은 채로 전원이 끊기면 파일 시스템이 손상될 수 있기 때문입니다. 2. 라즈베리 파이는 주머니에 들어갈 만한 크기입니다. 그렇다고 정말 주머니에 그대로 넣고 다니면 안 됩니다. 라즈베리 파이를 가지고 다니다 떨어뜨리면 못 쓸 수 있습니다. 라즈베리 파이는 꼭 보호 케이스를 써서 충격으로부터 보호합시다. 3. 겨울철에 정전기가



