嵌入式Linux设备驱动开发之:字符设备驱动编程
表11.9给出了kfree()函数的语法格式。
表11.9 kfree()函数语法要点
所需头文件 |
#includelinux/malloc.h> |
函数原型 |
voidkfree(void*obj) |
函数传入值 |
obj:要释放的内存指针 |
函数返回值 |
成功:写入的数据长度 |
表11.10给出了以页为单位的分配函数get_free_page类函数的语法格式。
表11.10 get_free_page类函数语法要点
所需头文件 |
#includelinux/malloc.h> |
函数原型 |
unsignedlongget_zeroed_page(intflags) |
函数传入值 |
flags:同kmalloc() |
order:要请求的页面数,以2为底的对数 |
|
函数返回值 |
成功:返回指向新分配的页面的指针 |
表11.11给出了基于页的内存释放函数free_page族函数的语法格式。
表11.11 free_page类函数语法要点
所需头文件 |
#includelinux/malloc.h> |
函数原型 |
unsignedlongfree_page(unsignedlongaddr) |
函数传入值 |
addr:要释放的内存起始地址 |
order:要请求的页面数,以2为底的对数 |
|
函数返回值 |
成功:写入的数据长度 |
(9)打印信息。
就如同在编写用户空间的应用程序,打印信息有时是很好的调试手段,也是在代码中很常用的组成部分。但是与用户空间不同,在内核空间要用函数printk()而不能用平常的函数printf()。printk()和printf()很类似,都可以按照一定的格式打印消息,所不同的是,printk()还可以定义打印消息的优先级。
表11.12给出了printk()函数的语法格式。
表11.12 printk类函数语法要点
所需头文件 |
#includelinux/kernel> |
|
函数原型 |
intprintk(constchar*fmt,…) |
|
函数传入值 |
fmt: |
KERN_EMERG:紧急时间消息 |
KERN_ALERT:需要立即采取动作的情况 |
||
KERN_CRIT:临界状态,通常涉及严重的硬件或软件操作失败 |
||
KERN_ERR:错误报告 |
||
KERN_WARNING:对可能出现的问题提出警告 |
||
KERN_NOTICE:有必要进行提示的正常情况 |
||
KERN_INFO:提示性信息 |
||
KERN_DEBUG:调试信息 |
||
…:与printf()相同 |
||
函数返回值 |
成功:0 |
这些不同优先级的信息输出到系统日志文件(例如:“/var/log/messages”),有时也可以输出到虚拟控制台上。其中,对输出给控制台的信息有一个特定的优先级console_loglevel。只有打印信息的优先级小于这个整数值,信息才能被输出到虚拟控制台上,否则,信息仅仅被写入到系统日志文件中。若不加任何优先级选项,则消息默认输出到系统日志文件中。
注意 |
要开启klogd和syslogd服务,消息才能正常输出。 |
4.proc文件系统
/proc文件系统是一个伪文件系统,它是一种内核和内核模块用来向进程发送信息的机制。这个伪文件系统让用户可以和内核内部数据结构进行交互,获取有关系统和进程的有用信息,在运行时通过改变内核参数来改变设置。与其他文件系统不同,/proc存在于内存之中而不是在硬盘上。读者可以通过“ls”查看/proc文件系统的内容。
表11.13列出了/proc文件系统的主要目录内容。
表11.13 /proc文件系统主要目录内容
目录名称 |
目录内容 |
目录名称 |
目录内容 |
|
apm |
高级电源管理信息 |
locks |
内核锁 |
|
cmdline |
内核命令行 |
meminfo |
内存信息 |
|
cpuinfo |
CPU相关信息 |
misc |
杂项 |
|
devices |
设备信息(块设备/字符设备) |
modules |
加载模块列表 |
|
dma |
使用的DMA通道信息 |
mounts |
加载的文件系统 |
|
filesystems |
支持的文件系统信息 |
partitions |
系统识别的分区表 |
|
interrupts |
中断的使用信息 |
rtc |
实时时钟 |
|
ioports |
I/O端口的使用信息 |
stat |
全面统计状态表 |
|
kcore |
内核映像 |
swaps |
对换空间的利用情况 |
|
kmsg |
内核消息 |
version |
内核版本 |
|
ksyms |
内核符号表 |
uptime |
系统正常运行时间 |
|
loadavg |
负载均衡 |
… |
… |
linux相关文章:linux教程
评论