понедельник, 11 апреля 2011 г.

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


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

#include
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
int can_request_irq(unsigned int irq, unsigned long flags);
Эта функция, доступная на i386 и x86_64, возвращает ненулевое значение, если попытка получить данную линию прерывания успешна.

#include
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);
Функции, которые безоговорочного запрещают и разрешают прерывания на текущем процессоре.

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.