cpusetMove(3x)cpusetMove(3x)NAMEcpusetMove - move processes associated with an ID to another cpuset
SYNOPSIS
#include <cpuset.h>
int cpusetMove(char *from_qname, char *to_qname, int idtype,
int64_t id);
DESCRIPTION
The cpusetMove function is used to temporarily move processes associated
with an ID, identified by id from one cpuset to another. This function
does not move the memory associated with the processes. This function
should be used in conjuction with cpusetMoveMigrate.
The from_qname argument is the name of the cpuset from which the
processes are moved. Using a NULL for this argument will result in having
all the processes identified by id to be move into the global cpuset.
The global cpuset is a term used to describe all the CPUS that are not in
a cpuset.
The to_qname argument is the name of the destination cpuset for the
specified ID. Using a NULL for this argument will result in having all
the processes identified by id to be moved into the global cpuset.
The idType argument defines the type of number passed in as id. The
possible options for idType are CPUSET_PID (Process ID), CPUSET_ASH
(Array Session Handle), CPUSET_PGID (Process Group ID), CPUSET_SID
(Session ID), and CPUSET_JID (Job ID). The use of CPUSET_JID will result
in an ENOPKG error on systems running the IRIX maintenance stream, or
those running the IRIX feature stream but without the job limits package
installed.
This function requires the processes associated with id to be stopped
before it can enact the move. A test is made to see if all the processes
are stopped. If id has processes A, B, and C and B is stopped, A and C
will be stopped. Then, after the move, A and C will be restarted (but not
B).
This function requires root privileges on standard IRIX, and
CAP_SCHED_MGMT on Trusted IRIX (TRIX).
EXAMPLES
This example moves a process ID from the cpuset queue named mpi_set to
the cpuset queue named my_set.
char *from_qname = "mpi_set";
char *to_qname = "my_set";
int64_t id = 1534;
/* move from mpi_set to my_set,
Page 1
cpusetMove(3x)cpusetMove(3x)
* if error - print error & exit
*/
if (!cpusetMove(from_qname, to_qname, CPUSET_PID,
id)) {
perror("cpusetMove");
exit(1);
}
NOTEScpusetMove is found in the library "libcpuset.so", and will be loaded if
the option -lcpuset is used with cc(1) or ld(1).
SEE ALSOcpuset(1), cpusetCreate(3x), cpusetMoveMigrate(3x), cpuset(5).
DIAGNOSTICS
If successful, cpusetMove returns a 1. If cpusetMove fails, it returns
the value 0 and errno is set to indicate the error. The possible values
for errno are the same as those used by sysmp(2). With any error, an
attempt is made to move the processes back to their originating cpuset.
Page 2