Guardian Procedure Calls Reference Manual
Considerations
CAUTION: Setting a process on an IPU restricts the ability of the process scheduler to dynamically
balance the workload of the CPU or improve its responsiveness.
Performance problems can arise for the associated processes if the performance and workload
characteristics are not well understood in the context of the overall customer workload. See the
Guardian Programmer's Guide for additional guidelines on the usage of this interface.
• The security requirements of this interface are that the caller must be the owner of the target
process, the group manager of the owner, super.*, or the process itself. All but the last (a
process calling to set itself) requires local authentication. If the caller does not meet these
requirements error 48 is returned.
• The Interrupt Processes (IPs) and Auxiliary Processes (APs) other than the TSMSGIP, TSSTRIP,
and TSCOMIP are not subject to these settings. If one of these processes is specified, error
564 is returned.
• When creating an association (Options <31> = 1) the IPU setting will be in effect upon
successful return from this function for all processes other than DP2 processes. For DP2
processes, there may be a delay before the new IPU setting takes effect, but the delay is
normally less than 1 second after a member of the specified DP2 group runs next. On an idle
system it may take some time before the next run of the DP2 group. Since the change in the
IPU setting is unresolved until the DP2 group runs again, this should not be a concern; the
DP2 group remains marked to be changed to the new IPU in the interim. The IPUAFFINITY_GET_
interface can be used to verify that the IPU setting has taken effect.
• IPU affinity settings do not persist beyond the life of a process or a CPU. Settings must be
re-established after a CPU reload, or after a process has been stopped and restarted.
• For information about assigning instances of the TSMSGIP process to IPUs, see the information
on controlling the IPU affinity of processes in the Guardian Programmer's Guide.
• This procedure can result in the ZNSK-EVT-PS-CHANGE EMS event being generated. See the
description of this event in the HP NonStop Operating System Event Management Programming
Manual for details.
Examples
The following C example sets the IPU affinity of the $XYZ process on IPU 1:
int16 err=FEOK;
int16 tgt_phandle[10]={0};
uint16 tgt_ipu=1;
err=FILENAME_TO_PROCESSHANDLE_("$XYZ", strlen("$XYZ"), tgt_phandle);
if (err == FEOK)
{
err=IPUAFFINITY_SET_ ( tgt_phandle, tgt_ipu, 1 /* bind */);
if (err)
printf("Error %d from IPUAFFINITY_SET_\n", err);
else
printf("The $XYZ process has been set on IPU %d\n", tgt_ipu);
}
The following C example removes the IPU affinity setting of the $XYZ process:
int16 err=FEOK;
int16 tgt_phandle[10]={0};
err=FILENAME_TO_PROCESSHANDLE_("$XYZ", strlen("$XYZ"), &tgt_phandle);
if (err == FEOK)
{
err=IPUAFFINITY_SET_( &tgt_phandle, 0 /*ignored*/, 0 /*unbind*/);
if (err)
printf("Error %d from IPUAFFINITY_SET_\n", err);
IPUAFFINITY_SET_ Procedure 745