dmp_compspec 和 dmp_compext 内核服务

用途

指定要包含在转储中的组件和回调参数。

语法

#include <sys/livedump.h>
kerrno_t dmp_compspec (flags, comp, anchor, extid, p1, p2, ..., NULL)
long flags;
long comp;
void *anchor;
dmp_extid_t *extid;
char *p1;
char *p2;
...

kerrno_t dmp_compext (extid, p1, p2, ..., NULL)
dmp_extid_t extid;
char *p1;
char *p2;
...

参数

描述
停靠 指向关联的 ldmp_parms_t 数据结构或者指向 ldmp_prepare_t 数据结构。
comp 指定组件,如标志所指示。
外标识 对于返回标识的 dmp_compspec 内核服务,如果您使用 dmp_compext 内核服务为要转储的组件提供其他参数,那么将指向 dmp_extid_t 类型的项。 然后,可以指定此标识以使用 dmp_compext 内核服务将其他参数添加到组件。 外标识 参数可以为 NULL。
标志 您可以指定以下值:
DCF_FAILING
指示这是发生故障的组件。 只能指定一个发生故障的组件。
DCF_FIRST
指示首先要转储该组件。 通常按指定的顺序转储组件。
注意:
  • 仅当锚点引用了 ldmp_parms_t 数据项时, DCF_FIRST 值才有效。 当回调接收到 RASCD_LDMP_PREPARE 命令时,它无效。
  • 指定先转储的最后一个组件是先转储的组件。
DCF_LEVEL0 - DCF_LEVEL9
0 转储此组件的详细信息级别 (0 到 9)。 如果未设置任何这些标志,那么将在当前级别转储该组件。
DCF_MINIMAL
指示 DCF_LEVEL1 级别。
DCF_NORMAL
指示 DCF_LEVEL3 级别。
DCF_DETAIL
指示 DCF_LEVEL7 级别。
DCF_LONG
指示这些参数是长整型的两个参数。 可以在两个长数据项中传递一个组件,而不是传递无限数量的字符串,就像在伪组件的情况下一样。
必须指定下列其中一个组件规范标志,并且只能指定其中一个标志。 它们在 dc_component 字段中指定组件的方式:
DCF_BYPNAME
指示组件是按路径名指定的。
DCF_BYLNAME
指示组件是由逻辑别名指定的。
DCF_BYTYPE
指示组件是按类型指定的。
DCF_BYCB
指示该组件由 ras_block_t 指定。
p1, p2 ... 指定组件的参数,其中最后一个参数必须为 NULL。 如果指定了关键字参数,那么这些参数必须是字符串,并且包含关键字及其值。 如果单个参数中出现多个关键字和值对,那么将用空格分隔这些关键字和值对。 例如, p1 参数可以是 foo=1234p2 参数可以是 bar=5678,16。 此外, p1 参数可以是 foo=1234 bar=5678

如果设置了 DCF_LONG 标志,那么将传入两个长类型的参数。 在此情况下, p1p2 参数包含长整型类型的值,并且不能再指定任何参数。

描述

dmp_compspecdmp_compext 内核服务提供用于转储的组件及其回调参数。 您只能在实时转储中使用这些内核服务。

在使用 实时转储 内核服务启动实时转储之前,将使用 dmp_compspec 内核服务。 如果某个组件的回调要将另一个组件包括在实时转储中,即,当该回调接收到 RASCD_LDMP_PREPARE 命令时,也可以使用此内核服务。

多个组件可以包含在实时转储中。

dmp_compext 函数用于为组件提供附加参数。

返回值

描述
重大安全事件数量 指示成功完成。
einval_ras_dmp_compspec_flags 指示标志指定的值无效。
Einval_ras_dmp_compspec_comp 指示该组件规范无效。
EINVAL_RAS_DMP_COMPSPEC_NOTWARE 指示指定的组件必须支持实时转储。
Einval_ras_dmp_compspec_anchor 指示该锚点规范无效。
Efault_ras_dmp_compspec_anchor 指示锚点参数所引用的存储器无效。
efault_ras_dmp_compspec_extid 指示 外标识 参数所引用的存储无效。
efault_ras_dmp_compspec_parms 指示一个参数地址无效。
Einval_ras_ldmp_estimate 指示锚点参数指示转储大小估算请求,但未从进程环境中进行 dmp_compspec 调用。
Einval_ras_dmp_compspec_noadd 指示无法将组件添加到此转储,即,转储类型标志 ldpr_flags 已设置了 LDT_NOADD 位。
einval_ras_dmp_compspec_failing 指示已指定了发生故障的组件。
enomem_ras_dmp_compspec 指示没有可用存储器。
einval_ras_dmp_compext_extid 指示 外标识 参数未引用有效的组件。
efault_ras_dmp_compext_extid 指示 外标识 参数所引用的存储无效。
efault_ras_dmp_compext_parms 指示参数所引用的存储无效。
Ebusy_ras_dmp_compext 指示此组件的规范已完成,并且无法再添加更多参数。 如果 外标识 参数所指的组件已完成其 RASCD_LDMP_PREPARE 处理,那么会发生此情况。
enomem_ras_dmp_compext 指示没有可用存储器。