- Тормоза при чтении из порта IO в драйвере, int_0dh, 08:19 , 19-Янв-07 (1)
>Доброго, всем, времени суток! >Написал модуль ядра(2.6.8 Debian Sarge) работающий с ISA карточкой, предназначенной для обработки >сигналов. В модуле, из порта платы читается массив данных размером 0,5 >Мб за время ~ 600 мс. >--------------- >for(i=0; i < dataSize; i++) >{ > t = inw(DATA_PORT); > put_user(t, buffAddr++); > >} >--------------- > С драйвером взаимодействует KDE'шное приложение (осциллограф-спектроанализатор и т.д.) которое посредством ioctl(...) >собственно и вызывает команду чтения. При выполнении вышеприведенного цикла наблюдается дикие >тормоза системы, что очень нехорошо смотрится при циклическом вызове команды. Загрузка >процессора почти max. Выделение вызова ioctl(...) в отдельный поток в приложении >естественно не помогает. железко DMA не умеет? >Вопрос: каким образом избавиться от высокой загрузки процессора в модуле, не сильно >выходя за пределы тех же 600 мс? Может быть как-то изменить >алгоритм чтения из порта? >Заранее благодарен за конструктивные приложения...
|