Краткая справка

Предыдущая  Содержание  Следующая V*D*V

В этой главе были введены эти символы, связанные с управлением прерываниями:

 

#include <linux/interrupt.h>

int request_irq(unsigned int irq, irqreturn_t (*handler)( ), unsigned long flags, const char *dev_name, void *dev_id);

void free_irq(unsigned int irq, void *dev_id);

Вызовы, которые регистрируют и отменяют регистрацию обработчика прерывания.

 

#include <linux/irq.h.h>

int can_request_irq(unsigned int irq, unsigned long flags);

Эта функция, доступная на i386 и x86_64, возвращает ненулевое значение, если попытка получить данную линию прерывания успешна.

 

#include <asm/signal.h>

SA_INTERRUPT

SA_SHIRQ

SA_SAMPLE_RANDOM

Флаги для request_irq. SA_INTERRUPT запрашивает установку быстрого обработчика (в отличие от медленного). SA_SHIRQ устанавливает обработчик разделяемого прерывания и третий флаг сообщает, что время прерывания может быть использовано для генерации энтропии в системе.

 

/proc/interrupts

/proc/stat

Узлы файловой системы, которые сообщают информацию об аппаратных прерываниях и установленных обработчиках.

 

unsigned long probe_irq_on(void);

int probe_irq_off(unsigned long);

Функции, которые используются драйвером, когда он должен выполнить зондирование для определения, какая линия прерывания будет использоваться устройством. Результат probe_irq_on должен быть передан обратно в probe_irq_off после того, как прерывание было сгенерировано. Возвращаемое значение probe_irq_off является обнаруженным номером прерывания.

IRQ_NONE

IRQ_HANDLED

IRQ_RETVAL(int x)

Возможные возвращаемые значения из обработчика прерывания, указывающие, присутствовало ли фактическое прерывание от устройства.

void disable_irq(int irq);

void disable_irq_nosync(int irq);

void enable_irq(int irq);

Драйвер может разрешить или запретить сообщения о прерывании. Если оборудование пробует генерировать прерывание при запрещённых прерываниях, прерывание потеряно навсегда. Драйвер, использующий обработчик разделяемого прерывания, не должен использовать эти функции.

void local_irq_save(unsigned long flags);

void local_irq_restore(unsigned long flags);

Используйте local_irq_save для запрета прерываний на местном процессоре и запоминания их предыдущего состояния. Для восстановления предыдущего состояния прерывания в local_irq_restore может быть передан flags.

void local_irq_disable(void);

void local_irq_enable(void);

Функции, которые безоговорочного запрещают и разрешают прерывания на текущем процессоре.

Предыдущая  Содержание  Следующая