Linux模块试写
来源:互联网 发布:网络设计师工资 编辑:程序博客网 时间:2024/06/14 02:10
简述:实现的是一个简易的模块test.ko
输入一个state(用来表示进程的状态) ,可一个得到该状态的进程pid
module功能打印所有state的进程pid
test.c:
#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/sched.h>// task_structMODULE_LICENSE("GPL"); static int state; //print 0: runnable process ,-1: unrunnable process , >0 stopped processmodule_param(state,int,0644); static int __init test_init(void) { printk(KERN_ALERT "Module Test Starts!\n"); struct task_struct *p; for (p = &init_task ; (p = next_task(p)) != &init_task ; ){ if(p->state == state){if(state == 0) printk(KERN_ALERT "RUNNABLE process: %d !\n",p->pid); else if(state == -1) printk(KERN_ALERT "UNRUNNABLE process: %d !\n",p->pid); else if(state > 0) printk(KERN_ALERT "STOPPED process: %d !\n",p->pid); else printk(KERN_ALERT "WRONG STATE! \n"); } } return 0; } static void __exit test_exit(void) { printk(KERN_ALERT "Finished ,all the process states are listed above!\n"); } module_init(test_init); module_exit(test_exit);
Makefile:
####---Makefile----#####OBJ = testobj-m := $(OBJ).oKERNELDIR = /lib/modules/`uname -r`/buildPWD=`pwd`default :$(MAKE) -C $(KERNELDIR) M=$(PWD) modulesinstall:insmod $(OBJ).kouninstall:rmmod $(OBJ).koclean:rm -rf *.o *.mod.c *.ko *.symvers
cd到test 文件夹,
输入:make
之后发现又新建了.ko文件
输入: su
进入 管理员root操作部分
输入: insmod test.ko state=0
安装模块, 0表示runnable的进程;-1表示unrunnbale的进程 ;>0表示stopped状态的进程
输入:dmesg 显示printk的输出
后面是删除module
输入: rmmod test.ko 完成卸载模块
附:
如果要开机自动加载的话,
修改/etc/rc.local,添加make clean -> make -> insmod /路径 .ko文件 输入(param= ,param=, ...)
如图:
- Linux模块试写
- 大四写的Linux网络模块
- Linux--写一个简单的模块
- 设置Linux 自写内核模块启动时加载
- 如何写Linux下编译驱动模块的Makefile
- 语音模块bluesea写
- php写登陆模块
- 一步步写驱动--模块
- 自己写perl 模块
- Linux模块调用模块
- linux 模块
- 从写项目到部署linux服务器全过程-MyEclipse创建多模块Maven依赖项目
- 开始写线程注入模块!
- 写一个模块的步骤:
- FLASH写操作模块设计
- VBA写的加密模块
- brophp写商品管理模块
- CH340模块进行烧写
- Android学习笔记之布局(2)
- 基于Swing实现的截屏工具
- C#编写activeX控件与js相互调用
- Flex 文件上传
- 解析 this.initialize.apply(this, arguments)
- Linux模块试写
- ios 学习网站
- javascript取鼠标相对位置坐标
- python之切片操作符(Slice)
- mongdb工具及参数简介
- 索引整理方式测试
- VS2010编译错: #error : This file requires _WIN32_WINNT to be #defined at least to 0x0403...的解决方法
- 网路3——网络层 上
- Android之Tab分页标签的实现方法一-----TabActivity和TabHost的结合(三)