Solaris 模块调试器指南

mdb_one_bit()

const char *mdb_one_bit(int width, int bit, int on);

mdb_one_bit() 函数可以用于列显在其中打开或关闭相关单个位的位字段的图形化说明。对于创建与 snoop(1M) -v 的输出类似的位字段的详细显示,此函数是很有用的。 例如,以下源代码:

#define FLAG_BUSY       0x1



uint_t flags;



/* ... */



mdb_printf("%s = BUSY\n", mdb_one_bit(8, 0, flags & FLAG_BUSY));

生成以下输出:

.... ...1 = BUSY

位字段中的每个位都列显为一个句点 (.),各个 4 位序列由空格分隔。相关位列显为 1 或 0,具体取决于 on 参数的设置。位字段的总 width(以位计)由 width 参数指定,相关位的位位置由 bit 参数指定。位从零开始编号。该函数将返回一个指针,该指针指向某个包含带格式位表示的大小适当、以空字符结尾的字符串。当前 dcmd 完成时,将自动对该字符串进行垃圾收集。