ra_get_attachinfo 子例程

用途

检索工作组件所连接到的资源集附件。

标准 C 库 (libc.a)

语法

#include <sys/rset.h>

attachinfo_t *ra_get_attachinfo(rstype, rsid, offset, length, flags)
rstype_t rstype;
rsid_t rsid;
off64_t offset;
size64_t length;
unsigned int flags;

描述

ra_get_attachinfo 子例程检索描述涉及由 rstypersid指定的工作组件的附件的信息。

此信息作为 attachinfo_t 结构的以 null 结束的链接列表返回。 在调用者的进程堆中分配 attachinfo_t 结构。 提供了 ra_free_attachinfo 子例程以释放 ra_get_attachinfo返回的 attachinfo_t 结构列表。

ra_get_attachinfo 子例程检索以下工作组件的附件信息:
  • 由共享内存段标识标识的共享内存对象。
  • 由打开的文件描述符标识的文件。
  • 当前用户进程中的地址范围。
  • 上述其中一个工作组件中的地址范围,由其 偏移 在对象及其 长度中标识。

如果 rstype 是内存对象,并且 length 具有 0 值,那么返回的附件信息将针对内存对象的最后一部分 (从 offset开始)。

注: 资源集附件可以在 ra_get_attachinfo 检索它们期间或之后更改。 无法保证返回的附件仍存在,或者已检索到所有现有附件。

参数

描述
雷斯特佩 指定要为其检索附件信息的工作组件的类型。 此参数可以具有下列其中一个值:
R_SHM
将检索共享内存的附件信息,该信息由其共享内存标识标识。
R_FILDES
将检索文件的附件信息,该文件由其打开的文件描述符标识。
R_PROCMEM
将检索用户进程中某个内存范围的附件信息。
Rsid 标识要对其检索附件信息的工作组件。 此参数可以是下列其中一项:
  • 共享内存段标识 (如果 雷斯特佩 的值为 R_SHM)
  • 打开文件描述符 (如果 雷斯特佩 的值为 R_FILDES)
  • RS_自己 (如果 rstype 的值为 R_procmem)
偏移 指定要检索其附件信息的内存对象中某个范围的偏移量。 仅对于 雷斯特佩的以下值,才会考虑此参数:
  • R_SHM: 在由 Rsid 标识的共享内存对象中启动偏移量
  • R_FILDES: 由 Rsid 标识的文件中的绝对偏移量
  • R_procMEM: 正在启动用户进程中内存范围的偏移量。
length 指定要检索其附件信息的内存对象内的范围的长度。 仅对于以下 rstripe 值,才会考虑此参数:
  • R_SHM: Rsid 所标识的共享内存对象中某个范围的长度
  • R_FILDES: 由 Rsid 标识的文件中某个范围的长度
  • R_PROCMEM: 用户进程中范围的长度。
标志 保留以供将来使用。 指定为 0

返回值

成功完成时,将返回指向以 null 结束的 attachinfo_t 结构列表中第一个元素的指针。 如果工作组件不具有任何附件,那么将返回空指针。 否则,将返回值 -1 ,并设置 errno 全局变量以指示错误。

错误代码

如果下列一项或多项为 true ,那么 ra_get_attachinfo 子例程将失败:
描述
EINVAL 下列其中一种情况必须为真:
  • 标志 参数包含无效的值。
  • 雷斯特佩 参数包含无效类型限定符。
  • 雷斯特佩 参数为 R_SHM ,并且 Rsid 不是有效的共享内存段。
EBADF 雷斯特佩 参数为 R_FILDES ,并且 Rsid 不是有效的打开文件描述符。
ENOTSUP rstype 参数是 R_PROCMEM , rsid.at_pid 字段不是RS_自己。