485
查看printk的输出格式的源代码
printk的输出格式
0
←
printk的输出格式
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
你被禁止执行你刚才请求的操作。
您可以查看并复制此页面的源代码:
=== printk函数可以指定输出的优先级 === <pre class="prettyprint"> KERN_EMERG"<0>"/*紧急事件消息,系统崩溃之前提示,表示系统不可用*/ KERN_ALERT"<1>"/*报告消息,表示必须立即采取措施*/ KERN_CRIT"<2>"/*临界条件,通常涉及严重的硬件或软件操作失败*/ KERN_ERR"<3>"/*错误条件,驱动程序常用KERN_ERR来报告硬件的错误*/ KERN_WARNING"<4>"/*警告条件,对可能出现问题的情况进行警告*/ KERN_NOTICE"<5>"/*正常但又重要的条件,用于提醒。常用于与安全相关的消息*/ KERN_INFO"<6>"/*提示信息,如驱动程序启动时,打印硬件信息*/ KERN_DEBUG"<7>"/*调试级别的消息*/ </pre> 更改输出级别: /proc/sys/kernel/printk文件定义了4个数字, 执行: cat /proc/sys/kernel/printk 4 4 1 7 ①控制台日志级别:优先级高于该值的消息将被打印至控制台。 ②缺省的消息日志级别:将用该值来打印没有优先级的消息。 ③最低的控制台日志级别:控制台日志级别可能被设置的最小值。 ④缺省的控制台:控制台日志级别的缺省值。 日志缓冲区的每一行文本开头具有级别标记, 级别值越小则重要性越高. 系统定义了8个消息级别, === 格式说明符 === 变量类型 , 格式说明符 int %d 或者 %x( 注: %d 是十进制, %x 是十六进制 ) unsigned int %u 或者 %x long %ld 或者 %lx unsigned long %lu 或者 %lx long long %lld 或者 %llx unsigned long long %llu 或者 %llx size_t %zu 或者 %zx ssize_t %zd 或者 %zx 原始指针值必须用 %p 输出。 u64,即(unsigned long logn),必须用 %llu 或者 %llx 输出,如: printk("%llu", (unsigned long long)u64_var); s64,即(long long),必须用 %lld 或者 %llx 输出,如 : printk("%lld", (long long)s64_var); 如果 ( 变量类型 )<type> 的长度依赖一个配置选项 ( 例如: sector_t, blkcnt_t, phys_addr_t, resource_size_t) 或者 依赖相关的体系结构(例如: tcflag_t ),使用一个可能最大类型的格式说明符,并且显示转换它。如: printk("test: sector number/total blocks: %llu/%llu\n",(unsigned long long)sector, (unsigned long long)blockcount); === 实用实例 === 1、通过函数指针打印函数名 <pre class="prettyprint"> //kernel/workqueue.c static void process_one_work(struct worker *worker, struct work_struct *work) __releases(&gcwq->lock) __acquires(&gcwq->lock) { printk(KERN_ALERT "kaigo, process_one_work, start:%pS\n", (void *)work->func); struct cpu_workqueue_struct *cwq = get_work_cwq(work); struct global_cwq *gcwq = cwq->gcwq; ... </pre> 如此则能区分当前工作队列的处理函数,对调试一些driver很有用
返回
printk的输出格式
。
导航菜单
个人工具
   
个人维基
注册
登录
名字空间
页面
变换
查看
阅读
查看源代码
统计
查看历史
操作
搜索
导航
首页
Ubuntu
Android
C&CPP
Java
Python
大杂烩
最近更改
工具箱
所有页面
文件列表
特殊页面