使用“kloglevel”的正确 OS X 10.9 源在哪里

使用“kloglevel”的正确 OS X 10.9 源在哪里

MacOS X 10.9 和 10.9.1 包含一个 Finder 错误,该错误在使用 SMB v2 服务器时会暴露出来。(此错误已通知 Apple,并在此处简要描述: smb v2 Finder 错误 / Mavericks)。

我发现man nsmb.conf内核调试级别是可能的:

 Possible keywords may include:

 Keyword       Section    Default    Comment
               A B C      Values
 [...]
 kloglevel     + - -      0          Turn on smb kernel logging

但如果我甚至不知道这是一个位模式还是一个整数,那么这毫无用处。

内核源代码树,我想知道这个调试级别在哪里使用以及如何使用。

如何找到定义或使用此调试级别的源(.c 或 .h 文件)?

答案1

必要的来源位于这里:

苹果 MacOS X 10.9 开源之内:    

smb-697-1.1

下载后,必须使用以下命令扩展此 tarball:

gzcat smb-697.1.1.tar.gz | tar xvf -

在此源树中,可以通过以下方式识别相关源:

cd smb-697.1.1
find . -type f -exec grep -H -i loglevel {} \;

最后我们发现:

kernel/smbfs/smbfs_vfsops.c

初始化:

smbfs_loglevel =  args->KernelLogLevel;

然后:

kernel/netsmb/smb_subr.h

定义:

#define SMB_NO_LOG_LEVEL                0x00
#define SMB_LOW_LOG_LEVEL               0x01
#define SMB_ACL_LOG_LEVEL               0x02
#define SMB_IO_LOG_LEVEL                0x04
#define SMB_AUTH_LOG_LEVEL              0x08

和用途:

if (smbfs_loglevel & SMB_AUTH_LOG_LEVEL) \

因此kloglevel是 4 位的位模式。

相关内容