Доброго, всем, времени суток! Написал модуль ядра(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(...) в отдельный поток в приложении естественно не помогает. Вопрос: каким образом избавиться от высокой загрузки процессора в модуле, не сильно выходя за пределы тех же 600 мс? Может быть как-то изменить алгоритм чтения из порта? Заранее благодарен за конструктивные приложения...
|