Добрый день!
Коллеги, подскажите пожалуйста, интересует следующий вопрос.
Вот, например, если мне нужно задать обработчик прерывания для gpio, которых у меня в системе за сотню, а прерываний от него реальных хорошо если наберется десяток, то линукс предлагает мне т.н. виртуальные прерывания, номер которых я могу запросить функцией gpio_to_irq. И в /proc/interrupts уже не существует прерываний gpio, номера которых указаны в документации, там показываются только виртуальные, которые заданы в системе. То есть все операции по считыванию флагов прерываний ось берет на себя, мне надо лишь в драйвере (модуле ядра) узнать номер прерывания(gpio_to_irq) и запросить его (request_irq). И тут возникла задача провернуть нечто аналогичное для dma - есть у меня в системе 64 dma канала, прерываний выведено само собой 1 штука. Его можно посмотреть в /proc/interrupts, счетчик увеличивается при срабатывании прерывания на любом из 64 каналов. Могу ли я не залезая в ядро и не извращаясь как-нибудь повесить обработчик прерывания на конкретный канал, не отменяя при этом уже заданные прерывания, аналогично тому, как оно происходит с gpio? Кто нибудь сталкивался с таким, может знает как это реализуется?