ra_detach Subroutine

Purpose

Detaches a work component from a resource.

Library

Standard C library (libc.a)

Syntax

#include <sys/rset.h>
int ra_detach(rstype1, rsid1, rstype2, rsid2, flags)
rstype_t rstype1, rstype2;
rsid_t rsid1, rsid2;
unsigned int flags;

Description

The ra_detach subroutine detaches a work component specified by the rstype1 and rsid1 parameters from the resource specified by the rstype2 and rsid2 parameters.

Parameters

rstype1 Specifies the type of work component to be detached from the resource specified by rstype2/rsid2. The rstype1 parameter must be one of the following defined in rset.h.
R_PROCESS
Existing process
R_THREAD
Existing kernel thread
R_FILDES
File identified by an open file descriptor
R_SHM
Shared memory segment identified by the shared memory ID
R_SUBRANGE
Attachment to a memory range within a work component
rsid1 Specifies the work component associated with the rstype1 parameter. The rsid1 parameter must be one of the following:
Process ID (for rstype1 of R_PROCESS)
Set the rsid_t at_pid field to the desired process ID.
Kernel thread ID (for rstype1 of R_THREAD)
Set the rsid_t.at_tid field to the desired kernel thread ID.
Open file descriptor (for rstype1 of R_FILDES)
Set the rsid_t at_fd field to the desired file descriptor.
Shared memory segment (for rstype of R_SHM)
Set the rsid_t at_shmid field to the desired shared memory ID.
Pointer to a subrange_t struct (for rstype of R_SUBRANGE)
Set the rsid_t at_subbrange field to the address of a subrange_t struct. Set the subrange_t struct su_offset, su_length, su_rstype, and su_rsid fields. The other fields in the subrange_t struct are ignored.

Set the subrange_t su_rstype field to R_PROCMEM and su_rsid.at_pid field to RS_MYSELF to detach from a memory range in the user process. Set the subrange_t su_offset field to the starting address of the range in the process. Set the subrange_t su_length field to the length of the range in the process.

Note:
The subrange_t su_offset and su_length fields must be a multiple of 4 KB. For optimum performance, the fields must be the multiple of the page size backing the memory range. The page size used to back a memory range can be obtained using the vmgetinfo subroutine specifying the VM_PAGE_INFO command parameter.
rstype2 Specifies the type of the resource to be detached to the work component. The rstype2 parameter must be one of the following defined in rset.h.
R_RSET
Resource set attachment
R_SRADID
SRADID attachment
rsid2 Specifies the resource associated with the rstype2 parameter. The rsid2 parameter is ignored for R_RSET and R_SRADID rstype2 resource types.
flags All flags bits are reserved for future use and must be specified as 0.

Return Values

If successful, a value of 0 is returned. If unsuccessful, a value of -1 is returned and the errno global variable is set to indicate an error.

Error Codes

EINVAL One of the following occurred:
  • The flags parameter contains an invalid value.
  • The rstype1 or rstype2 parameter contains an invalid type identifier.
ESRCH A work component specified by the rstype1 and rsid1 parameters does not exist.
ENOTSUP One of the following occurred:
  • An attempt to detach an SRADID (Scheduler Resource Allocation Domain Identifier) is made and ENHANCED_AFFINITY is disabled.
  • An attempt to detach an SRADID to a file is made.
  • An R_SUBRANGE request with su_rstype R_PROCMEM is made and the su_rsid.at_pid field is not RS_MYSELF.
EPERM One of the following occurred:
  • rstype2 specified R_RSET and calling process has neither root authority nor CAP_NUMA_ATTACH attachment privilege.
  • rstype2 specified R_RSET and calling process has neither root authority nor the same effective user ID as the process identified by the rstype1 and rsid1 parameters.

Related Information

ra_attach Subroutine, ra_attachrset Subroutine, ra_detachrset Subroutine, and ra_getrset Subroutine.

[ Top of Page | Previous Page | Next Page | Index | Feedback ]