手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

深入浅出 Linux设备驱动编程内核模块

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

include/asm/uaccess.h中定义的put_user和get_user用于内核空间和用户空间的单值交互(如char、int、long)。

这里给出的仅仅是关于内核中内存管理的皮毛,关于Linux内存管理的更多细节知识,《内存和I/O操作》进行更加深入地介绍。

输出

在内核编程中,我们不能使用用户态C库函数中的printf()函数输出信息,而只能使用 printk()。但是,内核中printk()函数的设计目的并不是为了和用户交流,他实际上是内核的一种日志机制,用来记录下日志信息或给出警告提示。每个printk都会有个优先级,内核一共有8个优先级,他们都有对应的宏定义。假如未指定优先级,内核会选择默认的优先级 DEFAULT_MESSAGE_LOGLEVEL。假如优先级数字比int console_loglevel变量小的话,消息就会打印到控制台上。假如syslogd和klogd守护进程在运行的话,则不管是否向控制台输出,消息都会被追加进/var/log/messages文档。klogd 只处理内核消息,syslogd 处理其他系统消息,比如应用程式。

模块参数

2.4内核下,include/linux/module.h中定义的宏 MODULE_PARM(var,type) 用于向模块传递命令行参数。var为接受参数值的变量名,type为采取如下格式的字符串[min[-max]]{b,h,i,l,s}。min及max 用于表示当参数为数组类型时,允许输入的数组元素的个数范围;b:byte;h:short;i:int;l:long;s:string。

在装载内核模块时,用户能够向模块传递一些参数:

insmod modname var=value

假如用户未指定参数,var将使用模块内定义的缺省值。


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!