linux 内核初级教程 -4
来源:互联网 发布:java web spring 搭建 编辑:程序博客网 时间:2024/06/05 03:25
在此,我们将编写一个模块,其中有一个中断函数,当内核接收到某个 IRQ 上的一个中断时会调用它。先给出全部代码,读者自己调试,把对该程序的理解跟到本贴后面。
#include <linux/module.h>#include <linux/init.h>#include <linux/interrupt.h>static int irq;static char *interface;//MODULE_PARM_DESC(interface,”A network interface”); 2.4内核中该宏的用法molule_parm(interface,charp,0644) //2.6内核中的宏//MODULE_PARM_DESC(irq,”The IRQ of the network interface”);module_param(irq,int,0644);static irqreturn_t myinterrupt(int irq, void *dev_id, struct pt_regs *regs){static int mycount = 0;if (mycount < 10) {printk(“Interrupt!\n”);mycount++;}return IRQ_NONE;}static int __init myirqtest_init(void){printk (“My module worked!11111\n”);if (request_irq(irq, &myinterrupt, SA_SHIRQ,interface, &irq)) {printk(KERN_ERR “myirqtest: cannot register IRQ %d\n”, irq);return -EIO;}printk(“%s Request on IRQ %d succeeded\n”,interface,irq);return 0;}static void __exit myirqtest_exit(void){printk (“Unloading my module.\n”);free_irq(irq, &irq);printk(“Freeing IRQ %d\n”, irq);return;}module_init(myirqtest_init);module_exit(myirqtest_exit);MODULE_LICENSE(“GPL”);这里要说明的是,在插入模块时,可以带两个参数,例如
insmod myirq.ko interface=eth0 irq=9
其中 具体网卡 irq的值可以查看 cat /proc/interrupts
- linux 内核初级教程 -4
- linux 内核初级教程 -1
- linux 内核初级教程 -2
- linux 内核初级教程-3
- Ubuntu Linux meego编译初级教程
- 初级教程
- Perl初级教程[第4天]
- Java初级教程day01-1-4
- 《kali linux 渗透测试初级教程》免费下载
- Linux内核配置(4)
- Linux内核初探4
- Linux内核分析。4
- 初探Ogre 引擎!---- (4)OGRE初级教程
- linux内核编程4部曲之一:linux内核编译
- 在LINUX中实现JSP联接MYSQL初级教程
- [初级教程]搭建arm-linux裸机开发的环境
- [初级教程]arm-linux裸机开发之-bootstrap.bin的实现
- linux 下Qt初级教程(一)实现简易的计算器
- keil c51 不能使用:Go to Definition of....的解决方法
- Javascipt, that you do not know yet——Data Type
- Qt事件机制
- Tomcat開發技術之與HTTP服務器的集成
- WPF 引起的软件架构思考
- linux 内核初级教程 -4
- http URI scheme与data URI scheme
- C++编译时出现的一个问题,求教高人
- getResourceAsStream
- DWR 使用篇
- 如何从Android模拟器删除系统“无用”程序 获得root
- 使用Hive读取Hbase中的数据
- contain_of 浅析
- jrtplib学习之example1例程分析