2013-03-22 2 views
1

리눅스 커널에서 timer와 mdelay()를 사용하여 신호를 시간에 따라 높게 설정해야합니다.리눅스 커널 지연, jiffies 이하, busy-waiting 없음

hightime : 0.01ms-20.00ms; 낮음 시간 : 10ms-1000ms

모두 사용자 공간에 의해 조절 가능합니다. 저의 경우 API 타이머를 사용하고 hightime을 위해 mdelay() 및 udelay()를 사용합니다.

이제 문제 : hightime이 9.9ms이고 저온 시간이 10ms 인 경우 커널이 전체 시간 동안 잠 들어 있습니다 (0.1ms 예상). 하지만 커널 타이머가 실행되는 동안 사용자 영역의 사용자 인터페이스가 작동해야합니다. 하나의 jiffie가 내 시스템에서 약 10ms이므로 타이머를 저속으로 사용할 수 없습니다.

누군가가 아이디어를 얻었는데, 커널에서 0.01ms-10ms 대기를 수행하여 내 사용자 인터페이스가 제대로 작동하도록 할 수 있습니까?

감사

+0

플랫폼을 지정해야한다고 생각합니다. 나는 커널이 당신이 사용할 수있는 전용 타이머 하드웨어의 어떤 형태를 가지지 않고 이와 같은 요구 사항을 만족할 수 있어야한다고 기대할 이유가 없다. – unwind

답변

1

당신은 10 밀리 줄일 수

편집 /usr/include/asm/param.h 및 HZ의 정의를 찾습니다. 나는 당신이 100을 찾을 것 같아요. 100 Hz는 10ms의 기간을 나타냅니다. 좀 더 현대적인 리눅스에는 250 HZ가있어 시간을 4ms로 줄일 수 있습니다. 1000Hz로 변환하여 1ms 단위로 실행할 수 있습니다.

추가 읽기 : Linux kernel map, 7.1. Measuring Time Lapses