arsop(2) arsop(2)
arsop - perform an operation on an array session
#include <sys/arsess.h>
int arsop(int func, ash_t ash, void *bufptr, int buflen);
The arsop function performs an operation on the array session identified
by the handle ash. If ash is less than 0, then the operation is
performed on the array session that is associated with the calling
process.
Most array session operations take some sort of argument. A pointer to
the argument is passed as bufptr, and the length of the argument is
specified with buflen.
The particular operation to be performed is identified by the function
code func, which is defined in <sys/arsess.h>. Available array session
operations include:
ARSOP_NOP
No operation involving the array session itself will be performed,
but the function will fail if the specified array session does not
exist. This is a convenient way to determine if an array session
is active.
ARSOP_GETSPI
Obtains the Service Provider Information associated with the array
session and stores it into the buffer pointed to by bufptr. If
the argument buffer is too small to accommodate all of the Service
Provider Information, the data will be truncated. If the argument
buffer is larger than the Service Provider Information associated
with the array session, the data will be padded on the right with
zeroes.
ARSOP_SETSPI
Sets the Service Provider Information associated with the array
session to the contents of the buffer pointed to by bufptr. If
the argument buffer is too small, the Service Provider Information
will be padded on the right with zeroes. If the argument buffer
is too large, an EINVAL error will occur. If bufptr is NULL, then
buflen is ignored and the array session will use the system
default service provider information (typically all zeroes, though
it can be changed with arsctl(2)). The caller must be privileged
to use this function.
ARSOP_GETSPILEN
Returns the number of bytes of storage that have been allocated
for the Service Provider Information that is associated with the
array session. The value is stored as an int at the location
Page 1
arsop(2) arsop(2)
specified by bufptr. This can be used to determine the size of
the buffer that is required for the ARSOP_GETSPI and ARSOP_SETSPI
functions.
ARSOP_SETSPILEN
Sets the length of the Service Provider Information associated
with the array session to value of the int pointed to by bufptr.
An EINVAL error will occur if the value is negative or is greater
than the system maximum value (typically 1024), and the current
setting will remain unchanged. If the array session currently has
non-default service provider information associated with it, then
that information will either be truncated or extended with zeroes
on the end to accommodate the new length. The caller must be
privileged to use this function.
ARSOP_FLUSHACCT
Flushes any accounting data for the array session. If array
session accounting is active (see extacct(5)), then a record
reporting the resource usage information that has been accumulated
by the array session will be written. As is always the case with
array session accounting, if two or more members of the array
session have different real UID's or GID's, it is unpredictable
whose UID/GID will be included in the array session accounting
record. If a flush operation has already been performed, then the
data reported by a subsequent flush or by the termination of the
array session will only include resources that have been consumed
since the last flush operation. Array session accounting records
that are written using this operation will be marked as "flushed"
to indicate that subsequent records for the same array session may
be forthcoming. Under normal circumstances, the resource usage
for an array session only includes the resources used by processes
that have already terminated; the flushed accounting data will not
include the resources used by any members of the array session
that are still running. The caller must be privileged to invoke
this function.
ARSOP_GETINFO
Obtains information about the array session and stores it in the
buffer pointed to by bufptr. The format of the data is defined by
the arsess_t structure, which can be found in <sys/arsess.h>.
Note that the data in an arsess_t is system-dependent and subject
to change without notice from one release of IRIX to another.
ARSOP_GETCHGD
Obtains information about resources that have already been charged
to the array session in some way. Typically, this would be done
by invoking the ARSOP_FLUSHACCT function against the array
session. The format of the data is defined by the shacct_t
structure, which can be found in <sys/extacct.h>, and is stored in
the buffer pointed to by bufptr. Note that the data in an
shacct_t is system-dependent and subject to change without notice
from one release of IRIX to another.
Page 2
arsop(2) arsop(2)
ARSOP_RESTRICT_NEW
Restricts any process in the array session from starting a new
array session (for example, using newarraysess(2)). If a
privileged process in such an array session subsequently decides
that it needs to start a new array session, it must first clear
the restriction using the ARSOP_ALLOW_NEW function. A process can
determine if its array session has been restricted by using the
ARSOP_GETINFO function.
ARSOP_ALLOW_NEW
Removes any restrictions against starting new array sessions that
may have been placed on the array session by the
ARSOP_RESTRICT_NEW function. The caller must be privileged to use
this function.
arsop may fail if one or more of these conditions are true:
EFAULT bufptr is not a valid address
EINVAL func is not a valid function code
EINVAL The argument pointed to by bufptr is not valid
EPERM The current process does not have the appropriate privileges to
perform the operation specified by func.
ESRCH The array session specified by ash is not currently active.
arsctl(2), array_sessions(5).
Upon successful completion, arsop returns a value of 0. Otherwise, a
value of -1 is returned and errno is set to indicate the error.
PPPPaaaaggggeeee 3333 [ Back ]
|