Функция задержки в драйвере Linux неточна?Linux

Ответить
Гость
 Функция задержки в драйвере Linux неточна?

Сообщение Гость »


I want to implement an 8ms delay in my driver code. I used the function, but I found that I only looped twice. The time difference between the two prints in is actually 10ms, shouldn't it be 2ms? What is the problem?

a part of :

Код: Выделить всё

[  386.199343] this is ioctl [  386.199359] ioctl value = 0 [  386.210085] ioctl value = 1 
function in driver code:

Код: Выделить всё

static long spiio_drv_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) {         int i = 0;         int value = 0;         int *param = (int *)arg;         printk("this is ioctl\n");         switch (cmd)         {                 case 0: /*no sleep*/                         *param = 0;                 case 1: /*SPIIO_IOCTL_CMD*/                         do {                                 value = gpio_get_value(spiio_gpio);                                 printk("ioctl value = %d\n", value);                                 if (value == 1) {                                         return 1;                                 } else {                                         if (*param) {                                                 msleep(1);                                         }                                         i ++;                                 }                         } while(i < *param);                         break;                 default:                         printk("spiio ioctrl cmd %d is error", cmd);                         return -1;         }         return 0; } 


Источник: https://stackoverflow.com/questions/781 ... t-accurate
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»