printk 函数的原型如下:
asmlinkage int printk(const char *fmt, ... )
第1个参数表示格式字符串,后面是再变参数。也就是说,一旦 printk 函数至少要有两个参数〔格式字符串),如果格式字符串中包含在占位符(%d、 %s), 后面必须跟与占位符相等数量的参数,以便一一对应传入 printk 函数。
KERN_DEBUG KREN_WARNING 是两个宏 它们的值分别为飞<7>和飞<4>。在 printk
数的第1个参数值(格式字符串)前面加尖括号(<…>)包含的数字表示输出的日志级别.
修改 p rintk_demo 驱动代码,通过编译指令定义了pr_debug 宏, 并通过修改
编译指令的条件值来控制是否调用 pri ntk 函数
Linux 文件系统中, proc 经常被用来作为内核空间与用户空间进行数据交 EE 具。/ proc文件系统的行为方式与设备文件系统 C/dev )类似。/ proc 是虚拟文件系统,也就是说 proc 并不是真正的文件系统,而是内存映射 所有读写/ proc l¥J 操作都是对内存的读写 所以读写/ proc 文件系统的速度要远比读写 dev 文件系统的速度快。因此,/ proc 文件系统也可作为 inux 驱动与用户空间程序交互的工具.
proc_mkdir
name 虚拟目录名称。
parent 虚拟目录父目录的 pro c_ 让_ en 町结构体指针。如果直接在/ proc 目录下建 虚拟目录,该参数的值为 NULL
re e_p ro nt η
name 虚拟文件名
mode 虚拟文件的访问权限, 等同于 Linux 文件的访问权限
parent 文件父目录 proc _dir_ entry 结构体指针。如果直接在/ pro 剖录下建立虚拟
文件,该参数的值为 NU LL
at e_p oc_ ad _e
name 虚拟文件名称。
mod :虚拟文件的访问权限,等同于 Linux 文件的访问权限
base 虚拟文件父目录的 roc _dir_entry 结构体指针。如果直接在/ proc 下建立虚拟文件,
该参数的值为 NULL
read_proc :处理读动作的函数指针。
data 用于虚拟文件系统的数据(任意类型的指针〉。该值就是 pro _dir_entry.read_proc 函数的最后一个参数值。相当于与某个虚拟文件永久绑定的数据。如果不市要设置该数据,可以为 NULL
remove_proc_entry
name 删除的虚拟文件的名称。
parent 虚拟文件父目录的 proc _dir_en 结构体指钊。如果直接在/ proc 目录下建立虚拟文件 该参数的值为 NULL.