免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4875 | 回复: 7
打印 上一主题 下一主题

[FreeBSD] FreeBSD内核模块中可以使用libc库提供的函数么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-30 11:34 |只看该作者 |倒序浏览
我看内核bridge.c中有printf函数。linux内核模块中不可以使用任何libc库,难道FreeBSD中可以么?

论坛徽章:
0
2 [报告]
发表于 2006-04-30 11:48 |只看该作者
原帖由 xfsoul 于 2006-4-30 11:34 发表
我看内核bridge.c中有printf函数。linux内核模块中不可以使用任何libc库,难道FreeBSD中可以么?


FreebSD内核中的printf不是libc的printf。如果你在内核模块中使用了printf,那就只能在本机上调试,因为在远程登录终端上将看不到任何打印信息。而使用uprintf就没有这个问题,它会把信息打印在你的登录终端上。

[ 本帖最后由 雨丝风片 于 2006-5-8 11:13 编辑 ]

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
3 [报告]
发表于 2006-04-30 12:11 |只看该作者
原帖由 xfsoul 于 2006-4-30 11:34 发表
我看内核bridge.c中有printf函数。linux内核模块中不可以使用任何libc库,难道FreeBSD中可以么?


不是用的libc,在sys/kern/subr_prt.c里面。

论坛徽章:
0
4 [报告]
发表于 2006-04-30 12:56 |只看该作者
谢谢二位大侠:)

论坛徽章:
0
5 [报告]
发表于 2006-05-06 18:18 |只看该作者
感觉,系统内核方面。有很多人不是很了解。

我个人的拙见希望大家不要见笑。

作为一个操作系统内核,其实本质是汇编语言+C语言开发的。汇编语言是把硬件层抽象出来,使得C语言能控制它。而由于内核是运行在硬件层上面的,所以,许多函数都要自己实现。那么,有些内核开发者为了便于记忆便将一些函数名定义得像标准C函数一样。

就好像printf这个函数。其实,在内核中,只要你原意,改成什么名字都可以。比如scanf那也是可以的。所以,感觉在内核分析中,函数名并不是最重要的,重要的是内核的运作原理和实现。


上面是我个人的看法,希望不要见笑。

论坛徽章:
0
6 [报告]
发表于 2006-05-08 11:15 |只看该作者
可以进一步参考一下man 9 printf :

     The printf(9) family of functions are similar to the printf(3) family of
     functions.  The different functions each use a different output stream.
     The uprintf() function outputs to the current process' controlling tty,
     while printf() writes to the console as well as to the logging facility.
     The tprintf() function outputs to the tty associated with the process p
     and the logging facility if pri is not -1.  The log() function sends the
     message to the kernel logging facility, using the log level as indicated
     by pri.

论坛徽章:
0
7 [报告]
发表于 2007-11-22 05:53 |只看该作者

回复 #3 gvim 的帖子

在sys/kern/subr_prf.c

[ 本帖最后由 UnixStudier 于 2007-11-22 05:54 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-11-22 08:32 |只看该作者
原帖由 雨丝风片 于 2006-4-30 11:48 发表


FreebSD内核中的printf不是libc的printf。如果你在内核模块中使用了printf,那就只能在本机上调试,因为在远程登录终端上将看不到任何打印信息。而使用uprintf就没有这个问题,它会把信息打印在你的登录终端上。


这就是某些message提示不会显示在SSH REMOTE CONSOLE而会显示在终端屏幕上的原因吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP