Как реализовать для x86 платформы функции-прерывания на С? вариант с __attribute__((interrupt)) для x86 не подходит, что-то типа:
#define IRQ_HANDLER(func) void func (void);\
asm(#func ": pusha \n call _" #func " \n movb $0x20, %al \n outb %al, $0x20 \n popa \n iret \n");\
void _ ## func(void)
претендует на оригинальность, но добавляет дополнительный call в обработчик, чего не хотелось бы. Какие есть идеи? С препроцессором gnu c познакомился недавно, хотя на С/С++ программирую уже достаточно долго, в gnu c свои косяки. Есть, конечно, вариант писать обработчик на ассемблере, но хочется обвязку на С (хотя все равно активно использую ассемблерные вставки)
Ответ на:
комментарий
от cvv
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Прерывание функции из потока (2012)
- Форум Функции и прерывания для NASM (2003)
- Форум прерывания (2008)
- Форум Прерывание (2003)
- Форум обработать сигнал sigchld при прерывании функции poll (2017)
- Форум X86 & X86-64 (2009)
- Форум MSI прерывание. (2010)
- Форум прерывание Int16h (2017)
- Форум Треды, прерывание (2012)
- Форум внешние прерывания (2021)