linux驱动开发学习笔记(一)

本文介绍了内核模块的概念及其与应用程序的区别,并详细阐述了内核模块的初始化与清理过程。此外,还提到了内核模块开发时需要注意的一些细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 内核模块概述
---------------------------
|内核模块与应用程序的区别。|
---------------------------

内核模块的初始化函数的任务是为以后调用模块的函数做准备。
内核模块的退出函数就在模块被卸载时被调用。并且模块的退出函数必须小心恢复每个由初始化函数建立的东西,
否则会保留一些垃圾直到系统重新启动。

一个模块在内核空间运行。而应用程序在用户空间运行。


-------------
|内核的并发 |
-------------
内核模块运行运行在较复杂的环境下。
每一个例子驱动都要在考虑并发的情况下编写。



--------------
| 几个别的细节|
--------------
内核有一个非常小的堆栈,所以声明一个大的自动变量在内核编程中从来就不是一个good idea.



2 建立和运行模块。

----------------------
|初始化函数           |
----------------------

static init __init intitialization_funciotn(void)
{
    /* 初始化代码*/
}

module_init(initalization_function);

初始化函数应当声明成静态的。
__init 标志是给内核的一个暗示, 给定的函数只是在初始化使用, 模块在初始化后会过河拆桥丢掉此函数。


------------------
| 清理函数        |
------------------

static void __exit cleanup_functin(void)
{
    /*清理函数代码*/   
}

module_exit(cleanup_function);

void __exit 修饰符标识这个代码只用于模块卸载。
如果你的模块直接建立在内核里(该模块一直运行),标识为__exit的函数被简单丢弃。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值