RSM 段 ID 可以由应用程序指定,或者由系统使用 rsm_memseg_export_publish() 函数生成。指定段 ID 的应用程序需要使用保留范围的段 ID。要保留一组段 ID,请使用 rsm_get_segmentid_range 并在段 ID 配置文件 /etc/rsm/rsm.segmentid 中定义保留范围的段 ID。应用程序可以使用 rsm_get_segmentid_range 函数来获取为应用程序保留的段 ID 范围。此函数会读取在 /etc/rsm/rsm.segmentid 文件中针对给定应用程序 ID 定义的段 ID 范围。
应用程序 ID 是指用于标识应用程序的以空字符结尾的字符串。应用程序可以使用任何等于或大于 baseid 并且小于 baseid+length 的值。如果修改了 baseid 或 length,则返回到应用程序的段 ID 可能会超出保留的范围。要避免此问题,请使用相对于保留的一组段 ID 的偏移来获取段 ID。
/etc/rsm/rsm.segmentid 文件中的各项形式如下:
#keyword appid baseid length reserve SUNWfoo 0x600000 100 |
这些项由可以用制表符或空格分隔的字符串组成。第一个字符串是关键字 reserve,后跟应用程序标识符(不包含空格的字符串)。应用程序标识符之后是 baseid,即保留范围的起始段 ID(十六进制)。baseid 之后是 length,即保留的段 ID 数。注释行的第一列中包含 #。此文件不应包含空行。为系统保留的段 ID 在 /usr/include/rsm/rsm_common.h 头文件中定义。应用程序不能使用为系统保留的段 ID。
rsm_get_segmentid_range 函数返回 0 表示成功。如果此函数失败,则会返回以下错误值之一:
传递的地址无效
未在 /etc/rsm/rsm.segmentid 文件中定义应用程序 ID
配置文件 /etc/rsm/rsm.segmentid 不存在或无法读取。文件格式配置错误