Solaris 模块调试器指南

mdb_get_xdata()

ssize_t mdb_get_xdata(const char *name, void *buf, size_t nbytes);

将按名称指定的目标外部数据缓冲区的内容读入 buf 指定的缓冲区。buf 的大小由 nbytes 参数指定;复制到调用方缓冲区的字节数不会超过 nbytes。成功时将返回读取的总字节数;出错时将返回 -1。如果调用方要确定特定命名缓冲区的大小,则应该将 buf 指定为 NULL,并应该将 nbytes 指定为零。在这种情况下,mdb_get_xdata() 将返回缓冲区的总大小(以字节为单位),但不会读取任何数据。模块编写者可以通过外部数据缓冲区对无法通过模块 API 访问的目标数据进行访问。可以使用 ::xdata 内置 dcmd 查看当前目标导出的命名缓冲区集。