Linux操作系统中断.docx

上传人:b****7 文档编号:10850471 上传时间:2023-02-23 格式:DOCX 页数:8 大小:16.31KB
下载 相关 举报
Linux操作系统中断.docx_第1页
第1页 / 共8页
Linux操作系统中断.docx_第2页
第2页 / 共8页
Linux操作系统中断.docx_第3页
第3页 / 共8页
Linux操作系统中断.docx_第4页
第4页 / 共8页
Linux操作系统中断.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Linux操作系统中断.docx

《Linux操作系统中断.docx》由会员分享,可在线阅读,更多相关《Linux操作系统中断.docx(8页珍藏版)》请在冰豆网上搜索。

Linux操作系统中断.docx

Linux操作系统中断

新乡学院计算机与信息工程学院

实验报告

 

课程名称操作系统原理

专业计算机科学与技术

班级3班

学号2013052701xx

姓名xxx

实验成绩

任课教师xxx

 

2013年12月3日

实验名称

中断

姓名

xxx

成绩

实验地点

A14-322

实验时间

2013年12月3日

一、实验目的与要求

实验目的:

进一步熟悉linux中断的执行过程

实验要求:

认真

二、操作步骤

1、编写intr.c文件代码,代码如下:

#include

#include

#include

#include

staticintirq;/*模块参数-中断号*/

staticchar*interface;/*模块参数-设备名*/

staticintcount=0;/*统计插入模块期间发生的中断次数*/

module_param(interface,charp,0644);

module_param(irq,int,0644);

staticirqreturn_tintr_handler(intirq,void*dev_id)

{

staticlonginterval=0;

if(count==0){

interval=jiffies;

}

interval=jiffies-interval;/*计算两次中断之间的间隔,时间单位为节拍*/

printk("Theintervalbetweentwointerruptsis%ld\n",interval);

interval=jiffies;

count++;

returnIRQ_NONE;

}

staticint__initintr_init(void)

{

if(request_irq(irq,&intr_handler,IRQF_SHARED,interface,&irq)){/*注册中断服务程序,注意内核版本不同,共享标志可能有所不同*/

printk(KERN_ERR"FailstoregisterIRQ%d\n",irq);

return-EIO;

}

printk("%sRequestonIRQ%dsucceeded\n",interface,irq);

return0;

}

staticvoid__exitintr_exit(void)

{

printk("The%dinterruptshappenedonirq%d",count,irq);

free_irq(irq,&irq);/*释放中断线*/

printk("FreeingIRQ%d\n",irq);

return;

}

module_init(intr_init);

module_exit(intr_exit);

MODULE_LICENSE("GPL");

2.编写Makefile文件代码,代码如下:

obj-m:

=intr.o

CURRENT_PATH:

=$(shellpwd)

LINUX_KERNEL:

=$(shelluname-r)

#Linux内核源代码的当前版本

LINUX_KERNEL_PATH:

=/lib/modules/$(shelluname-r)/build

#Linux内核源代码的绝对路径

all:

make-C$(LINUX_KERNEL_PATH)M=$(CURRENT_PATH)modules#编译模块

clean:

make-C$(LINUX_KERNEL_PATH)M=$(CURRENT_PATH)clean#清理

三、实验结果

1.在模块文件intrt.c和Makefile当前打开终端,输入make命令之后,所在的文件会编译出其他文件

[root@localhost桌面]#ls

123hellomod.c~intr.ko.unsignedMakefileresult~

2.c~intr.cintr.mod.cMakefile~tools

a.c~intr.c~intr.mod.omodules.order第二个实验

a.txt~intr.kointr.oModule.symvers第一个实验

2.在运行插入模块insmod之后,出现执行插入模块操作后,再次查看模块列表就会看到hellomod模块存在。

[root@bogon桌面]#insmodintr.kointerface=eth0irq=9

[root@bogon桌面]#lsmod

ModuleSizeUsedby

intr11860

vfat85750

fat470491vfat

usb_storage391080

fuse568002

ebtable_nat14690

ebtables151761ebtable_nat

ipt_MASQUERADE18223

 

3.执行卸载模块命令后就会发现intr模块从模块列表中消失。

[root@bogon桌面]#rmmodintr

[root@bogon桌面]#lsmod

ModuleSizeUsedby

vfat85750

fat470491vfat

usb_storage391080

fuse568002

ebtable_nat14690

4.执行dmesg命令可以看到输出信息。

