rad_fork(3) — Subroutines
NAME
rad_fork − Creates a new process on a Resource Affinity Domain (libnuma library)
SYNOPSIS
#include <numa.h>
pid_t rad_fork(
radid_t radid,
ulong_t flags );
PARAMETERS
radid
Identifies a Resource Affinity Domain (RAD) on which to allocate data and schedule threads for a new process.
flagsSpecifies options (a bit mask) that affect the attachment or binding operation. See DESCRIPTION for details.
DESCRIPTION
The rad_fork() function behaves the same as nfork() when the latter specifies a resource type of R_RAD and a resource descriptor that points to a RAD set containing a single RAD identifier. For a description of this behavior, refer to the description of the R_RAD resource type in nfork(3).
The following option is specified for the flags argument:
RAD_NO_INHERIT
The child process might not be assigned to the same home RAD as its parent process. Allows the system to assign a home RAD to the child process depending on available resources.
Normally, child processes do inherit the assignments and attributes of the parent process.
RETURN VALUES
0Success (returned to the child process). In this case, the function also returns the process ID of the child process to the parent process.
The child process and all of its data structures are allocated on the RAD specified by the radid argument. In addition, the initial thread of the child process is scheduled on one of the CPUs in the specified RAD.
−1Failure (returned to the parent process). In this case, no child process is created and the function sets errno to indicate the error.
ERRORS
[EAGAIN]
The limit on the total number of processes executing for a single user would be exceeded. This limit can be exceeded by a process with superuser privilege.
[EINVAL]
The radid argument specifies an invalid RAD identifier.
[ENOMEM]
There is insufficient memory to create this process.
SEE ALSO
Functions: nfork(3), nloc(3), numa_intro(3), radsetops(3)
Files: numa_types(4)