lsmod显示模块:
lsmod 以美观的方式列出/proc/modules的内容。
输出为:
Module(模块名) Size(模块大小) Used by(被...使用)
在/proc/modules中相应的是:
(模块名,模块大小,被...使用,模块地址
insmod:加载模块
rmmod:卸载模块
查看模块信息:
/proc/modules文件中列出了内核加载的所有模块的信息:
第一列:模块名称
第二列:模块使用的内存大小,单位是bytes
第三列:模块被load的次数
第四列:是否有其他模块依赖此模块,如果有,列出对应模块的名称
第五列:模块当前的状态,live(已经加载),loading(加载中),unloading(卸载中)
第六列:模块在内核内存中的偏移值
代码:
#include <linux/kernel.h>
static int Major; // 主设备号 void test(void) static int hello_open(struct inode *inode, struct file *file) static long hello_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) static int hello_release(struct inode *inode, struct file *file) static struct file_operations hello_fops = { static int hello_init(void) { |
Makefile:
obj-m := driver.o KERNELDIR ?= /lib/modules/$(shell uname -r)/build default: |
insmod后创建驱动文件,mknod /dev/my_dev c 237 0
应用:
#include #define MY_DEVICE_TYPE 0x99 int main() |
Makefile:
OBJ=app $(OBJ): app.c .PHONY:clean clean: |
测试:
调用成功。
dmesg:
使用dmesg显示内核打印日志:
这样简单的驱动驱动程序就实现了。。。。