LINUX.ORG.RU

Software irq handler


0

0

Ситуация следующая. Нужно прцепить обработчник на 120е прерырывание. Протестировать работу без железа. Вопрос как посадить его? Дело в том что request_irq возвращает -38 (ENOSYS).

Ответ на: комментарий от tzukko

Вообще то насколько я знаю в x86 не используются виртуальные номера прерываний.. Поэтому и удивляет что не нравится request_irq Должно же каким то образом доступно повесить хендлер на софтовое прерывание..

Rainbow
() автор топика
Ответ на: комментарий от Rainbow

> От того и софтовое что генерится софтварным путем.

"It's a trap!" (c)

> Например так asm ("int $120\n");

Могу одно сказать - к request_irq это никакого отношения не имеет.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Могу одно сказать - к request_irq это никакого отношения не имеет

Это как? А как образом обработчик повесить предлагаете?

Rainbow
() автор топика
Ответ на: комментарий от Rainbow

>> Могу одно сказать - к request_irq это никакого отношения не имеет

> Это как?

Это буквально. request_irq устанавливает обработчики аппаратных прерываний, которые, IIRC, просто никакого отношения к IRQ не имеет.

> А как образом обработчик повесить предлагаете?

Я, честно говоря, не понимаю, чего ты хочешь доостичь. Тестировать драйвер без железа? :)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Это буквально. request_irq устанавливает обработчики аппаратных прерываний, которые, IIRC, просто никакого отношения к IRQ не имеет.

Хорошо. Тогда ставим вопрос по другому.. Есть такой код "int $120". За этим вектором надо поставить обработчик. Вопрос: как? Зачем не очень важно уже.

>Тестировать драйвер без железа? :) Одно из. Пока нет самого железа.

Rainbow
() автор топика
Ответ на: комментарий от Rainbow

> Есть такой код "int $120". За этим вектором надо поставить обработчик. Вопрос: как?

Не знаю.

> Зачем не очень важно уже.

Мне - важно. Чтобы лезть в исходники и документацию, мне нужен стимул.

Имитировать прерывание от устройства (если ты это собираешься делать "int $120") можно и другими способами (ioctl, таймер).

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

На счет других способов в курсе. Но требуется именно через прерывание.

Rainbow
() автор топика
Ответ на: комментарий от Rainbow

что-нибудь вроде set_system_intr_gate(120, my_handler). но это от архитектуры зависит...

idle ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.