Chinaunix首页 | 论坛 | 博客
  • 博客访问: 80961
  • 博文数量: 19
  • 博客积分: 575
  • 博客等级: 中士
  • 技术积分: 203
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-03 20:06
个人简介

好好学习,天天向上

文章分类

全部博文(19)

分类: LINUX

2010-08-08 21:11:45


Linux的内核提供了一种机制,用来动态加载需要的服务,它就是模块。
一般情况下,嵌入式产品驱动的调试都是用动态挂载模块,发布时再把它编译到内核里面。

1.模块的挂载:

//加载
insmod xx.ko
modprobe xx
//卸载
rmmod xx.ko
//查看模块信息
modinfo xx.ko


2.一个最基本的模块

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

//模块初始化函数
static int __init my_module_init(void)
{
    return 0;
}

//模块退出函数
static void __exit my_module_exit(void)
{
}
module_init(my_module_init);
module_exit(my_module_exit);
MODULE_LICESE("GPL");


3.在程序中加载模块,可以用函数request_module(module_name)

extern int __request_module(bool wait, const char *name, ...) \
        __attribute__((format(printf, 2, 3)));
#define request_module(mod...) __request_module(true, mod)


4.初始化标记

__init
__initdata
__exit
__exitdata

阅读(1303) | 评论(0) | 转发(0) |
0

上一篇:gnu c不同于ansi c的地方

下一篇:心情不好

给主人留下些什么吧!~~