interrupción del kernel de linux

#include <linux / init.h>
#include <linux / module.h>
#include <linux / kernel.h>
#include <linux / interrupt.h>

static int irq;
char * interfaz;
static irqreturn_t myirq_handler (int irq, void * dev);

static int __init myirq_init (void)
{ printk (“¡el módulo está funcionando! / n”); printk (“¡el irq está listo para trabajar! / n”); if (request_irq (irq, myirq_handler, IRQF_SHARED, interface, & irq)) { printk (KERN_ERR “% s interrrupt no puede registrar% d IRQ / n”, interface, irq); return -EIO; } printk ("% s solicitud% d IRQ / n", interfaz, irq); return 0; } static irqreturn_t myirq_handler (int irq, void * dev) { printk ("% d IRQ está funcionando / n", irq); return IRQ_NONE; } static void __exit myirq_exit (void) { printk (“¡el módulo se va! / n”); printk ("el irq es adiós! / n"); free_irq (irq, & irq);



















printk ("% s sin interrupciones% d IRQ / n", interfaz, irq);

}
module_init (myirq_init);
module_exit (myirq_exit);
module_param (interfaz, charp, 0644);
module_param (irq, int, 0644);
MODULE_LICENSE (“GPL”);

makefile

obj-m: = tigre.o
CURRENT_PATH: = (shellpwd) VERSIONNUM: = (shell pwd) VERSION_NUM: =( s h e l l p w d ) V E R S I O NNU M:= (shell uname -r)
LINUX_PATH: = / usr / src / linux-headers - $ (VERSION_NUM)

todos:
hacer -C (LINUXPATH) M = (LINUX_PATH) M =( L I N U XPA T H ) M= (CURRENT_PATH) módulos
limpios:
make -C(LINUXPATH) M = (LINUX_PATH) M =( L I N U XPA T H ) M= (CURRENT_PATH) limpio

Supongo que te gusta

Origin blog.csdn.net/u010835747/article/details/105700044
Recomendado
Clasificación