IRQhandlertypemismatchforIRQ0

currenthandler:

timer

Pid:

10391,comm:

insmodTainted:

G---------------T2.6.32-279.el6.i686#1

CallTrace:

[]?

__setup_irq+0x2e3/0x320

[]?

request_threaded_irq+0x100/0x200

[]?

intr_handler+0x0/0x58[intr]

[]?

intr_init+0x0/0x6b[intr]

[]?

intr_init+0x2c/0x6b[intr]

[]?

do_one_initcall+0x2f/0x1c0

[]?

sys_init_module+0xb4/0x220

[]?

syscall_call+0x7/0xb

Theintervalbetweentwointerruptsis0

FailstoregisterIRQ0

Nomodulefoundinobject

IRQhandlertypemismatchforIRQ0

currenthandler:

timer

Pid:

10580,comm:

insmodTainted:

G---------------T2.6.32-279.el6.i686#1

CallTrace:

[]?

__setup_irq+0x2e3/0x320

[]?

request_threaded_irq+0x100/0x200

[]?

intr_handler+0x0/0x58[intr]

[]?

intr_init+0x0/0x6b[intr]

[]?

intr_init+0x2c/0x6b[intr]

[]?

do_one_initcall+0x2f/0x1c0

[]?

sys_init_module+0xb4/0x220

[]?

syscall_call+0x7/0xb

Theintervalbetweentwointerruptsis0

FailstoregisterIRQ0

IRQhandlertypemismatchforIRQ0

currenthandler:

timer

Pid:

11020,comm:

insmodTainted:

G---------------T2.6.32-279.el6.i686#1

CallTrace:

[]?

__setup_irq+0x2e3/0x320

[]?

request_threaded_irq+0x100/0x200

[]?

intr_handler+0x0/0x58[intr]

[]?

intr_init+0x0/0x6b[intr]

[]?

intr_init+0x2c/0x6b[intr]

[]?

do_one_initcall+0x2f/0x1c0

[]?

sys_init_module+0xb4/0x220

[]?

syscall_call+0x7/0xb

Theintervalbetweentwointerruptsis0

FailstoregisterIRQ0

IRQhandlertypemismatchforIRQ0

currenthandler:

timer

Pid:

11634,comm:

insmodTainted:

G---------------T2.6.32-279.el6.i686#1

CallTrace:

[]?

__setup_irq+0x2e3/0x320

[]?

request_threaded_irq+0x100/0x200

[]?

intr_handler+0x0/0x58[intr]

[]?

intr_init+0x0/0x6b[intr]

[]?

intr_init+0x2c/0x6b[intr]

[]?

do_one_initcall+0x2f/0x1c0

[]?

sys_init_module+0xb4/0x220

[]?

syscall_call+0x7/0xb

Theintervalbetweentwointerruptsis0

FailstoregisterIRQ0

IRQhandlertypemismatchforIRQ0

currenthandler:

timer

Pid:

12106,comm:

insmodTainted:

G---------------T2.6.32-279.el6.i686#1

CallTrace:

[]?

__setup_irq+0x2e3/0x320

[]?

request_threaded_irq+0x100/0x200

[]?

intr_handler+0x0/0x58[intr]

[]?

intr_init+0x0/0x6b[intr]

[]?

intr_init+0x2c/0x6b[intr]

[]?

do_one_initcall+0x2f/0x1c0

[]?

sys_init_module+0xb4/0x220

[]?

syscall_call+0x7/0xb

Theintervalbetweentwointerruptsis0

FailstoregisterIRQ0

IRQhandlertypemismatchforIRQ0

currenthandler:

timer

Pid:

12576,comm:

insmodTainted:

G---------------T2.6.32-279.el6.i686#1

CallTrace:

[]?

__setup_irq+0x2e3/0x320

[]?

request_threaded_irq+0x100/0x200

[]?

intr_handler+0x0/0x58[intr]

[]?

intr_init+0x0/0x6b[intr]

[]?

intr_init+0x2c/0x6b[intr]

[]?

do_one_initcall+0x2f/0x1c0

[]?

sys_init_module+0xb4/0x220

[]?

syscall_call+0x7/0xb

Theintervalbetweentwointerruptsis0

FailstoregisterIRQ0

Theintervalbetweentwointerruptsis0

eth0RequestonIRQ9succeeded

The1interruptshappenedonirq9Theintervalbetweentwointerruptsis55119

FreeingIRQ9

评语:

指导老师(签名):

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1