linux 设备驱动开发学习笔记(一):最简单的内核模块

来源:互联网 发布:php 取小数点后两位 编辑:程序博客网 时间:2024/05/16 10:40

linux模块机制

  • 模块本身不被编译入内核映像,控制了内核的大小。
  • 模块一旦被加载就和内核中的其他部分完全一样。

一个最简单的Hello World内核模块

//hello.c#include <linux/init.h>#include <linux/module.h>static int __init hello_init(void){    printk(KERN_INFO "Hello World enter\n");    return 0;}module_init(hello_init);static void __exit hello_exit(void){    printk(KERN_INFO "Hello World exit\n");}module_exit(hello_exit);MODULE_AUTHOR("Yang Xu <yangxu_qzhit@outlook.com>");MODULE_LICENSE("GPL v2");MODULE_DESCRIPTION("A simple Hello World Module");MODULE_ALIAS("a simplest module");

Makefile文件

obj-m := hello.oall:    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modulesclean:    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

进入hello.c文件所在目录,执行make生成hello.ko模块文件。
加载模块命令:modprobe ./hello.ko
查看加载模块:lsmod
卸载模块:modprobe -r hello
获得模块信息:modinfo hello.ko

阅读全文
0 0