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
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




