Solaris 模块调试器指南

STREAMS

本节介绍对内核开发者以及第三方 STREAMS 模块和驱动程序的开发者均有所帮助的 dcmd 和 walker。

dcmd

address ::mblk2dblk

在指定 mblk_t 的地址的情况下,列显对应的 dblk_t 的地址。

[address] ::mblk_verify

验证一个或多个消息块的完整性。如果指定了显式消息块地址,则检查此消息块的完整性。如果未指定任何地址,则检查所有活动消息块的完整性。 此 dcmd 可生成所检测到的任何无效消息块状态的输出。

address ::queue [-v] [-f flag] [-F flag] [-s syncq]

过滤并显示指定的 queue_t 数据结构。 如果没有任何选项,则显示 queue_t 的各种属性。 如果存在 -v 选项,则更详细地解码队列标志。 如果存在 -f-F-m 选项,则仅当队列与这些选项的参数所定义的条件匹配时才显示该队列;通过此方式,dcmd 可用作管道输入的过滤器。 -f 选项表示指定的标志(<sys/stream.h> 中的其中一个 Q 标志名称)必须存在于队列标志中。 -F 选项表示队列标志中决不能存在指定的标志。-m 选项表示与队列关联的模块名称必须与指定的 modname 匹配。-s 选项表示与队列关联的 syncq_t 必须与指定的 syncq_t 地址匹配。

address ::q2syncq

在指定 queue_t 的地址的情况下,列显对应的 syncq_t 数据结构的地址。

address ::q2otherq

在指定 queue_t 的地址的情况下,列显对等的读取或写入队列结构的地址。

address ::q2rdq

在指定 queue_t 的地址的情况下,列显对应的读取队列的地址。

address ::q2wrq

在指定 queue_t 的地址的情况下,列显对应的写入队列的地址。

[ address ] ::stream

stdata_t 结构的地址表示 STREAM 头的情况下,显示内核 STREAM 数据结构的图像。 将会显示每个模块的读取和写入队列指针、字节计数以及标志,在某些情况下,还会在页边距中显示特定队列的其他信息。

address ::syncq [-v] [-f flag] [-F flag] [-t type] [-T type]

过滤并显示指定的 syncq_t 数据结构。 如果没有任何选项,则显示 syncq_t 的各种属性。 如果存在 -v 选项,则更详细地解码 syncq 标志。 如果存在 -f-F-t-T 选项,则仅当 syncq 与这些选项的参数所定义的条件匹配时才显示它;通过这种方式,dcmd 可用作管道输入的过滤器。-f 选项表示指定的标志(<sys/strsubr.h> 中的其中一个 SQ_ 标志名称)必须存在于 syncq 标志中。-F 选项表示 syncq 标志中决不能存在指定的标志。 -t 选项表示指定的类型(<sys/strsubr.h> 中的其中一个 SQ_CISQ_CO 类型名称)必须存在于 syncq 类型位中。 -T 选项表示 syncq 类型位中决不能存在指定的类型。

address ::syncq2q

在指定 syncq_t 的地址的情况下,列显对应的 queue_t 数据结构的地址。

Walker

b_cont

在指定 mblk_t 的地址的情况下,通过跟踪 b_cont 指针迭代关联的消息结构集。b_cont 指针用于将指定的消息块链接到为同一消息的延续的下一个关联消息块。msgb(9S) 中对消息块进行了更详细的介绍

b_next

在指定 mblk_t 的地址的情况下,通过跟踪 b_next 指针迭代关联的消息结构集。b_next 指针用于将指定的消息块链接到指定队列中的下一个关联消息块。msgb(9S) 中对消息块进行了更详细的介绍。

qlink

在指定 queue_t 结构的地址的情况下,使用 q_link 指针遍历相关队列的列表。 此结构在 <sys/stream.h> 中定义。

qnext

在指定 queue_t 结构的地址的情况下,使用 q_next 指针遍历相关队列的列表。 此结构在 <sys/stream.h> 中定义。

readq

在指定 stdata_t 结构的地址的情况下,遍历读面队列结构的列表。

writeq

在指定 stdata_t 结构的地址的情况下,遍历写面队列结构的列表。