|
HP OpenVMS System Services Reference Manual
$STOP_SYS_ALIGN_FAULT_REPORT (Alpha and Integrity servers)
On Alpha and Integrity server systems, disables systemwide alignment
fault reporting.
Format
SYS$STOP_SYS_ALIGN_FAULT_REPORT
C Prototype
int sys$stop_sys_align_fault_report (void);
Arguments
None.
Description
The Stop System Alignment Fault Reporting service disables systemwide
alignment fault reporting.
The service returns SS$_AFR_NOT_ENABLED if systemwide alignment fault
reporting is not enabled; otherwise, it returns success.
Required Access or Privileges
CMKRNL privilege is required.
Required Quota
None
Related Services
$GET_ALIGN_FAULT_DATA, $GET_SYS_ALIGN_FAULT_DATA,
$INIT_SYS_ALIGN_FAULT_REPORT, $PERM_DIS_ALIGN_FAULT_REPORT,
$PERM_REPORT_ALIGN_FAULT, $START_ALIGN_FAULT_REPORT
Condition Values Returned
SS$_NORMAL
|
The service completed successfully.
|
SS$_NOPRIV
|
The caller lacks sufficient privilege.
|
SS$_AFR_NOT_ENABLED
|
The $START_ALIGN_FAULT_REPORT service has not been called.
|
$SUBSYSTEM
Saves or restores the process image rights for the current protected
subsystem.
Format
SYS$SUBSYSTEM enbflg
C Prototype
int sys$subsystem (unsigned int enbflg);
Argument
enbflg
OpenVMS usage: |
boolean |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
Value specifying whether the protected subsystem identifiers are to be
saved or restored. If the enbflg argument is set to 0,
the active subsystem is saved. If it is set to 1, the subsystem is
restored.
Description
A protected subsystem image is a main image that has in its access
control list a special type of ACE that names a set of identifiers and
their attributes. Whenever the operating system activates a main image
that has protected subsystem identifiers associated with it, these
identifiers are automatically granted to the process for the duration
of the image.
In essence, a protected subsystem provides the same behavior as if the
image had been installed with the identifiers. Subsystem identifiers
are sometimes referred to as image rights, in contrast to process
rights and system rights.
The Subsystem service provides an easy way for a protected subsystem
image to dynamically save and restore its subsystem identifiers. A
protected subsystem might choose to turn off its subsystem identifiers
at certain times to temporarily revoke the user's access to the objects
comprising the protected subsystem. For example, DCL uses the
$SUBSYSTEM service to temporarily remove any image identifiers from the
process during Ctrl/Y interrupt processing.
The image rights are saved in the process control region and
automatically deleted on image rundown ($RMSRUNDWN).
For more information about protected subsystems, see the HP OpenVMS Guide to System Security.
Required Access or Privileges
None
Required Quota
None
Related Services
None
Condition Values Returned
SS$_WASCLR
|
The service completed successfully; protected subsystem had no
identifiers associated with it.
|
SS$_WASSET
|
The service completed successfully; protected subsystem had identifiers
associated with it.
|
$SUSPND
Allows a process to suspend itself or another process.
Format
SYS$SUSPND [pidadr] ,[prcnam] ,[flags]
C Prototype
int sys$suspnd (unsigned int *pidadr, void *prcnam, unsigned int flags);
Arguments
pidadr
OpenVMS usage: |
process_id |
type: |
longword (unsigned) |
access: |
modify |
mechanism: |
by reference |
Process identification (PID) of the process to be suspended. The
pidadr argument is the address of the longword PID.
The pidadr argument can refer to a process running on
the local node or a process running on another node in the OpenVMS
Cluster system.
You must specify the pidadr argument to suspend a
process whose UIC group number is different from that of the calling
process.
prcnam
OpenVMS usage: |
process_name |
type: |
character-coded text string |
access: |
read only |
mechanism: |
by descriptor--fixed-length string descriptor |
Name of the process to be suspended. The prcnam
argument is the address of a character string descriptor pointing to
the process name. A process running on the local node can be identified
with a 1- to 15-character string.
To identify a process on a particular node on a cluster, specify the
full process name, which includes the node name as well as the process
name. The full process name can contain up to 23 characters.
A process name is implicitly qualified by its UIC group number. Because
of this, you can use the prcnam argument only to
suspend processes in the same UIC group as the calling process.
To suspend processes in other groups, you must specify the
pidadr argument.
flags
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
Longword of bit flags specifying options for the suspend operation.
Currently, only bit 0 is used for the flags argument.
When bit 0 is set, the process is suspended at kernel mode and ASTs are
not deliverable to the process.
To request a kernel mode suspend, the caller must be in either kernel
mode or executive mode. The default (bit 0 is clear) is to suspend the
process at supervisor mode, where executive or kernel mode ASTs can be
delivered to the process. If executive or kernel mode ASTs have been
delivered to a process suspended at supervisor mode, that process will
return to its suspended state after the AST routine executes.
Description
The Suspend Process service allows a process to suspend itself or
another process.
A suspended process can receive executive or kernel mode ASTs, unless
it is suspended at kernel mode. If a process is suspended at kernel
mode, the process cannot receive any ASTs or otherwise be executed
until another process resumes or deletes it. If you specify neither the
pidadr nor the prcnam argument, the
caller process is suspended.
If the longword value at address pidadr is 0, the PID
of the target process is returned.
The $SUSPND service requires system dynamic memory.
The $SUSPND service completes successfully if the target process is
already suspended.
Unless it has pages locked in the balance set, a suspended process can
be removed from the balance set to allow other processes to execute.
Note that a kernel mode suspend request can override a supervisor mode
suspend state, but a supervisor suspend request cannot override a
kernel mode suspend state.
The Resume Process ($RESUME) service allows a suspended process to
continue. If one or more resume requests are issued for a process that
is not suspended, a subsequent suspend request completes immediately;
that is, the process is not suspended. No count is maintained of
outstanding resume requests.
Note
When the $SUSPND service is called and the target process is on a
different cluster node than that of the process calling the $SUSPND
service, the kernel mode suspend flag (bit 0) is ignored. As a result,
any suspend is treated as a supervisor-mode suspend.
|
Required Access or Privileges
Depending on the operation, the calling process might need one of the
following privileges to use $SUSPND:
- GROUP privilege to suspend another process in the same group,
unless the process to be suspended has the same UIC as the calling
process
- WORLD privilege to suspend any other process in the system
Required Quota
None
Related Services
$CANEXH, $CREPRC, $DCLEXH, $DELPRC, $EXIT, $FORCEX, $GETJPI, $GETJPIW,
$HIBER, $PROCESS_SCAN, $RESUME, $SETPRI, $SETPRN, $SETPRV, $SETRWM,
$WAKE
Condition Values Returned
SS$_NORMAL
|
The service completed successfully.
|
SS$_ACCVIO
|
The process name string or string descriptor cannot be read by the
caller, or the process identification cannot be written by the caller.
|
SS$_INCOMPAT
|
The remote node is running an incompatible version of the operating
system.
|
SS$_INSFMEM
|
The system dynamic memory is insufficient for completing the service.
|
SS$_IVLOGNAM
|
The specified process name has a length of 0 or has more than 15
characters.
|
SS$_NONEXPR
|
The specified process does not exist, or an invalid process
identification was specified.
|
SS$_NOPRIV
|
The target process was not created by the caller and the calling
process does not have GROUP or WORLD privilege, or flag bit 0 was set
from outer mode.
|
SS$_NOSUCHNODE
|
The process name refers to a node that is not currently recognized as
part of the OpenVMS Cluster system.
|
SS$_NOSUSPEND
|
The process was previously marked as not suspendable by the
PCB$V_NOSUSPEND flag.
|
SS$_REMRSRC
|
The remote node has insufficient resources to respond to the request.
(Bring this error to the attention of your system manager.)
|
SS$_UNREACHABLE
|
The remote node is a member of the cluster but is not accepting
requests. (This is normal for a brief period early in the system boot
process.)
|
SS$_WAIT_CALLERS_MODE
|
Bit 1 was used in the
flags argument.
|
$SYNCH
Checks the completion status of a system service that completes
asynchronously.
On Alpha and Integrity server systems, this service accepts 64-bit
addresses.
Format
SYS$SYNCH [efn] ,[iosb]
C Prototype
int sys$synch (unsigned int efn, struct _iosb *iosb);
Arguments
efn
OpenVMS usage: |
ef_number |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
Number of the event flag specified in the call to the system service
whose completion status is to be checked by $SYNCH. The
efn argument is a longword containing this number;
however, $SYNCH uses only the low-order byte.
iosb
OpenVMS usage: |
io_status_block |
type: |
quadword (unsigned) |
access: |
read only |
mechanism: |
by 32- or 64-bit reference (Alpha and Integrity
servers) |
I/O status block specified in the call to the system service whose
completion status is to be checked by $SYNCH. The iosb
argument is the address of this quadword I/O status block.
Description
The Synchronize service checks the completion status of a system
service that completes asynchronously. The service whose completion
status is to be checked must have been called with the
efn and iosb arguments specified,
because the $SYNCH service uses the event flag and I/O status block of
the service to be checked.
This service performs a true test for the completion of an asynchronous
service, such as $GETJPI. $SYNCH operates in the following way:
- When called, $SYNCH waits (by calling $WAITFR) for the event flag
to be set.
- When the event flag is set, $SYNCH checks to see whether the I/O
status block is nonzero. If it is nonzero, then the asynchronous
service has completed, and $SYNCH returns to the caller.
- If the I/O status block is the value 0, then the asynchronous
service has not yet completed and the event flag was set by the
completion of an event not associated with the completion of $GETJPI.
In this case, $SYNCH clears the event flag (by calling $CLREF) and
waits again (by calling $WAITFR) for the event flag to be set,
repeating this cycle until the I/O status block is nonzero.
The $SYNCH service always sets the specified event flag when it returns
to the caller. This ensures that different program segments can use the
same event flag without conflicting. For example, assume that calls to
$GETJPI and $GETSYI both specify the same event flag and that $SYNCH is
called to check for the completion of $GETJPI. If $GETSYI sets the
event flag, $SYNCH clears the flag and waits for $GETJPI to set it.
When $GETJPI sets the flag, $SYNCH returns to the caller and sets the
event flag. In this way, the flag set by $GETSYI is not lost, and
another call to $SYNCH will show the completion of $GETSYI.
The $SYNCH service is useful when a program calls an asynchronous
service but must perform some other work before testing for the
completion of the asynchronous service. In this case, the program
should call $SYNCH at that point when it must know that the service has
completed and when it is willing to wait for the service to actually
complete.
When a program calls an asynchronous service (for example, $QIO) and
actually waits in line (by calling $WAITFR) for its completion without
performing any other work, you could improve that program by calling
the synchronous form of that service (for example, $QIOW). The
synchronous services such as $QIOW execute code that checks for the
true completion status in the same way that $SYNCH does.
Required Access or Privileges
None
Required Quota
None
Condition Values Returned
SS$_NORMAL
|
The service completed successfully. The asynchronous service has
completed, and the I/O status block contains the condition value
describing the completion status of the asynchronous service.
|
SS$_ACCVIO
|
The I/O status block cannot be read by the caller.
|
SS$_ILLEFC
|
An illegal event flag was specified.
|
SS$_UNASEFC
|
The process is not associated with the cluster containing the specified
event flag.
|
$TIMCON
Converts 128-bit Coordinated Universal Time (UTC) format to 64-bit
system format or 64-bit system format to 128-bit UTC format based on
the value of the convert flag.
On Alpha and Integrity server systems, this service accepts 64-bit
addresses.
Format
SYS$TIMCON [smnadr] ,[utcadr] ,cvtflg
C Prototype
int sys$timcon (struct _generic_64 *smnadr, unsigned int *utcadr [4],
unsigned long int cvtflg);
Arguments
smnadr
OpenVMS usage: |
date_time |
type: |
quadword (unsigned) |
access: |
read/write |
mechanism: |
by 32- or 64-bit reference (Alpha and Integrity
servers) |
The 64-bit system format value that $TIMCON will use in the conversion.
The smnadr argument will be read from or written to
based on the value of the cvtflg argument. The
smnadr is required when converting UTC time to 64-bit
system format.
utcadr
OpenVMS usage: |
coordinated universal time |
type: |
utc_date_time |
access: |
read/write |
mechanism: |
by 32- or 64-bit reference (Alpha and Integrity
servers) |
UTC time value that $TIMCON will use in the conversion. The
utcadr argument will be read from or written to based
on the value of the cvtflg argument. The
utcadr argument is required when converting 64-bit
system format to UTC time.
cvtflg
OpenVMS usage: |
conversion flag |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
A longword indicating the direction of the conversion. If the
cvtflg value is 0, UTC time is converted to 64-bit
system value. If the cvtflg value is 1, 64-bit system
format is converted to UTC time.
Description
The Time Converter service converts 64-bit system format time to UTC
format, and vice versa.
When converting a 64-bit system format time to 128-bit UTC format time,
the time zone of the local system is used.
When converting a 128-bit UTC format time to a 64-bit system time, the
time zone differential factor encoded in the 128-bit buffer is used.
Condition Values Returned
SS$_NORMAL
|
The service completed successfully.
|
SS$_INVTIME
|
The input time cannot be converted because its value is out of the
legal range or is a delta time, or the UTC is of an illegal format.
|
$TRANS_EVENT
Forces a transaction state change for a transaction in which there is
at least one RM participant that has set the DDTM$M_COORDINATOR flag.
Format
SYS$TRANS_EVENT [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,tid ,rm_id
,tx_event
C Prototype
int sys$trans_event (unsigned int efn, unsigned int flags, struct _iosb
*iosb, void (*astadr)(__unknown_params), int astprm, unsigned int tid
[4], unsigned int rm_id, unsigned int tx_event);
Arguments
efn
OpenVMS usage: |
ef_number |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
Number of the event flag that is set when the service completes. If
this argument is omitted, event flag 0 is used.
flags
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
Reserved to HP. This argument must be zero.
iosb
OpenVMS usage: |
io_status_block |
type: |
quadword (unsigned) |
access: |
write only |
mechanism: |
by reference |
The I/O status block in which the completion status of the service is
returned as a condition value. See the Condition Values Returned
section.
The outcome of the state change is indicated by the contents of the I/O
status block.
The following diagram shows the structure of the I/O status block:
astadr
OpenVMS usage: |
ast_procedure |
type: |
procedure entry mask |
access: |
call without stack unwinding |
mechanism: |
by reference |
The AST routine that is executed when the service completes, if
SS$_NORMAL is returned in R0. The astadr argument is
the address of the entry mask of this routine. The routine is executed
in the same access mode as that of the caller of the $TRANS_EVENT
service.
astprm
OpenVMS usage: |
user_arg |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
The AST parameter passed to the AST routine specified by the
astadr argument.
tid
OpenVMS usage: |
trans_id |
type: |
octaword (unsigned) |
access: |
read only |
mechanism: |
by reference |
The identifier (TID) of transaction to which the state change is to be
applied.
rm_id
OpenVMS usage: |
identifier |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
The identifier of the Resource Manager identifier (RMI) with which the
coordinating Resource Manager (RM) participant is associated.
tx_event
OpenVMS usage: |
identifier |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
The operation to be performed on the transaction. The permitted values
and the possible successful outcomes are listed in Table SYS-58.
Description
The $TRANS_EVENT system service is used by coordinating RM participants
to change the state of transactions.
Preconditions for the successful completion of $TRANS_EVENT include:
- The caller must have the SYSPRV privilege or be in either executive
or kernel mode.
- The RM participant must have set the DDTM$M_COORDINATOR flag on the
call to $JOIN_RM. Coordinating resource managers cannot join the
transaction by calling $ACK_EVENT.
- The access mode of the caller must be the same as or more
privileged than that of the transaction within the process.
Table SYS-58 Completion Semantics of the$TRANS_EVENT Service
Operation |
Completion Semantics |
DDTM$K_TX_PREPARE
|
A vote has been received from each RM participant and synchronized
branch.
The status code returned is the combination of the individual
votes. The possible values are:
- SS$_PREPARED. All participants are ready to commit the transaction.
Thus all RM participants voted "yes" and all synchronized branches
called $END_BRANCH. Note that a read-only vote from an RM participant
is counted as a "yes" vote but this response is not returned if all RM
participants voted read-only. Unsynchronized branches are assumed to be
willing to commit. A further operation (commit or abort) is necessary
to complete the transaction.
- SS$_FORGET. All participants are ready to permit the transaction to
be committed but do not require any further notification of transaction
events. Thus no further $TRANS_EVENT calls are required for this
transaction. Possible reasons for this response are:
- All RM participants voted read-only.
- The specified transaction (TID) did not exist.
- The specified transaction was already prepared (Cyclic graph).
- SS$_VETO. The transaction cannot be committed. No further
$TRANS_EVENT calls are required for this transaction. One reason why
the transaction cannot commit, an abort reason code, is placed in the
second longword of the
iosb argument.
|
DDTM$K_TX_COMMIT
|
The only status code returned on successful completion is SS$_FORGET.
Sufficient information has been hardened by the DECdtm transaction
manager to commit the transaction.
|
DDTM$K_TX_ABORT
|
The only status code returned on successful completion is SS$_FORGET.
Abort processing has been initiated.
|
|