linux课程设计报告 编写proc文件系统相关的内核模块new

linux课程设计报告 编写proc文件系统相关的内核模块new

ID:15616854

大小:28.00 KB

页数:7页

时间:2018-08-04

linux课程设计报告 编写proc文件系统相关的内核模块new_第1页
linux课程设计报告 编写proc文件系统相关的内核模块new_第2页
linux课程设计报告 编写proc文件系统相关的内核模块new_第3页
linux课程设计报告 编写proc文件系统相关的内核模块new_第4页
linux课程设计报告 编写proc文件系统相关的内核模块new_第5页
资源描述:

《linux课程设计报告 编写proc文件系统相关的内核模块new》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Linux课程设计报告学院:信息学院专业班级:08级网络二班姓名:学号:【实验目的】1.通过课程设计对操作系统基本原理进行更深入的认识,以Linux为具体研究对象,分析理解操作系统底层实现,综合利用已学知识与技术,就Linux操作系统各功能方面进行模拟或实现2.了解内核模块结构3.熟练内核模块编程,练习使用makefile【实验要求】编写proc文件系统相关的内核模块:设计一个模块,该模块功能是列出系统中所有内核线程的程序名、PID号和进程状态。再设计一个带参数的模块,参数为进程的PID号,功能是列出进程的家族信息,包括父进程、兄弟进程和子进程的程序名、PID号。【实验步骤】1.编写

2、list.c模块2.编写Makefile3.make编译模块4.安装模块sudoinsmodlist.ko5.查看系统信息dmesg6.退出模块sudormmodlist7.编写list2.c模块8.编写Makefile9.make编译模块10.安装模块sudoinsmodlist2.ko11.查看系统信息dmesg12.退出模块sudormmodlist2【代码实现】1.list.c#include#include#include#include#inclu

3、de#defineMETHOD1staticintlist_init(void){structtask_struct*p;intcount;char*method;count=0;/*下面这些初始化完全是为了消除编译时的警告信息*/p=NULL;method=NULL;method="for_each_process";printk("Themethodis%s",method);printk(KERN_ALERT"进程号t父进程t状态t名称");#ifMETHOD==1for_each_process(p){count++;printk(

4、KERN_ALERT"%dt%dt%ldt%s",p->pid,p->parent->pid,p->state,p->comm);}#endifprintk("系统当前共%d个进程!!",count);return0;}staticvoidlist_exit(void){printk(KERN_ALERT"GOODBYE!!");}module_init(list_init);module_exit(list_exit);MODULE_AUTHOR("Along");MODULE_LICENSE("GPL");makefileifneq($(KERNELRELEASE)

5、,)obj-m:=list.oelseKERNELDIR?=/lib/modules/$(shelluname-r)/buildPWD:=$(shellpwd)default:$(MAKE)-C$(KERNELDIR)M=$(PWD)moduleselean:rm-rf*.o*.mod.c*.ko*.syvmersendif2.list2.c#include#include#include#include#include#defi

6、neMETHOD1staticintpidd=1;module_param(pidd,int,S_IRUGO

7、S_IWUSR);EXPORT_SYMBOL(pidd);staticint__initlist_init(void){structtask_struct*task,*p,*ppid;structlist_head*pos;intcount;char*method;count=0;/*下面这些初始化完全是为了消除编译时的警告信息*/p=NULL;task=NULL;pos=NULL;method=NULL;task=&init_task;method="for_each_pr

8、ocess";printk("Themethodis%s",method);printk(KERN_ALERT"进程号t状态t名称t父进程t父进程名");#ifMETHOD==1for_each_process(p){count++;if(pidd==p->pid){printk(KERN_ALERT"%dt%ldt%st%dt%s",p->pid,p->state,p->comm,p->parent->pid,p->paren

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。