码迷,mamicode.com
首页 > 其他好文 > 详细

[Mini2440] 最简单的内核模块

时间:2017-11-25 20:01:19      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:printk   module   不同的   user   inf   方便   独立   允许   turn   

一 什么是内核模块

  Linux 内核是模块化组成的,它允许内核在运行时动态地向其中插入或从中删除代码。这些代码被一并组合在一个单独的二进制镜像中,即所谓的可装载内核模块中,或简称为模块。支持模块的好处是基本内核镜像尽可能的小,因为可选的功能和驱动程序可以利用模块形式再提供。模块允许我们方便地删除和重新载入内核代码,也方便了调试工作。而且当热插拔新设备时,可通过命令载入新的驱动程序。

  模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。

  总之,模块是一个为内核或其他内核模块提供使用功能的代码块。

 

二 编写一个最简单的内核模块

  最简单的一个内核模块:

simplest_module.c :

#include <linux/init.h>
#include <linux/module.h>

static int __init mod_init(void)
{
        printk(KERN_INFO "simplest module init ok!\n");
        return 0;
}

static void __exit mod_exit(void)
{
        printk(KERN_INFO "simplest module exit ok!\n");
}

module_init(mod_init);
module_exit(mod_exit);

MODULE_LICENSE("GPL");

Makefile :

obj-m += simplest_module.o
KERNEL
= /home/user/workspace/mini2440/linux-2.6.32.2 all: make -C $(KERNEL) M=`pwd` modules clean: make -C $(KERNEL) M=`pwd` modules clean

其中

  

[Mini2440] 最简单的内核模块

标签:printk   module   不同的   user   inf   方便   独立   允许   turn   

原文地址:http://www.cnblogs.com/mz8023yt/p/7896149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!