cg_bind(S)
cg_bind --
set a target CPU-Group for a process or its children
Synopsis
#include <sys/cguser.h>
int cg_bind(
idtype_t idtype,
id_t id,
cgid_t cgid,
int flags,
cgid_t *ocgid,
int *oflags);
Description
cg_bind directs the system in the placement of a process,
of subsequently executed process images or of process children.
The combination of idtype and id specifies the process
or LWP of interest.
When idtype is P_PID, id is interpreted as
a process id; the special value P_MYID may be used as shorthand
for the calling process. When idtype is P_LWPID, id is
interpreted as the LWP id of an LWP within the calling
process; the special value P_MYID may be used as shorthand for
the calling LWP. In either case, an
attempt to bind a multi-threaded process will be rejected (a restriction
that may be relaxed in a future release).
The cgid parameter is the target CPU-Group; additional
values are reserved to mean:
CG_QUERY-
query without altering
CG_CURRENT-
bind to the CPU-Group to which the target process currently belongs
CG_NONE-
unbind
CG_DEFAULT-
restore default binding behavior (with CGBIND_FORK only)
The flags parameter may have the following values:
CGBIND_NOW-
bind the target now
CGBIND_FORK-
bind processes forked by the target
CGBIND_EXEC-
a reserved value with currently unimplemented functionality
The pointers ocgid and oflags, if not NULL,
are used to pass back the values that were in effect prior to the call.
Return values
On success, cg_bind returns 0.
On failure, cg_bind returns -1 and sets
errno to indicate the error:
[EAGAIN]-
For a CGBIND_NOW operation, the target CPU-Group is
currently offline.
[EFAULT]-
ocgid or oflags points outside the allocated address space of the calling process.
[EINVAL]-
idtype has an invalid value.
[EINVAL]-
cgid does not refer to a valid CPU-Group.
[EINVAL]-
flags has an invalid value.
[EINVAL]-
A binding operation was attempted on a multi-threaded process.
[EPERM]-
The caller does not have appropriate privileges for this call. The
real or effective user ID of the calling process must match the real or
saved (from exec) user ID of the target process,
unless the caller has the P_OWNER privilege.
[ESRCH]-
No process can be found corresponding to that specified by id.
[ENOSYS]-
The cg_bind call is not supported by the system.
References
cg_ids(S),
cg_info(S),
sysconf(S)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 01 June 2005