当前位置: 技术问答>linux和unix
printf和printk的区别?
来源: 互联网 发布时间:2016-12-19
本文导语: 主要不明白他们都用在什么地方 有人说中断的时候不能用printf 写内核驱动代码的时候也不能用printf 这都是为什么呢?? printk在写驱动的时候就能使用呢? 请大家给点提示 | printf在...
主要不明白他们都用在什么地方
有人说中断的时候不能用printf
写内核驱动代码的时候也不能用printf 这都是为什么呢??
printk在写驱动的时候就能使用呢?
请大家给点提示
有人说中断的时候不能用printf
写内核驱动代码的时候也不能用printf 这都是为什么呢??
printk在写驱动的时候就能使用呢?
请大家给点提示
|
printf在内核中用不了,printk就是内核中的printf函数
在写驱动的时候在中断的上半部不要使用printk--因为printk太耗时...中断上半部需要快速返回!
在写驱动的时候在中断的上半部不要使用printk--因为printk太耗时...中断上半部需要快速返回!
|
1. printf是ANSI C库函数,user space用。 printk是linux kernel 函数,kernel space用。
2. 中断一般要尽量少做事,中断分上半部和下部部,下半部一般是软中断。printk是不可重入的函数。
2. 中断一般要尽量少做事,中断分上半部和下部部,下半部一般是软中断。printk是不可重入的函数。
|
LDD3 裡面有說:
1. printk 不支援浮點數 (float point)。
2. printk 可以設定降低呼叫 printk 的頻率,如果呼叫同一行 printk 太頻繁,你可以抑制掉一些重覆的 printk 訊息。
3. printk 是內核專用。
1. printk 不支援浮點數 (float point)。
2. printk 可以設定降低呼叫 printk 的頻率,如果呼叫同一行 printk 太頻繁,你可以抑制掉一些重覆的 printk 訊息。
3. printk 是內核專用。
|
printf是不可重入的
|
内核用不了printf
printk不会睡眠,而且可以设置优先级,用的固定大小的环形buffer存储打印信息
printk不会睡眠,而且可以设置优先级,用的固定大小的环形buffer存储打印信息
|
print + kernel = printk
|
printk是用在内核中的
|
printf只是c库中的函数
printk是内核专用的
printk是内核专用的
|
printk 用在内核
printf 在用户模式
printf 在用户模式
|
printk是内核自己实现的函数
printf是glibc实现的
printf是glibc实现的