Я использую приведенный ниже код для ожидания прерывания и чтения данных. Этот код работает нормально, но он использует 100 % процессора.
Как использовать семафор, чтобы избежать 100% загрузки процессора?
static irqreturn_t tsc_irq_handler(int irq,void *dev_id)
{
write_pointer= *TSF_CBWPR;
read_pointer = *TSF_CBRPR;
flag = 1;
return IRQ_HANDLED;
}
int thread_fn(void *unused)
{
while (!kthread_should_stop())
{
while(!flag){};
flag=0;
//do some code, like write to file.
}
return 0;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... nux-kernel
Мобильная версия