VMS Help  —  System Services
    This help category provides an overview and the format of each of
    the system services. The C function prototypes are available only
    on OpenVMS Alpha and Integrity server systems.

    System services provide basic operating system functions,
    interprocess communication, and various control resources.

1  –  $ABORT TRANS

    Ends a transaction by aborting it.

    Format

      SYS$ABORT_TRANS  [efn] ,[flags] ,iosb [,[astadr] ,[astprm]

                       ,[tid] ,[reason] ,[bid]]

    C Prototype

      int sys$abort_trans  (unsigned int efn, unsigned int flags,

                           struct _iosb *iosb,...);

1.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for these option
    flags, described in $ABORT_TRANS Option Flags. All undefined bits
    must be 0. If this argument is omitted, no flags are used.

    Table SYS-1 $ABORT_TRANS Option Flags

    Flag           Description

    DDTM$M_        Set this flag to indicate that the service should
    NOWAIT         return to the caller without waiting for final
                   cleanup. Note that $ABORT_TRANSW with the DDTM$M_
                   NOWAIT flag set is not equivalent to $ABORT_TRANS.
                   $ABORT_TRANS returns when the operation has been
                   queued. The former does not return until the
                   operation has been initiated. The latter returns
                   as soon as the operation has been queued. The
                   full range of status values may be returned from a
                   nowait call.
    DDTM$M_SYNC    Set this flag to specify that successful
                   synchronous completion is to be indicated by
                   returning SS$_SYNCH. When SS$_SYNCH is returned,
                   the AST routine is not called, the event flag is
                   not set, and the I/O status block is not filled
                   in.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block in which the following information is returned:

    o  The completion status of the service, returned as a condition
       value.

    o  An abort reason code that gives one reason why the transaction
       aborted, if the completion status of the service is SS$_
       NORMAL.

       Note that, if there are multiple reasons why the transaction
       aborted, the abort reason code returned in the I/O status
       block might not be the same as the abort reason code passed
       in the reason argument. The DECdtm transaction manager returns
       one of the reasons in the I/O status block. It may return
       different reasons to different branches of the transaction.

       For example, if the call to $ABORT_TRANS gives DDTM$_ABORTED
       as the reason and the transaction timeout expires at about the
       same time as the call to $ABORT_TRANS, then either the DDTM$_
       TIMEOUT or DDTM$_ABORTED reason code can be returned in the
       I/O status block.

    The $DDTMMSGDEF macro defines symbolic names for abort reason
    codes, which are defined in Abort Reason Codes:

    Table SYS-2 Abort Reason Codes

    Symbolic Name       Description

    DDTM$_ABORTED       The application aborted the transaction
                        without giving a reason.
    DDTM$_COMM_FAIL     A communications link failed.
    DDTM$_INTEGRITY     A resource manager integrity constraint check
                        failed.
    DDTM$_LOG_FAIL      A write operation to the transaction log
                        failed.
    DDTM$_ORPHAN_       An unauthorized branch caused failure.
    BRANCH
    DDTM$_PART_SERIAL   A resource manager serialization check
                        failed.
    DDTM$_PART_TIMEOUT  The timeout specified by a resource manager
                        expired.
    DDTM$_SEG_FAIL      A process or image terminated.
    DDTM$_              A DECdtm transaction manager serialization
    SERIALIZATION       check failed.
    DDTM$_SYNC_FAIL     The transaction was not globally
                        synchronized; an authorized branch was not
                        added to the transaction.
    DDTM$_TIMEOUT       The timeout specified on $START_TRANS
                        expired.
    DDTM$_UNKNOWN       The reason is unknown.
    DDTM$_VETOED        A resource manager was unable to commit the
                        transaction.

    To view the I/O status block structure diagram, see the VSI
    OpenVMS System Services Reference Manual.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    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
    access mode of the caller.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter that is passed to the AST routine specified by the
    astadr argument.

 tid

    OpenVMS usage:trans_id
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    Identifier of the transaction to be aborted.

    If this argument is omitted, $ABORT_TRANS aborts the default
    transaction of the calling process.

 reason

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Code that gives the reason why the application is aborting the
    transaction. The $DDTMMSGDEF macro defines symbolic names for
    abort reason codes. See the iosb item code for a list of abort
    reason codes.

    The default value for this argument is DDTM$_ABORTED.

 bid

    OpenVMS usage:branch_id
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    The identifier (BID) of the branch that is aborting the
    transaction.

    The default value of this argument is zero, which is the BID of
    the branch that started the transaction.

2  –  $ABORT TRANSW

    Ends a transaction by aborting it.

    $ABORT_TRANSW always waits for the request to complete before
    returning to the caller. Other than this, it is identical to
    $ABORT_TRANS.

    Format

      SYS$ABORT_TRANSW  [efn] ,[flags] ,iosb [,[astadr] ,[astprm]

                        ,[tid] ,[reason] ,[bid]]

    C Prototype

      int sys$abort_transw  (unsigned int efn, unsigned int flags,

                            struct _iosb *iosb,...);

3  –  $ACK EVENT

    Acknowledges an event reported to a Resource Manager (RM)
    participant or Resource Manager instance (RMI).

    Format

      SYS$ACK_EVENT  [flags] ,report_id ,report_reply [,[reason]

                     ,[beftime] ,[afttime] ,[part_name]

                     ,[rm_context], [timout]]

    C Prototype

      int sys$ack_event  (unsigned int flags, unsigned int report_id,

                         int report_reply,...);

3.1  –  Arguments

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Reserved to VSI. This argument must be zero.

 report_id

    OpenVMS usage:identifier
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The identifier of the event report being acknowledged by this
    call to $ACK_EVENT.

 report_reply

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Acknowledgment code appropriate to the event being acknowledged
    by this call to $ACK_EVENT. The following tables give the valid
    acknowledgment codes for the various events. The title of each
    table gives the event, and in brackets, its event code. The event
    code is passed in the event report block (see $DECLARE_RM).

    Acknowledgment of prepare or one-phase commit events gives a
    vote on the outcome of the transaction-either to commit or to
    abort. The tables for these events have a column labeled "Vote".
    A "yes" vote means that the RM participant wants to commit the
    transaction, while a "no" vote means that the RM participant
    cannot commit. The transaction will be committed only if all
    participants vote "yes".

    Table SYS-3 Replies to an Abort Event Report (DDTM$K_ABORT)

    report_
    reply       Description

    SS$_FORGET  RM participant guarantees that the effects of its
                transaction operations will never be detected by any
                transaction that commits.

                Side effects:

                On successful completion of the call to $ACK_EVENT,
                the RM participant is removed from the transaction,
                and the ASTLM quota consumed by the call to $JOIN_RM
                or $ACK_EVENT that added it to the transaction is
                returned.

                DECdtm also releases any application threads that are
                waiting for the transaction to end (necessary but not
                sufficient condition). Any call to $END_TRANS, $END_
                BRANCH, or $ABORT_TRANS on a node for a transaction
                whose outcome is abort is not allowed to complete
                until after all abort event reports delivered to RM
                participants on that node have been acknowledged.

    Table SYS-4 Replies to a Commit Event Report (DDTM$K_COMMIT)

    report_
    reply       Description

    SS$_FORGET  Allows the DECdtm transaction manager to forget the
                RM participant.

                The RM participant must not give this reply until it
                has either:

                o  Completed the commit processing for its
                   transaction operations.

                o  Safely stored enough information to ensure that
                   this commit processing will inevitably complete
                   (for example, logged that the transaction has
                   committed in a private log).

                If the RM participant is associated with a
                nonvolatile RMI, then at some point after receiving
                this reply, the DECdtm transaction manager will
                delete the name of the RM participant from the
                transaction database. After SS$_FORGET replies
                have been given for all the RM participants in
                a transaction, that transaction ceases to be
                recoverable (some time after all these replies
                are given, the transaction is deleted from the
                transaction database). A subsequent call to $GETDTI
                can lead the resource manager to wrongly assume that
                the transaction had aborted.

                If there is a failure after this reply is sent, a
                recoverable resource manager must be able to rely
                on its own safely stored information to determine if
                any of the commit processing associated with the RM
                participant needs to be restarted.

                Side effects:

                On successful completion of the call to $ACK_EVENT,
                the RM participant is removed from the transaction,
                and the ASTLM quota consumed by the call to $JOIN_RM
                or $ACK_EVENT that added it to the transaction is
                returned.

                DECdtm also releases any application threads that
                are waiting for the transaction to end (necessary but
                not sufficient condition). Any call to $END_TRANS or
                $END_BRANCH on a node for a transaction whose outcome
                is commit cannot complete successfully until all
                commit event reports delivered to RM participants on
                that node have been acknowledged.
    SS$_        The RM participant requires that the DECdtm
    REMEMBER    transaction manager stores its name and the outcome
                of the transaction (commit) in the transaction
                database. Note that for an RM participant associated
                with a volatile RMI, SS$_REMEMBER is treated in the
                same way as SS$_FORGET.

                Side effects:

                On successful completion of the call to $ACK_EVENT,
                the RM participant is removed from the transaction,
                and the ASTLM quota consumed by the call to $JOIN_RM
                or $ACK_EVENT that added it to the transaction is
                returned.

                DECdtm also releases any application threads that
                are waiting for the transaction to end (necessary but
                not sufficient condition). Any call to $END_TRANS or
                $END_BRANCH on a node for a transaction whose outcome
                is commit cannot complete successfully until all
                commit event reports delivered to RM participants on
                that node have been acknowledged.

    Table SYS-5 Replies to a One-phase Commit Event Report (DDTM$K_
                ONE_PHASE_COMMIT)

    report_
    reply       Vote  Meaning

    SS$_NORMAL  Yes   The RM participant decided to commit the
                      transaction, and has safely stored enough
                      information to be able to keep this guarantee
                      even if there is a recoverable failure, caused,
                      for example, by a node crash.

                      The DECdtm transaction manager does not log any
                      information about the transaction.

                      Side effects:

                      On successful completion of the call to $ACK_
                      EVENT, the RM participant is removed from the
                      transaction, the transaction is ended, and the
                      ASTLM quota consumed by the call to $JOIN_RM or
                      $ACK_EVENT that added the RM participant to the
                      transaction is returned.

                      DECdtm also allows the call to $END_TRANS to
                      complete (necessary and sufficient condition).
    SS$_        Yes   RM participant decided not to accept the
    PREPARED          opportunity to decide the outcome of the
                      transaction. It has performed only prepare
                      processing for the transaction and requires
                      full two-phase commit processing. This is
                      equivalent to voting SS$_PREPARED on a prepare
                      event.

                      The RM participant can either commit or
                      abort the operations of the transaction, and
                      guarantees that it will abide by the DECdtm
                      transaction manager's decision on whether the
                      transaction (and therefore these operations)
                      are committed or aborted.

                      A recoverable resource manager must not give
                      this vote until it has safely stored enough
                      information to be able to keep this guarantee
                      even if there is a recoverable failure, caused,
                      for example, by a node crash.

                      The DECdtm transaction manager will decide
                      the outcome of the transaction, then inform
                      the resource manager of the decision with
                      a commit or abort event report delivered
                      to the RM participant (assuming that it is
                      associated with an RMI that requested these
                      event reports).

                      Note that an application or other failure can
                      cause the DECdtm transaction manager to decide
                      to abort the transaction.
    SS$_VETO    No    RM participant requires that the transaction
                      be aborted and guarantees that the effects of
                      that transaction on its resources will never
                      be detected by any transaction that commits.
                      The reason argument gives the reason why the RM
                      participant is aborting the transaction.

                      The DECdtm transaction manager does not log any
                      information about the transaction.

                      Side effects:

                      On successful completion of the call to $ACK_
                      EVENT, the RM participant is removed from the
                      transaction, the transaction is ended, and the
                      ASTLM quota consumed by the call to $JOIN_RM or
                      $ACK_EVENT that added the RM participant to the
                      transaction is returned.

                      DECdtm also allows the call to $END_TRANS to
                      complete (necessary and sufficient condition).

    Table SYS-6 Replies to a Prepare Event Report (DDTM$K_PREPARE)

    report_
    reply       Vote  Meaning

    SS$_FORGET  Yes   This is called a read-only vote. It is an
                      optimization that allows an RM participant
                      to vote "yes" and not receive a commit or abort
                      event report.

                      Side effects:

                      On successful completion of the call to $ACK_
                      EVENT, the RM participant is removed from the
                      transaction, and the ASTLM quota consumed by
                      the call to $JOIN_RM or $ACK_EVENT that added
                      it to the transaction is returned.
    SS$_        Yes   The RM participant can either commit or
    PREPARED          abort the operations of the transaction, and
                      guarantees that it will abide by the DECdtm
                      transaction manager's decision on whether the
                      transaction (and therefore these operations)
                      are committed or aborted. In other words, the
                      RM participant guarantees that the behavior
                      of its resources will never be inconsistent
                      with that decision, insofar as that behavior is
                      detected by any transactions that commit.

                      A recoverable resource manager must not give
                      this vote until it has safely stored enough
                      information to be able to keep this guarantee
                      even if there is a recoverable failure, caused,
                      for example, by a node crash.

                      The DECdtm transaction manager will decide
                      the outcome of the transaction, then inform
                      the resource manager of the decision with a
                      commit or abort event report delivered to the
                      RM participant (assuming that it is associated
                      with an RMI that requested these event reports)
                      or, in the event of a failure, using the
                      resource manager's recovery mechanism.
    SS$_VETO    No    RM participant requires that the transaction
                      be aborted. The reason argument gives the
                      reason why the RM participant is aborting the
                      transaction.

                      The RM participant guarantees that the effects
                      of its transaction operations will never be
                      detected by any transaction that commits.

                      Side effects:

                      The DECdtm transaction manager will deliver an
                      abort event report for the transaction to the
                      RM participant.

    Table SYS-7 Replies to a Default Transaction Started Event Report
                (DDTM$K_STARTED_DEFAULT)

    report_
    reply       Description

    SS$_NORMAL  Adds a new RM participant running in the calling
                process to the transaction to which a new branch is
                being added. The new RM participant is associated
                with the RMI to which the default transaction started
                event was reported. The part_name and rm_context
                arguments specify the name of the new RM participant
                and its context.

                Side effects:

                The postconditions on successful completion of the
                call to $ACK_EVENT are the same as those for $JOIN_
                RM.

                DECdtm also allows the call to $START_TRANS or
                $START_BRANCH that is adding the new branch to
                complete (necessary but not sufficient condition).
                That call cannot complete successfully until all
                default transaction-started event reports delivered
                to RMIs in that process have been acknowledged.
    SS$_FORGET  Acknowledgment of the event report.

                Side effects:

                DECdtm allows the call to $START_TRANS or $START_
                BRANCH that is adding the new branch to complete
                (necessary but not sufficient condition).

                That call cannot complete successfully until all
                default transaction-started event reports delivered
                to RMIs in that process have been acknowledged.

    Table SYS-8 Replies to a Nondefault Transaction Started Event
                Report (DDTM$K_STARTED_NONDEFAULT)

    report_
    reply       Description

    SS$_NORMAL  Adds a new RM participant running in the calling
                process to the transaction to which a new branch is
                being added. The new RM participant is associated
                with the RMI to which the nondefault transaction
                started event was reported. The part_name and rm_
                context arguments specify the name of the new RM
                participant and its context.

                Side effects:

                The postconditions on successful completion of the
                call to $ACK_EVENT are the same as those for $JOIN_
                RM.

                DECdtm also allows the call to $START_TRANS or
                $START_BRANCH that is adding the new branch to
                complete (necessary but not sufficient condition).
                That call cannot complete successfully until all
                default transaction-started event reports delivered
                to RMIs in that process have been acknowledged.
    SS$_FORGET  Acknowledgment of the event report.

                Side effects:

                DECdtm allows the call to $START_TRANS or $START_
                BRANCH that is adding the new branch to complete
                (necessary but not sufficient condition).

                That call cannot complete successfully until all
                default transaction-started event reports delivered
                to RMIs in that process have been acknowledged.

 reason

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    A code that gives the reason why the RM participant is aborting
    the transaction.

    This argument is ignored unless the value in the report_reply
    argument is SS$_VETO and the event being acknowledged is a
    prepare or one-phase commit event.

    The $DDTMMSGDEF macro defines symbolic names for abort reason
    codes described in Abort Reason Codes. The default value for this
    argument is DDTM$_VETOED.

    Table SYS-9 Abort Reason Codes

    Symbolic Name      Description

    DDTM$_ABORTED      Application aborted the transaction without
                       giving a reason.
    DDTM$_COMM_FAIL    Transaction aborted because a communications
                       link failed.
    DDTM$_INTEGRITY    Transaction aborted because a resource manager
                       integrity constraint check failed.
    DDTM$_LOG_FAIL     Transaction aborted because an attempt to
                       write to the transaction log failed.
    DDTM$_ORPHAN_      Transaction aborted because it had an
    BRANCH             unauthorized branch.
    DDTM$_PART_SERIAL  Transaction aborted because a resource manager
                       serialization check failed.
    DDTM$_PART_        Transaction aborted because a resource manager
    TIMEOUT            timeout expired.
    DDTM$_SEG_FAIL     Transaction aborted because a process or image
                       terminated.
    DDTM$_             Transaction aborted because a serialization
    SERIALIZATION      check failed.
    DDTM$_SYNC_FAIL    Transaction aborted because a branch had been
                       authorized for it but had not been added to
                       it.
    DDTM$_TIMEOUT      Transaction aborted because its timeout
                       expired.
    DDTM$_UNKNOWN      Transaction aborted; reason unknown.
    DDTM$_VETOED       Transaction aborted because a resource manager
                       was unable to commit it.

 beftime

    OpenVMS usage:utc_date_time
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    Reserved to VSI.

 afttime

    OpenVMS usage:utc_date_time
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    Reserved to VSI.

 part_name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    The name of the new RM participant that is added to the
    transaction by this call to $ACK_EVENT. This argument is ignored
    unless the event being acknowledged is of type Transaction
    Started and the value of the report_reply argument is SS$_NORMAL.

    If this argument is omitted (the default) or its value is zero,
    the name of the new RM participant is the same of that of the RMI
    with which it is associated.

    The string passed in this argument must be no longer than 32
    characters.

    To ensure smooth operation in a mixed-network environment,
    refer to the chapter entitled Managing DECdtm Services in the
    VSI OpenVMS System Manager's Manual, for information on defining
    node names.

 rm_context

    OpenVMS usage:userarg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The context associated with the new RM participant. This argument
    is ignored unless the value of the report_reply argument is SS$_
    NORMAL, and the event being acknowledged is of type Transaction
    Started.

    The context of the new RM participant is passed in the event
    reports subsequently delivered to that RM participant.

    The context is used to pass information specific to the new
    RM participant from the main line code into the event handler
    specified in the call to $DECLARE_RM that created the RMI with
    which the new RM participant is associated.

    If this argument is omitted (the default) or is zero, the context
    associated with the new RM participant is the same of that of the
    RMI with which it is associated.

 timout

    OpenVMS usage:date_time
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Reserved to VSI.

4  –  $ACM

    The $ACM service provides a common interface to all functions
    supported by the Authentication and Credential Management (ACM)
    authority.

    The caller must specify the function code and any applicable
    function modifiers and item codes for the requested operation.

    The $ACM service completes asynchronously; for synchronous
    completion, use the $ACMW form of the service.

    Format

      SYS$ACM  [efn], func, [context], itmlst, acmsb, [astadr],

               [astprm]

    C Prototype

      int sys$acm  (unsigned int efn, unsigned int func, struct

                   _acmecb **context, void *itmlst, struct _acmesb

                   *acmsb, void (*astadr)(__unknown_params), int

                   astprm);

4.1  –  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 $ACM request
    completes. The efn argument is a longword containing this number;
    however, $ACM uses only the low-order byte.

    When the request is queued, $ACM clears the specified event flag.
    Then, when the request completes, the specified event flag is
    set.

 func

    OpenVMS usage:function_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Function code and modifiers specifying the operation that $ACM
    is to perform. The func argument is a longword containing the
    function code, logically 'OR'ed together with the modifiers.
    For some programming languages this may be defined as a record
    structure.

    Function codes have symbolic names of the following format:

       ACME$_FC_code

    Function modifiers have symbolic names of the following format:

       ACME$M_modifier

    The language support mechanisms specific to each programming
    language define the names of each function code and modifier.
    Only one function code can be specified across a dialogue
    sequence of related calls to $ACM.

    Most function codes require or allow additional information to
    be passed in the call. This information is passed using the
    itmlst argument, which specifies a list of one or more item
    descriptors. Each item descriptor in turn specifies an item code,
    which either controls the action to be performed, or requests
    specific information to be returned.

 context

    OpenVMS usage:context
    type:         longword pointer (signed)
    access:       modify
    mechanism:    by 32- or 64-bit reference
    Address of a longword to receive the 32-bit address of an ACM
    communications buffer.

    $ACM uses the ACM communications buffer for dialogue functions
    (ACME$_FC_AUTHENTICATE_PRINCIPAL and ACME$_FC_CHANGE_PASSWORD)
    to request that the caller provide additional information in a
    subsequent call.

    The context argument on a continuation call must contain the
    same ACM communications buffer address returned by $ACM on the
    previous call. The itmlst provided on a continuation call must
    contain entries to fulfill each of the input item set entries in
    the ACM communications buffer returned by $ACM on the previous
    call.

    The longword specified must contain a -1 on the first call in a
    dialogue sequence of related calls. If additional information is
    required to complete the request, $ACM returns a pointer in the
    context argument to an ACM communications buffer that describes
    the information. To continue with the particular operation call,
    $ACM again specifying the function argument previously provided.

    The ACM communications buffer is user readable, but not user
    writable. It consists of a structure header, an item set, and
    a string buffer segment. The item set is an array of item set
    entries, each describing an item of information that is needed
    to complete the request or information that can be reported to a
    human user.

    $ACM presents the item set entries in the logical presentation
    order for a sequential interface, so calling programs that
    give a sequential view to the user should process the item set
    entries in that $ACM order. More advanced GUI programs may use
    simultaneous presentation with distinctive placement for various
    message types.

    To view the diagram of the overall format of an ACM
    communications buffer, see the VSI OpenVMS System Services
    Reference Manual.

    To view the format of an item set entry and descriptor table, see
    the VSI OpenVMS System Services Reference Manual.

 itmlst

    OpenVMS usage:32-bit item_list_3 or 64-bit item_list_64b
    type:         longword (unsigned) for 32-bit; quadword (unsigned)
                  for 64-bit
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Item list specifying information to be used in performing
    the function and requesting information to be returned. The
    itmlst argument is the 32- or 64-bit address of a list of item
    descriptors, describing an item of information. An item list in
    32-bit format is terminated by a longword of 0; an item list in
    64-bit format is terminated by a quadword of 0.

    The item list can be composed of up to 32 segments, connected by
    a chain item (using item code ACME$_CHAIN) at the end of all but
    the last segment pointing to the start of the next segment. All
    item descriptors in a single segment must be of the same format
    (32-bit or 64-bit), but a single item list can contain a mixture
    of segments composed of 32-bit item descriptors and segments
    composed of 64-bit item descriptors.

    To view the 32-bit and 64-bit item code diagrams and descriptor
    fields tables, see the VSI OpenVMS System Services Reference
    Manual.

    In an item list, no ACME-specific item codes can be included in
    an item list until the ACME Context has been set with one of the
    following codes:

       ACME$_CONTEXT_ACME_ID
       ACME$_CONTEXT_ACME_NAME

    You can also implicitly set the ACME Context with one of the
    following codes:

       ACME$_TARGET_DOI_ID
       ACME$_TARGET_DOI_NAME

    These codes are described in the VSI OpenVMS Programming Concepts
    Manual.

 acmsb

    OpenVMS usage:acm_status_block
    type:         octaword array of 4 longwords
    access:       write only
    mechanism:    by 32- or 64-bit reference
    ACM status block that is to receive the final completion status.
    The acmsb argument is the 32- or 64-bit address of the ACM status
    block.

    To view the structure of an ACM status block and descriptor field
    definitions, see the VSI OpenVMS System Services Reference Manual.

    Upon request initiation, $ACM sets the value of all fields
    within the ACM status block to 0. When the requested operation
    completes. The $ACM service writes condition values into the
    ACMESB$L_STATUS and ACMESB$L_SECONDARY_STATUS fields.

    If the status in the ACMESB$L_STATUS field is ACME$_AUTHFAILURE,
    that is the only result that should be displayed or otherwise
    made known to a user. The status in ACMESB$L_SECONDARY_STATUS
    (when the caller has the SECURITY privilege, or is calling from
    kernel or executive mode) contains the detailed reason for the
    failure, which may be used for purposes that do not disclose the
    code to the user, such as the process termination code supplied
    to $DELPRC (but not the image exit code supplied to $EXIT).

    Otherwise, the status in ACMESB$L_SECONDARY_STATUS should be
    considered as subsidiary to that in ACMESB$L_STATUS and used to
    form a chained message, unless the two cells contain identical
    values.

    In either case, the caller of $ACM[W] can rely on the success bit
    (bit 0) of the ACMESB$L_STATUS and the ACMESB$L_SECONDARY_STATUS
    field having the same setting. Either both low-order bits will be
    set (success) or both will be clear (failure).

    The ACMESB$L_ACME_STATUS field is valid only when the contents
    of the ACMESB$L_ACME_ID field are nonzero, indicating which ACME
    agent supplied the (possibly zero) value in ACMESB$L_ACME_STATUS.

    There is one special format for such data in ACMESB$L_ACME_
    STATUS. If $ACM rejects the request because of a bad entry in
    the item list, then ACMESB$L_STATUS contains one of the following
    codes:

    SS$_BADPARAM  Incorrect contents for the item code
    SS$_          Incorrect item code for the function
    BADITMCOD
    SS$_          Incorrect length for the item code
    BADBUFLEN

    If ACMESB$L_STATUS contains one of the listed returns, then
    ACME$L_ACME_STATUS contains the item code from the incorrect
    item, which is an aid to debugging.

    In all other cases, the value delivered in ACME$L_ACME_STATUS is
    specific to the ACME agent that failed the request. An ACME agent
    can return a longword value that indicates additional information
    about the operation. $ACM writes this value in the ACMESB$L_ACME_
    STATUS field of the ACM status block.

    In these cases, you can expect the success of a valid value (one
    where ACMESB$L_ACME_ID is not zero) in field ACMESB$L_ACME_STATUS
    to match the "success" bits (bit 0) in fields ACMESB$L_STATUS and
    ACMESB$L_SECONDARY_STATUS, although what constitutes a "success"
    value in ACMESB$L_ACME_STATUS is subject to that interpretation
    specified for the ACME agent that set the value. In particular,
    the values in the ACMESB$L_ACME_STATUS field from certain ACME
    Agents might not be a VMS-style message code.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference
    AST service routine to be executed when $ACM completes. The
    astadr argument is the 32- or 64-bit address of this routine.
    The AST routine executes at the same access mode as the caller of
    the $ACM service.

 astprm

    OpenVMS usage:user_arg
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astprm argument. The astprm argument is the longword
    parameter.

5  –  $ACMW

    The $ACM service provides a common interface to all functions
    supported by the Authentication and Credentials Management (ACM)
    authority. The caller must specify the function code and any
    applicable function modifiers and item codes for the requested
    operation.

    The $ACM service completes asynchronously; for synchronous
    completion, use the $ACMW form of the service.

    Format

      SYS$ACMW  [efn], func, [context], itmlst, acmsb, [astadr],

                [astprm]

    C Prototype

      int sys$acmw  (unsigned int efn, unsigned int func, struct

                    _acmecb *context, void *itmlst, struct _acmesb

                    *acmsb, void (*astadr)(__unknown_params), int

                    astprm);

5.1  –  Description

    Beginning in OpenVMS Version 7.3-2, a number of functional
    changes were made to SYS$ACM[W]. In the following descriptions
    of these changes, nonprivileged processes refer to processes
    running in user mode that do not have SECURITY privilege.

    These changes are the following:

    o  Timeout processing

       Timeout processing is now enforced for nonprivileged
       processes. Othe processes can request time processing by
       specifying the ACME$M_TIMEOUT function modifier.

    o  Dialogue mode iteration limit

       Nonprivileged processes are now limited in the number of
       iterative requests they can make in a dialogue sequence of
       calls.

6  –  $ACQUIRE GALAXY LOCK (Alpha Only)

    Acquires ownership of an OpenVMS Galaxy lock.

    Note that this system service is supported only in an OpenVMS
    Alpha Galaxy environment.

    For more information about programming with OpenVMS Galaxy system
    services, see the VSI OpenVMS Alpha Partitioning and Galaxy Guide.

    Format

      SYS$ACQUIRE_GALAXY_LOCK  handle ,timeout ,flags

    C Prototype

      int sys$acquire_galaxy_lock  (unsigned __int64 lock_handle,

                                   unsigned int timeout, unsigned int

                                   flags);

6.1  –  Arguments

 handle

    OpenVMS usage:galaxy lock handle
    type:         quadword (unsigned)
    access:       read
    mechanism:    input by value
    The 64-bit lock handle that identifies the lock to be acquired.
    This value is returned by SYS$CREATE_GALAXY_LOCK.

 timeout

    OpenVMS usage:wait timeout
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    The 32-bit wait or spin timeout specified in 10 microsecond
    units. If not specified, defaults to 10 microseconds.

 flags

    OpenVMS usage:bit mask
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    Control flags defined by the GLOCKDEF macro: GLOCK$C_NOBREAK,
    GLOCK$C_NOSPIN, and GLOCK$C_NOWAIT.

7  –  $ADD BRANCH

    Authorizes a new branch to be added to a transaction.

    Format

      SYS$ADD_BRANCH  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,tid

                      ,tm_name ,bid

    C Prototype

      int sys$add_branch  (unsigned int efn, unsigned int

                          flags, struct _iosb *iosb, void

                          (*astadr)(__unknown_params), int astprm,

                          unsigned int tid [4], void *tmname,

                          unsigned int bid [4]);

7.1  –  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
    Flags specifying options for the service. The flags argument
    is a longword bit mask in which each bit corresponds to an
    option flag. The $DDTMDEF macro defines symbolic names for the
    option flag, which is described in $ADD_BRANCH Option Flag. All
    undefined bits must be 0. If this argument is omitted, no flags
    are used.

    Table SYS-10 $ADD_BRANCH Option Flag

    Flag Name   Description

    DDTM$M_     Specifies successful synchronous completion by
    SYNC        returning SS$_SYNCH. When SS$_SYNCH is returned,
                the AST routine is not called, the event flag is not
                set, and the I/O status block is not filled in.

 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.

    To view the I/O status block diagram, see the VSI OpenVMS System
    Services Reference Manual.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    The AST routine 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 $ADD_BRANCH
    service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The AST parameter that is 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 the transaction for which a new branch is
    to be authorized.

 tm_name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    The name of the node on which the new branch is running. Note
    that this cannot be a cluster alias.

    To ensure smooth operation in a mixed-network environment,
    refer to the chapter entitled Managing DECdtm Services in the
    VSI OpenVMS System Manager's Manual, for information on defining
    node names.

 bid

    OpenVMS usage:branch_id
    type:         octaword (unsigned)
    access:       write only
    mechanism:    by reference
    An octaword in which the identifier (BID) of the new branch is
    returned. No other call to $ADD_BRANCH on any node ever returns
    the same BID value.

8  –  $ADD BRANCHW

    Authorizes a new branch to be added to a transaction. $ADD_
    BRANCHW always waits for the request to complete before returning
    to the caller. Other than this, it is identical to $ADD_BRANCH.

    Format

      SYS$ADD_BRANCHW  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,tid

                       ,tm_name ,bid

    C Prototype

      int sys$add_branchw  (unsigned int efn, unsigned int

                           flags, struct _iosb *iosb, void

                           (*astadr)(__unknown_params), int astprm,

                           unsigned int tid [4], void *tmname,

                           unsigned int bid [4]);

9  –  $ADD HOLDER

    Adds a specified holder record to a target identifier.

    Format

      SYS$ADD_HOLDER  id ,holder ,[attrib]

    C Prototype

      int sys$add_holder  (unsigned int id, struct _generic_64

                          *holder, unsigned int attrib);

9.1  –  Arguments

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Target identifier granted to the specified holder when $ADD_
    HOLDER completes execution. The id argument is a longword
    containing the binary value of the target identifier.

 holder

    OpenVMS usage:rights_holder
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Holder identifier that is granted access to the target identifier
    when $ADD_HOLDER completes execution. The holder argument is the
    address of a quadword data structure that consists of a longword
    containing the holder's UIC identifier followed by a longword
    containing a value of 0.

 attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Attributes to be placed in the holder record when $ADD_HOLDER
    completes execution. The attrib argument is a longword containing
    a bit mask specifying the attributes. A holder is granted a
    specified attribute only if the target identifier has the
    attribute.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The symbols are defined
    in the system macro library ($KGBDEF). The symbolic name for each
    bit position is listed in the following table:

    Bit Position           Meaning When Set

    KGB$V_DYNAMIC          Allows holders of the identifier to remove
                           it from or add it to the process rights
                           database by using the DCL command SET
                           RIGHTS_LIST.
    KGB$V_HOLDER_HIDDEN    Prevents someone from getting a list of
                           users who hold an identifier, unless they
                           own the identifier themselves.
    KGB$V_NAME_HIDDEN      Allows holders of an identifier to have it
                           translated-either from binary to ASCII or
                           vice versa-but prevents unauthorized users
                           from translating the identifier.
    KGB$V_NOACCESS         Makes any access rights of the identifier
                           null and void. This attribute is intended
                           as a modifier for a resource identifier or
                           the Subsystem attribute.
    KGB$V_RESOURCE         Allows holders of an identifier to charge
                           disk space to the identifier. It is used
                           only for file objects.
    KGB$V_SUBSYSTEM        Allows holders of the identifier to
                           create and maintain protected subsystems
                           by assigning the Subsystem ACE to the
                           application images in the subsystem.

10  –  $ADD IDENT

    Adds the specified identifier to the rights database.

    Format

      SYS$ADD_IDENT  name ,[id] ,[attrib] ,[resid]

    C Prototype

      int sys$add_ident  (void *name, unsigned int id, unsigned int

                         attrib, unsigned int *resid);

10.1  –  Arguments

 name

    OpenVMS usage:char-string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Identifier name to be added to the rights database when $ADD_
    IDENT completes execution. The name argument is the address of
    a character-string descriptor pointing to the identifier name
    string.

    An identifier name consists of 1 to 31 alphanumeric characters,
    including dollar signs ($)  and underscores (_), and must contain
    at least one nonnumeric character. Any lowercase characters
    specified are automatically converted to uppercase.

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Identifier to be created when $ADD_IDENT completes execution.
    The id argument is a longword containing the binary value of the
    identifier to be created.

    If the id argument is omitted, $ADD_IDENT selects a unique
    available value from the general identifier space and returns
    it in resid, if it is specified.

 attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Attributes placed in the identifier's record when $ADD_IDENT
    completes execution. The attrib argument is a longword containing
    a bit mask that specifies the attributes.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The symbols are defined
    in the system macro library ($KGBDEF). The symbolic name for each
    bit position is listed in the following table:

    Bit Position           Meaning When Set

    KGB$V_DYNAMIC          Allows holders of the identifier to remove
                           it from or add it to the process rights
                           database by using the DCL command SET
                           RIGHTS_LIST.
    KGB$V_HOLDER_HIDDEN    Prevents someone from getting a list of
                           users who hold an identifier, unless they
                           own the identifier themselves.
    KGB$V_NAME_HIDDEN      Allows holders of an identifier to have it
                           translated-either from binary to ASCII or
                           vice versa-but prevents unauthorized users
                           from translating the identifier.
    KGB$V_NOACCESS         Makes any access rights of the identifier
                           null and void. This attribute is intended
                           as a modifier for a resource identifier or
                           the Subsystem attribute.
    KGB$V_RESOURCE         Allows holders of an identifier to charge
                           disk space to the identifier. It is used
                           only for file objects.
    KGB$V_SUBSYSTEM        Allows holders of the identifier to
                           create and maintain protected subsystems
                           by assigning the Subsystem ACE to the
                           application images in the subsystem.

 resid

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Identifier value assigned by the system when $ADD_IDENT completes
    execution. The resid argument is the address of a longword in
    which the system-assigned identifier value is written.

11  –  $ADD PROXY

    Adds a new proxy to, or modifies an existing proxy in, the proxy
    database.

    Format

      SYS$ADD_PROXY  rem_node ,rem_user ,local_user ,[flags]

    C Prototype

      int sys$add_proxy  (void *rem_node, void *rem_user, void

                         *local_user, unsigned int flags);

11.1  –  Arguments

 rem_node

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Remote node name of the proxy to be added to or modified in
    the proxy database. The rem_node argument is the address of a
    character-string descriptor pointing to the remote node name
    string.

    A remote node name consists of 1 to 1024 characters. No specific
    characters, format, or case are required for a remote node name
    string. Node names are converted to their DECnet for OpenVMS full
    name unless the PRX$M_BYPASS_EXPAND flag is set with the flags
    argument.

    If you specify a single asterisk (*)  for the rem_node argument,
    the user name specified by the rem_user argument on all nodes is
    served by the proxy.

 rem_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Remote user name of the proxy to be added to or modified in
    the proxy database. The rem_user argument is the address of a
    character-string descriptor pointing to the user name string.

    A remote user name consists of 1 to 32 alphanumeric characters,
    including dollar signs ($),  underscores (_), and brackets
    ([ ]).  Any lowercase characters specified are automatically
    converted to uppercase.

    The rem_user argument can be specified in user identification
    code (UIC) format ([group, member]).  Brackets are allowed only
    if the remote user name string specifies a UIC. Group and member
    are character-string representations of octal numbers with no
    leading zeros.

    If you specify a single asterisk (*)  for the rem_user argument,
    all users from the node specified by the rem_node argument
    are served by the same user names specified by the local_user
    argument.

 local_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Local user name to add to the proxy record specified by the rem_
    node and rem_user arguments in the proxy database as either
    the default user or local user. The local_user argument is the
    address of a character-string descriptor pointing to the local
    user name.

    A local user name consists of 1 to 32 alphanumeric characters,
    including dollar signs ($)  and underscores (_). Any lowercase
    characters specified are automatically converted to uppercase.

    The user name specified by the local_user argument must be a user
    name known to the local system.

    If the PRX$M_DEFAULT flag is specified in the flags argument, the
    user name specified by the local_user argument will be added to
    the proxy record in the proxy database as the default user. If a
    default user already exists for the specified proxy record, the
    default user is placed into the proxy's local user list and is
    replaced by the user name specified by the local_user argument.

    Proxy records can contain no more than 16 local users and 1
    default user. To add multiple users to a single proxy, you must
    call this service once for each local user.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Functional specification for the service and type of user the
    local_user argument represents. The flags argument is a longword
    bit mask wherein each bit corresponds to an option.

    Each flag option has a symbolic name. The $PRXDEF macro defines
    the following symbolic names:

    Symbolic Name      Description

    PRX$M_BYPASS_      The service should not convert the node name
    EXPAND             specified in the rem_node argument to its
                       corresponding DECnet for OpenVMS full name.
                       If this flag is set, it is the caller's
                       responsibility to ensure that the fully
                       expanded node name is passed into the service.

    PRX$M_DEFAULT      The user name specified by the local_user
                       argument is the default user for the proxy.
                       If this flag is not specified, the user name
                       specified by the local_user argument is added
                       to the proxy record's local user list.

    PRX$M_IGNORE_      The service should not wait for a return
    RETURN             status from the security server. No return
                       status from the server's function will be
                       returned to the caller.

12  –  $ADJSTK

    Modifies the stack pointer for a less privileged access mode.
    The operating system uses this service to modify a stack pointer
    for a less privileged access mode after placing arguments on the
    stack.

    Format

      SYS$ADJSTK  [acmode] ,[adjust] ,newadr

    C Prototype

      int sys$adjstk  (unsigned int acmode, short int adjust, void

                      *(*(newadr)));

12.1  –  Arguments

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode for which the stack pointer is to be adjusted. The
    acmode argument is this longword value. If not specified, the
    default value 0 (kernel access mode) is used.

 adjust

    OpenVMS usage:word_signed
    type:         word (signed)
    access:       read only
    mechanism:    by value
    Signed adjustment value used to modify the value specified by the
    newadr argument. The adjust argument is a signed longword, which
    is the adjustment value.

    Only the low-order word of this argument is used. The value
    specified by the low-order word is added to or subtracted
    from (depending on the sign) the value specified by the newadr
    argument. The result is loaded into the stack pointer for the
    specified access mode.

    If the adjust argument is not specified or is specified as 0, the
    stack pointer is loaded with the value specified by the newadr
    argument.

 newadr

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Value that adjust is to adjust. The newadr argument is the
    address of this longword value.

    The value specified by this argument is both read and written
    by $ADJSTK. The $ADJSTK service reads the value specified and
    adjusts it by the value of the adjust argument (if specified).
    After this adjustment is made, $ADJSTK writes the adjusted value
    back into the longword specified by newadr and then loads the
    stack pointer with the adjusted value.

    If the value specified by newadr is 0, the current value of the
    stack pointer is adjusted by the value specified by adjust. This
    new value is then written back into newadr, and the stack pointer
    is modified.

13  –  $ADJWSL

    Adjusts a process's current working set limit by the specified
    number of pagelets (on Alpha or Integrity server systems) and
    returns the new value to the caller. The working set limit
    specifies the maximum number of process pagelets that can be
    resident in physical memory.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ADJWSL  [pagcnt] ,[wsetlm]

    C Prototype

      int sys$adjwsl  (int pagcnt, unsigned int *wsetlm);

13.1  –  Arguments

 pagcnt

    OpenVMS usage:longword_signed
    type:         longword (signed)
    access:       read only
    mechanism:    by value
    Signed adjustment value specifying the number of pagelets to
    add to (if positive) or subtract from (if negative) the current
    working set limit. The pagcnt argument is this signed longword
    value.

    Note that, on Alpha and Integrity server systems, the specified
    value is rounded up to an even multiple of the CPU-specific page
    size.

    If pagcnt is not specified or is specified as 0, no adjustment
    is made and the current working set limit is returned in the
    longword specified by the wsetlm argument (if this argument is
    specified).

 wsetlm

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Value of the working set limit, in pagelets , returned by
    $ADJWSL. The wsetlm argument is the 32- or 64-bit address of
    this longword value. The wsetlm argument receives the newly
    adjusted value if pagcnt is specified, and it receives the prior,
    unadjusted value if pagcnt is not specified.

14  –  $ALLOC

    Allocates a device for exclusive use by a process and its
    subprocesses. No other process can allocate the device or assign
    channels to it until the image that called $ALLOC exits or
    explicitly deallocates the device with the Deallocate Device
    ($DALLOC) service.

    Format

      SYS$ALLOC  devnam ,[phylen] ,[phybuf] ,[acmode] ,[flags]

    C Prototype

      int sys$alloc  (void *devnam, unsigned short int *phylen, void

                     *phybuf, unsigned int acmode, unsigned int

                     flags);

14.1  –  Arguments

 devnam

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Device name of the device to be allocated. The devnam argument
    is the address of a character string descriptor pointing to the
    device name string.

    The string can be either a physical device name or a logical
    name. If it is a logical name, it must translate to a physical
    device name.

 phylen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by reference
    Word into which $ALLOC writes the length of the device name
    string for the device it has allocated. The phylen argument is
    the address of this word.

 phybuf

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    Buffer into which $ALLOC writes the device name string for the
    device it has allocated. The phybuf argument is the address of a
    character string descriptor pointing to this buffer.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be associated with the allocated device. The
    acmode argument is a longword containing the access mode.

    The most privileged access mode used is the access mode of the
    caller. Only equal or more privileged access modes can deallocate
    the device.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Longword of status flags indicating whether to interpret the
    devnam argument as the type of device to be allocated. Only one
    flag exists, bit 0. When it is set, the $ALLOC service allocates
    the first available device that has the type specified in the
    devnam argument.

    This feature is available for the following mass storage devices:

    RA60    RA80    RA81    RC25
    RCF25   RK06    RK07    RL01
    RL02    RM03    RM05    RM80
    RP04    RP05    RP06    RP07
    RX01    RX02    TA78    TA81
    TS11    TU16    TU58    TU77
    TU78    TU80    TU81

15  –  $ASCEFC

    Associates a named common event flag cluster with a process
    to execute the current image and to be assigned a process-
    local cluster number for use with other event flag services.
    If the named cluster does not exist but the process has suitable
    privilege, the service creates the cluster.

    Format

      SYS$ASCEFC  efn ,name ,[prot] ,[perm]

    C Prototype

      int sys$ascefc  (unsigned int efn, void *name, char prot, char

                      perm);

15.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of any event flag contained within the desired common
    event flag cluster. The efn argument is a longword value
    specifying this number; however, $ASCEFC uses only the low-order
    byte.

    There are two common event flag clusters: cluster 2 and cluster
    3. Cluster 2 contains event flag numbers 64 to 95, and cluster
    3 contains event flag numbers 96 to 127. (Clusters 0 and 1 are
    process-local event flag clusters.)

    To associate with common event flag cluster 2, specify any flag
    number in the cluster (64 to 95); to associate with common event
    flag cluster 3, specify any event flag number in the cluster (96
    to 127).

 name

    OpenVMS usage:ef_cluster_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the common event flag cluster with which to associate.
    The name argument is the address of a character string descriptor
    pointing to this name string.

    The character string descriptor can be 1 to 15 bytes in length,
    and each byte can be any 8-bit value.

    Common event flag clusters are accessible only to processes
    having the same UIC group number, and each such process must
    associate with the cluster using the same name (specified in the
    name argument). The operating system implicitly associates the
    group UIC number with the name, making the name unique to a UIC
    group.

    You can specify any name from 1 to 43 characters. All processes
    mapping to the same global section must specify the same name.
    Note that the name is case sensitive.

    Use of characters valid in logical names is strongly encouraged.
    Valid values include alphanumeric characters, the dollar sign
    ($), and the underscore (_). If the name string begins with an
    underscore (_), the underscore is stripped and the resultant
    string is considered to be the actual name. Use of the colon (:)
    is not permitted.

    Names are first subject to a logical name translation, after
    the application of the prefix GBL$ to the name. If the result
    translates, it is used as the name of the section. If the
    resulting name does not translate, the name specified by the
    caller is used as the name of the section.

    Additional information on logical name translations and
    on section name processing is available in the VSI OpenVMS
    Programming Concepts Manual.

 prot

    OpenVMS usage:Boolean
    type:         byte (unsigned)
    access:       read only
    mechanism:    by value
    Protection specifier that allows or disallows access to the
    common event flag cluster for processes with the same UIC group
    number as the creating process. The prot argument is a longword
    value, which is interpreted as Boolean.

    The default value 0 specifies that any process with the same UIC
    group number as the creating process can access the event flag
    cluster. The value 1 specifies that only processes having the UIC
    of the creating process can access the event flag cluster.

    When the prot argument is 1, all access to the Group category is
    denied.

    The process must have associate access to access an existing
    common event flag cluster.

 perm

    OpenVMS usage:Boolean
    type:         byte (unsigned)
    access:       read only
    mechanism:    by value
    Permanent specifier that marks a common event flag cluster as
    either permanent or temporary. The perm argument is a longword
    value, which is interpreted as Boolean.

    The default value 0 specifies that the cluster is temporary. The
    value 1 specifies that the cluster is permanent.

16  –  $ASCTIM

    Converts an absolute or delta time from 64-bit system time format
    to an ASCII string.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ASCTIM  [timlen] ,timbuf ,[timadr] ,[cvtflg]

    C Prototype

      int sys$asctim  (unsigned short int *timlen, void *timbuf,

                      struct _generic_64 *timadr, char cvtflg);

16.1  –  Arguments

 timlen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Length (in bytes) of the ASCII string returned by $ASCTIM.
    The timlen argument is the the 32- or 64-bit address of a word
    containing this length.

 timbuf

    OpenVMS usage:time_name
    type:         character-coded text string
    access:       write only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Buffer into which $ASCTIM writes the ASCII string. The timbuf
    argument is the 32- or 64-bit address of a character string
    descriptor pointing to the buffer.

    The buffer length specified in the timbuf argument, together with
    the cvtflg argument, controls what information is returned.

 timadr

    OpenVMS usage:date_time
    type:         quadword
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Time value that $ASCTIM is to convert. The timadr argument is
    the 32- or 64-bit address of this 64-bit time value. A positive
    time value represents an absolute time. A negative time value
    represents a delta time. If you specify a delta time, it must be
    less than 10,000 days.

    If timadr is not specified or is specified as 0 (the default),
    $ASCTIM returns the current date and time.

 cvtflg

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Conversion indicator specifying which date and time fields
    $ASCTIM should return. The cvtflg argument is a longword
    value, which is interpreted as Boolean. The value 1 specifies
    that $ASCTIM should return only the hour, minute, second, and
    hundredths-of-second fields. The default value 0 specifies that
    $ASCTIM should return the full date and time.

17  –  $ASCTOID

    Translates the specified identifier name into its binary
    identifier value.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ASCTOID  name ,[id] ,[attrib]

    C Prototype

      int sys$asctoid  (void *name, unsigned int *id, unsigned int

                       *attrib);

17.1  –  Arguments

 name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Identifier name translated when $ASCTOID completes execution. The
    name argument is the 32- or 64-bit address of a character-string
    descriptor pointing to the identifier name.

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Identifier value resulting when $ASCTOID completes execution. The
    id argument is the 32- or 64-bit address of a longword in which
    the identifier value is written.

 attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Attributes associated with the identifier returned in id when
    $ASCTOID completes execution. The attrib argument is the 32- or
    64-bit address of a longword containing a bit mask specifying the
    attributes.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The symbols are defined
    in the system macro $KGBDEF library. The symbolic names for each
    bit position are listed in the following table:

    Bit Position           Meaning When Set

    KGB$V_DYNAMIC          Allows holders of the identifier to remove
                           it from or add it to the process rights
                           database by using the DCL command SET
                           RIGHTS_LIST.
    KGB$V_HOLDER_HIDDEN    Prevents someone from getting a list of
                           users who hold an identifier, unless they
                           own the identifier themselves. Special
                           privilege is required to translate hidden
                           names.
    KGB$V_NAME_HIDDEN      Allows holders of an identifier to have it
                           translated-either from binary to ASCII or
                           vice versa-but prevents unauthorized users
                           from translating the identifier. Special
                           privilege is required to translate hidden
                           names.
    KGB$V_NOACCESS         Makes any access rights of the identifier
                           null and void. This attribute is intended
                           as a modifier for a resource identifier or
                           the Subsystem attribute.
    KGB$V_RESOURCE         Allows the holder to charge resources,
                           such as disk blocks, to the identifier.
    KGB$V_SUBSYSTEM        Allows holders of the identifier to create
                           and maintain protected subsystems by
                           assigning the Subsystem access control
                           entry (ACE) to the application images in
                           the subsystem.

18  –  $ASCUTC

    Converts an absolute time from 128-bit UTC format to an ASCII
    string.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ASCUTC  [timlen] ,timbuf ,[utcadr] ,[cvtflg]

    C Prototype

      int sys$ascutc  (unsigned short int *timlen, void *timbuf,

                      unsigned int *utcadr [4], char cvtflg);

18.1  –  Arguments

 timlen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Length (in bytes) of the ASCII string returned by $ASCUTC. The
    timlen argument is the 32- or 64-bit address of a word containing
    this length.

 timbuf

    OpenVMS usage:time_name
    type:         character-coded string text
    access:       write only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Buffer into which $ASCUTC writes the ASCII string. The timbuf
    argument is the 32- or 64-bit address of a character string
    descriptor pointing to the buffer. The buffer length specified in
    the timbuf argument, together with the cvtflg argument, controls
    what information is returned.

 utcadr

    OpenVMS usage:coordinated universal time
    type:         utc_date_time
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Time value that $ASCUTC is to convert. The timadr argument is the
    32- or 64-bit address of this 128-bit time value. Relative times
    are not permitted. If the timadr argument is not specified, it
    defaults to 0 and $ASCUTC returns the current date and time.

 cvtflg

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Conversion indicator specifying which date and time fields
    $ASCUTC should return. The cvtflg argument is a longword value
    that is interpreted as Boolean. The value 1 specifies that
    $ASCUTC should return only the time, including hour, minute,
    second, and hundredths-of-second fields. The default value 0
    specifies that $ASCUTC should return the full date and time.

19  –  $ASSIGN

    Provides a process with an I/O channel so input/output operations
    can be performed on a device, or establishes a logical link with
    a remote node on a network.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ASSIGN  devnam ,chan ,[acmode] ,[mbxnam] ,[flags]

    C Prototype

      int sys$assign  (void *devnam, unsigned short int *chan,

                      unsigned int acmode, void *mbxnam,...);

19.1  –  Arguments

 devnam

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the device to which $ASSIGN is to assign a channel.
    The devnam argument is the 32- or 64-bit address of a character
    string descriptor pointing to the device name string.

    If the device name contains a double colon (::),  the system
    assigns a channel to the first available network device (NET:)
    and performs an access function on the network.

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Number of the channel that is assigned. The chan argument is the
    32- or 64-bit address of a word into which $ASSIGN writes the
    channel number.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be associated with the channel. The acmode
    argument specifies the access mode. The $PSLDEF macro defines
    the following symbols for the four access modes:

    Symbol        Access Mode   Numeric Value

    PSL$C_KERNEL  Kernel        0
    PSL$C_EXEC    Executive     1
    PSL$C_SUPER   Supervisor    2
    PSL$C_USER    User          3

    The specified access mode and the access mode of the caller are
    compared. The less privileged (but the higher numeric valued) of
    the two access modes becomes the access mode associated with the
    assigned channel. I/O operations on the channel can be performed
    only from equal and more privileged access modes. For more
    information, see the section on access modes in the VSI OpenVMS
    Programming Concepts Manual.

 mbxnam

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Logical name of the mailbox to be associated with the device.
    The mbxnam argument is the 32- or 64-bit address of a character
    string descriptor pointing to the logical name string.

    If you specify mbxnam as 0, no mailbox is associated with the
    device. This is the default.

    You must specify the mbxnam argument when performing a
    nontransparent, task-to-task, network operation.

    Only the owner of a device can associate a mailbox with the
    device; the owner of a device is the process that has allocated
    the device, whether implicitly or explicitly. Only one mailbox
    can be associated with a device at any one time.

    For unshareable, nonspooled devices, an implicit $ALLOCATE is
    done. This requires read, write, or control access to the device.

    A mailbox cannot be associated with a device if the device has
    foreign (DEV$M_FOR) or shareable (DEV$M_SHR) characteristics.

    A mailbox is disassociated from a device when the channel that
    associated it is deassigned.

    If a mailbox is associated with a device, the device driver can
    send status information to the mailbox. For example, if the
    device is a terminal, this information might indicate dialup,
    hangup, or the reception of unsolicited input; if the device is a
    network device, it might indicate that the network is connected
    or perhaps that the line is down.

    For details on the nature and format of the information returned
    to the mailbox, see the VSI OpenVMS I/O User's Reference Manual.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    An optional device-specific argument. The flags argument is a
    longword bit mask.

    For more information on the applicability of the flags argument
    for a particular device, see the VSI OpenVMS I/O User's Reference
    Manual.

20  –  $AUDIT EVENT

    Appends an event message to the system security audit log file or
    sends an alarm to a security operator terminal.

    Format

      SYS$AUDIT_EVENT  [efn] ,[flags] ,itmlst ,[audsts] ,[astadr]

                       ,[astprm]

    C Prototype

      int sys$audit_event  (unsigned int efn, unsigned int flags,

                           void *itmlst, unsigned int *audsts, void

                           (*astadr)(__unknown_params), int astprm);

20.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when the audit completes. The
    efn argument is a longword containing the number of the event
    flag; however, $AUDIT_EVENT uses only the low-order byte. If efn
    is not specified, event flag 0 is used.

    Upon request initiation, $AUDIT_EVENT clears the specified event
    flag.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flags specifying options for the $AUDIT_EVENT system operation.
    The flags argument is a longword bit mask, where each bit
    corresponds to an option.

    Each flag option has a symbolic name. The $NSADEF macro defines
    the following symbolic names:

    Symbolic Name      Description

    NSA$M_ACL          Specifies an event generated by an Alarm ACE
                       or Audit ACE. This flag is Reserved to VSI.

    NSA$M_FLUSH        Specifies that all messages in the audit
                       server buffer be written to the audit log
                       file.

    NSA$M_INTERNAL     Specifies that the $AUDIT_EVENT call
                       originates in the context of a trusted
                       computing base (TCB) component. The auditing
                       components use this flag to indicate that
                       internal auditing failures should result in a
                       SECAUDTCB bugcheck. This flag is reserved to
                       VSI.

    NSA$M_MANDATORY    Specifies that an audit is to be performed,
                       regardless of system alarm and audit settings.

    NSA$M_NOEVTCHECK   Specifies that an audit is to be performed,
                       regardless of the system alarm or audit
                       settings. This flag is similar to the NSA$M_
                       MANDATORY bit but, unlike the NSA$M_MANDATORY
                       bit, this flag is not reflected in the NSA$W_
                       FLAGS field in the resulting audit record on
                       disk.

    NSA$M_SERVER       Indicates that the call originates in a TCB
                       server process and that the event should be
                       audited regardless of the state of a process-
                       specific, no-audit bit.

                       Trusted servers use this flag to override
                       the no-audit bit when they want to perform
                       explicit auditing on behalf of a client
                       process. This flag is Reserved to VSI.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying information to include in the audit record.
    The itmlst argument is the address of a list of item descriptors.
    The list of item descriptors is terminated by a longword of 0.

    The item list for all calls to $AUDIT_EVENT must include the
    following item codes:

    o  NSA$_EVENT_TYPE

    o  NSA$_EVENT_SUBTYPE

    o  At least one of the NSA$_ALARM_NAME item code or the NSA$_
       AUDIT_NAME item code.

    o  If the event being reported is an object access (NSA$C_MSG_
       OBJ_ACCESS) or an object delete (NSA$C_MSG_OBJ_DELETE), the
       NSA$_FINAL_STATUS, NSA$_ACCESS_DESIRED, and NSA$_OBJECT_CLASS
       item codes must be specified.

    o  If the event being reported is an object create (NSA$C_MSG_
       OBJ_CREATE), the NSA$_FINAL_STATUS and NSA$_OBJECT_CLASS item
       codes must be specified.

    o  If the event being reported is a privilege audit (NSA$C_MSG_
       PRVAUD), the NSA$_PRIVS_USED or the NSA$_PRIVS_MISSING item
       code must be specified.

    o  If the audit event being reported is a deaccess event (NSA$C_
       MSG_OBJ_DEACCESS), the NSA$_OBJECT_CLASS item code must be
       specified.

    The item list is a standard format item list.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

 audsts

    OpenVMS usage:cond_value_type
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Longword condition value that receives the final completion
    status from the operation. If a security audit is required,
    the final completion status represents either the successful
    completion of the resulting security audit or any failing status
    that occurred while the security audit was performed within the
    audit server process.

    The audsts argument is valid only when the service returns
    success and the status is not SS$_EVTNOTENAB. In addition, the
    caller must either make use of the astadr argument or use the
    $AUDIT_EVENTW service before attempting to access audsts.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    Asynchronous system trap (AST) routine to be executed after the
    audsts is updated. The astadr argument, which is the address of a
    longword value, is the procedure value of the AST routine.

    The AST routine executes in the access mode of the caller of
    $AUDIT_EVENT.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Asynchronous system trap (AST) parameter passed to the AST
    service routine. The astprm argument is a longword value
    containing the AST parameter.

21  –  $AUDIT EVENTW

    Determines whether a security-related event should be reported.
    If the event should be reported, the service sends the event
    report to the audit server.

    The $AUDIT_EVENTW service completes synchronously; that is, it
    returns only after receiving an explicit confirmation from the
    audit server that the associated audit, if enabled, has been
    performed.

    For asynchronous completion, use the Audit Event ($AUDIT_EVENT)
    service. In all other respects, $AUDIT_EVENTW is identical to
    $AUDIT_EVENT. For additional information about $AUDIT_EVENTW, see
    the $AUDIT_EVENT service.

    Format

      SYS$AUDIT_EVENTW  efn ,[flags] ,itmlst ,audsts ,[astadr]

                        ,[astprm]

    C Prototype

      int sys$audit_eventw  (unsigned int efn, unsigned int flags,

                            void *itmlst, unsigned int *audsts, void

                            (*astadr)(__unknown_params), int astprm);

22  –  $AVOID PREEMPT

    Requests that the EXEC avoid preempting the calling process or
    thread.

    Format

      SYS$AVOID_PREEMPT  enable

    C Prototype

      int sys$avoid_preempt  (int enable);

22.1  –  Arguments

 enable

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Enables or disables preemption avoidance. If the enable argument
    is set to 1, preemption avoidance is enabled; if 0, preemption
    avoidance is disabled.

23  –  $BINTIM

    Converts an ASCII string to an absolute or delta time value in
    the system 64-bit time format suitable for input to the Set Timer
    ($SETIMR) or Schedule Wakeup ($SCHDWK) service.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$BINTIM  timbuf ,timadr

    C Prototype

      int sys$bintim  (void *timbuf, struct _generic_64 *timadr);

23.1  –  Arguments

 timbuf

    OpenVMS usage:time_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Buffer that holds the ASCII time to be converted. The timbuf
    argument specifies the 32- or 64-bit address of a character
    string descriptor pointing to the time string. The time string
    specifies the absolute or delta time to be converted by $BINTIM.

 timadr

    OpenVMS usage:date_time
    type:         quadword
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Time value that $BINTIM has converted. The timadr argument is the
    32- or 64-bit address of the quadword system time, which receives
    the converted time.

24  –  $BINUTC

    Converts an ASCII string to an absolute time value in the 128-bit
    UTC format.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$BINUTC  timbuf ,utcadr

    C Prototype

      int sys$binutc  (void *timbuf, unsigned int *utcadr [4]);

24.1  –  Arguments

 timbuf

    OpenVMS usage:time_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Buffer that holds the ASCII time to be converted. The timbuf
    argument specifies the 32- or 64-bit address of a character
    string descriptor pointing to a local time string. The time
    string specifies the absolute time to be converted by $BINUTC.

 utcadr

    OpenVMS usage:coordinated universal time
    type:         utc_date_time
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Time value that $BINUTC has converted. The utcadr argument is
    the 32- or 64-bit address of a 16-byte location to receive the
    converted time.

25  –  $BRKTHRU

    Sends a message to one or more terminals. The $BRKTHRU service
    completes asynchronously; that is, it returns to the caller after
    queuing the message request, without waiting for the message to
    be written to the specified terminals.

    For synchronous completion, use the Breakthrough and Wait
    ($BRKTHRUW) service. The $BRKTHRUW service is identical to the
    $BRKTHRU service in every way except that $BRKTHRUW returns
    to the caller after the message is written to the specified
    terminals.

    The $BRKTHRU service supersedes the Broadcast ($BRDCST) service.
    When writing new programs, you should use $BRKTHRU instead of
    $BRDCST. When updating old programs, you should change all uses
    of $BRDCST to $BRKTHRU.

    Format

      SYS$BRKTHRU  [efn] ,msgbuf [,sendto] [,sndtyp] [,iosb]

                   [,carcon] [,flags] [,reqid] [,timout] [,astadr]

                   [,astprm]

    C Prototype

      int sys$brkthru  (unsigned int efn, void *msgbuf, void *sendto,

                       unsigned int sndtyp, struct _iosb *iosb,

                       unsigned int carcon, unsigned int flags,

                       unsigned int reqid, unsigned int timout, void

                       (*astadr)(__unknown_params), int astprm);

25.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when the message has been
    written to the specified terminals. The efn argument is a
    longword containing this number; however, $BRKTHRU uses only
    the low-order byte.

    When the message request is queued, $BRKTHRU clears the specified
    event flag (or event flag 0 if efn is not specified). Then, after
    the message is sent, $BRKTHRU sets the specified event flag (or
    event flag 0).

 msgbuf

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Message text to be sent to the specified terminals. The msgbuf
    argument is the address of a descriptor pointing to this message
    text.

    The $BRKTHRU service allows the message text to be as long as
    16,350 bytes; however, both the system parameter MAXBUF and the
    caller's available process space can affect the maximum length of
    the message text.

 sendto

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of a single device (terminal) or single user name to which
    the message is to be sent. The sendto argument is the address of
    a descriptor pointing to this name.

    The sendto argument is used in conjunction with the sndtyp
    argument. When sndtyp specifies BRK$C_DEVICE or BRK$C_USERNAME,
    the sendto argument is required.

    If you do not specify sndtyp or if sndtyp does not specify BRK$C_
    DEVICE or BRK$C_USERNAME, you should not specify sendto; if
    sendto is specified, $BRKTHRU ignores it.

 sndtyp

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Terminal type to which $BRKTHRU is to send the message. The
    sndtyp argument is a longword value specifying the terminal type.

    Each terminal type has a symbolic name, which is defined by the
    $BRKDEF macro. The following table describes each terminal type:

    Terminal Type   Description

    BRK$C_          When specified, $BRKTHRU sends the message to all
    ALLTERMS        terminals at which users are logged in and to all
                    other terminals that are connected to the system
                    except those with the AUTOBAUD characteristic
                    set.

    BRK$C_          When specified, $BRKTHRU sends the message to all
    ALLUSERS        users who are currently logged in to the system.

    BRK$C_DEVICE    When specified, $BRKTHRU sends the message to a
                    single terminal; you must specify the name of the
                    terminal by using the sendto argument.

    BRK$C_          When specified, $BRKTHRU sends the message to a
    USERNAME        user with a specified user name; you must specify
                    the user name by using the sendto argument.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block that is to receive the final completion status.
    The iosb argument is the address of this quadword block.

    When the iosb argument is specified, $BRKTHRU sets the quadword
    to 0 when it queues the message request. Then, after the message
    is sent to the specified terminals, $BRKTHRU returns four
    informational items, one item per word, in the quadword I/O
    status block.

    These informational items indicate the status of the messages
    sent only to terminals and mailboxes on the local node; these
    items do not include the status of messages sent to terminals and
    mailboxes on other nodes in an OpenVMS Cluster system.

    The following table shows each word of the quadword block and the
    informational item it contains:

    Word Informational Item

    1    A condition value describing the final completion status.
    2    A decimal number indicating the number of terminals and
         mailboxes to which $BRKTHRU successfully sent the message.
    3    A decimal number indicating the number of terminals to which
         $BRKTHRU failed to send the message because the write to the
         terminals timed out.
    4    A decimal number indicating the number of terminals to which
         $BRKTHRU failed to send the message because the terminals
         were set to the NOBROADCAST characteristic (by using the DCL
         command SET TERMINAL/NOBROADCAST).

 carcon

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Carriage control specifier indicating the carriage control
    sequence to follow the message that $BRKTHRU sends to the
    terminals. The carcon argument is a longword containing the
    carriage control specifier.

    For a list of the carriage control specifiers that you can use
    in the carcon argument, see the VSI OpenVMS I/O User's Reference
    Manual.

    If you do not specify the carcon argument, $BRKTHRU uses a
    default value of 32, which represents a space in the ASCII
    character set. The message format resulting from this default
    value is a line feed, the message text, and a carriage return.

    The carcon argument has no effect on message formatting
    specified by the BRK$M_SCREEN flag in the flags argument. See
    the description of the flags argument.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag bit mask specifying options for the $BRKTHRU operation. The
    flags argument is a longword value that is the logical OR of each
    desired flag option.

    Each flag option has a symbolic name. The $BRKDEF macro defines
    the following symbolic names:

    Symbolic Name    Description

    BRK$V_ERASE_     When specified with the BRK$M_SCREEN flag,
    LINES            BRK$V_ERASE_LINES causes a specified number of
                     lines to be cleared from the screen before the
                     message is displayed. When BRK$M_SCREEN is not
                     also specified, BRK$V_ERASE_LINES is ignored.

                     Unlike the other Boolean flags, BRK$V_ERASE_
                     LINES specifies a 1-byte integer in the range
                     0 to 24. It occupies the first byte in the
                     longword flag mask. In coding the call to
                     $BRKTHRU, specify the desired integer value in
                     the OR operation with any other desired flags.

    BRK$M_SCREEN     When specified, $BRKTHRU sends screen-formatted
                     messages as well as messages formatted through
                     the use of the carcon argument. $BRKTHRU sends
                     screen-formatted messages to terminals with
                     the DEC_CRT characteristic, and it sends
                     messages formatted by carcon to those without
                     the DEC_CRT characteristic. You set the DEC_CRT
                     characteristic for the terminal by using the DCL
                     command SET TERMINAL/DEC_CRT.

                     A screen-formatted message is displayed at the
                     top of the terminal screen, and the cursor is
                     repositioned at the point it was prior to the
                     broadcast message. However, the BRK$V_ERASE_
                     LINES and BRK$M_BOTTOM flags also affect the
                     display.

    BRK$M_BOTTOM     When BRK$M_BOTTOM is specified and BRK$M_SCREEN
                     is also specified, $BRKTHRU writes the message
                     to the bottom of the terminal screen instead of
                     the top. BRK$M_BOTTOM is ignored if the BRK$M_
                     SCREEN flag is not set.

    BRK$M_           When BRK$M_NOREFRESH is specified, $BRKTHRU,
    NOREFRESH        after writing the message to the screen, does
                     not redisplay the last line of a read operation
                     that was interrupted by the broadcast message.
                     This flag is useful only when the BRK$M_SCREEN
                     flag is not specified, because BRK$M_NOREFRESH
                     is the default for screen-formatted messages.

    BRK$M_CLUSTER    Specifying BRK$M_CLUSTER enables $BRKTHRU to
                     send the message to terminals or mailboxes on
                     other nodes in an OpenVMS Cluster system. If
                     BRK$M_CLUSTER is not specified, $BRKTHRU sends
                     messages only to terminals or mailboxes on the
                     local node.

 reqid

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Class requester identification, which identifies to $BRKTHRU
    the application (or image) that is calling $BRKTHRU. The reqid
    argument is this longword identification value.

    The reqid argument is used by several images that send messages
    to terminals and can be used by as many as 16 different user
    images as well.

    When such an image calls $BRKTHRU, specifying reqid, $BRKTHRU
    notifies the terminal that this image wants to write to the
    terminal. This makes it possible for you to allow the image to
    write or prevent it from writing to the terminal.

    To prevent a particular image from writing to your
    terminal, you use the image's name in the DCL command SET
    TERMINAL/NOBROADCAST=image-name. Note that image-name in this
    DCL command is the same as the value of the reqid argument that
    the image passed to $BRKTHRU.

    For example, you can prevent the Mail utility (which is an image)
    from writing to the terminal by entering the DCL command SET
    BROADCAST=NOMAIL.

    The $BRKDEF macro defines class names that are used by several
    OpenVMS components. These components specify their class names by
    using the reqid argument in calls to $BRKTHRU. The $BRKDEF macro
    also defines 16 class names (BRK$C_USER1 through BRK$C_USER16)
    for the use of user images that call $BRKTHRU. The class names
    and the components to which they correspond are as follows:

    Class Name       Component

    BRK$C_GENERAL    This class name is used by the image invoked
                     by the DCL command REPLY and the callers of the
                     $BRKTHRU service. This is the default if the
                     reqid argument is not specified.
    BRK$C_PHONE      This class name is used by the OpenVMS Phone
                     utility.
    BRK$C_MAIL       This class name is used by the OpenVMS Mail
                     utility.
    BRK$C_DCL        This class name is used by the DIGITAL Command
                     Language (DCL) interpreter for the Ctrl/T
                     command, which displays the process status.
    BRK$C_QUEUE      This class name is used by the queue manager,
                     which manages print and batch jobs.
    BRK$C_SHUTDOWN   This class name is used by the system shutdown
                     image, which is invoked by the DCL command
                     REPLY/ID=SHUTDOWN.
    BRK$C_URGENT     This class name is used by the image invoked by
                     the DCL command REPLY/ID=URGENT.
    BRK$C_USER1      These class names can be used by user-written
    through BRK$C_   images.
    USER16

 timout

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Timeout value, which is the number of seconds that must elapse
    before an attempted write by $BRKTHRU to a terminal is considered
    to have failed. The timout argument is this longword value (in
    seconds).

    Because $BRKTHRU calls the $QIO service to perform write
    operations to the terminal, the timeout value specifies the
    number of seconds allotted to $QIO to perform a single write
    operation to the terminal.

    If you do not specify the timout argument, $BRKTHRU uses a
    default value of 0 seconds, which specifies infinite time (no
    timeout occurs).

    The value specified by timout can be 0 or any number greater than
    4; the numbers 1, 2, 3, and 4 are illegal.

    When you press Ctrl/S or the No Scroll key, $BRKTHRU cannot send
    a message to the terminal. In such a case, the value of timout is
    usually exceeded and the attempted write to the terminal fails.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    AST service routine to be executed after $BRKTHRU has sent the
    message to the specified terminals. The astadr argument is the
    address of this routine.

    If you specify astadr, the AST routine executes at the same
    access mode as the caller of $BRKTHRU.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST routine specified by the
    astadr argument. The astprm argument specifies this longword
    parameter.

26  –  $BRKTHRUW

    Sends a message to one or more terminals. The $BRKTHRUW service
    operates synchronously; that is, it returns to the caller after
    the message has been sent to the specified terminals.

    For asynchronous operations, use the Breakthrough ($BRKTHRU)
    service; $BRKTHRU returns to the caller after queuing the message
    request, without waiting for the message to be delivered.

    Aside from the preceding, $BRKTHRUW is identical to $BRKTHRU.
    For all other information about the $BRKTHRUW service, see the
    description of $BRKTHRU.

    The $BRKTHRU and $BRKTHRUW services supersede the Broadcast
    ($BRDCST) service. When writing new programs, you should use
    $BRKTHRU or $BRKTHRUW instead of $BRDCST. When updating old
    programs, you should change all uses of $BRDCST to $BRKTHRU or
    $BRKTHRUW. $BRDCST is now an obsolete system service and is no
    longer being enhanced.

    Format

      SYS$BRKTHRUW  [efn] ,msgbuf [,sendto] [,sndtyp] [,iosb]

                    [,carcon] [,flags] [,reqid] [,timout] [,astadr]

                    [,astprm]

    C Prototype

      int sys$brkthruw  (unsigned int efn, void *msgbuf, void

                        *sendto, unsigned int sndtyp, struct _iosb

                        *iosb, unsigned int carcon, unsigned int

                        flags, unsigned int reqid, unsigned int

                        timout, void (*astadr)(__unknown_params),int

                        astprm);

27  –  $CANCEL

    Cancels all pending I/O requests on a specified channel. In
    general, this includes all I/O requests that are queued, as well
    as the request currently in progress.

    Format

      SYS$CANCEL  chan

    C Prototype

      int sys$cancel  (unsigned short int chan);

27.1  –  Argument

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    I/O channel on which I/O is to be canceled. The chan argument is
    a word containing the channel number.

28  –  $CANEXH

    Deletes an exit control block from the list of control blocks for
    the calling access mode. Exit control blocks are declared by the
    Declare Exit Handler ($DCLEXH) service and are queued according
    to access mode in a last-in first-out order.

    Format

      SYS$CANEXH  [desblk]

    C Prototype

      int sys$canexh  (void *desblk);

28.1  –  Argument

 desblk

    OpenVMS usage:exit_handler_block
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Control block describing the exit handler to be canceled. If you
    do not specify the desblk argument or specify it as 0, all exit
    control blocks are canceled for the current access mode. The
    desblk argument is the address of this control block.

29  –  $CANTIM

    Cancels all or a selected subset of the Set Timer requests
    previously issued by the current image executing in a process.
    Cancellation is based on the request identification specified
    in the Set Timer ($SETIMR) service. If you give the same request
    identification to more than one timer request, all requests with
    that request identification are canceled.

    Format

      SYS$CANTIM  [reqidt] ,[acmode]

    C Prototype

      int sys$cantim  (unsigned __int64 reqidt, unsigned int acmode);

29.1  –  Arguments

 reqidt

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Request identification of the timer requests to be canceled.
    If you specify it as 0 (the default), all timer requests are
    canceled. The reqidt argument is a longword containing this
    identification.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode of the requests to be canceled. The acmode argument
    is a longword containing the access mode.

    The $PSLDEF macro defines the following symbols for the four
    access modes:

    Symbol         Access Mode

    PSL$C_KERNEL   Kernel
    PSL$C_EXEC     Executive
    PSL$C_SUPER    Supervisor
    PSL$C_USER     User

    The most privileged access mode used is the access mode of the
    caller.

30  –  $CANWAK

    Removes all scheduled wakeup requests for a process from the
    timer queue, including those made by the caller or by other
    processes. The Schedule Wakeup ($SCHDWK) service makes scheduled
    wakeup requests.

    Format

      SYS$CANWAK  [pidadr] ,[prcnam]

    C Prototype

      int sys$canwak  (unsigned int *pidadr, void *prcnam);

30.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) of the process for which wakeups are
    to be canceled. The pidadr argument is the address of a longword
    specifying the 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.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the process for which wakeups are to be canceled. The
    prcnam argument is the address of a character string descriptor
    pointing to the process name string.

    A process running on the local node can be identified with a 1-
    to 15-character string. To identify a process on a specific node
    in 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.

    The operating system interprets the UIC group number of the
    calling process as part of the process name; the names of
    processes are unique to UIC groups. Because of this, you can
    use the prcnam argument only on behalf of processes in the same
    group as the calling process.

31  –  $CHECK ACCESS

    Determines on behalf of a third-party user whether a named user
    can access the object specified.

    Format

      SYS$CHECK_ACCESS  [objtyp], [objnam], [usrnam], itmlst,

                        [contxt], [clsnam], [objpro], [usrpro]

    C Prototype

      int sys$check_access  (unsigned int *objtyp, void *objnam,

                            void *usrnam, void *itmlst, unsigned int

                            *contxt, void *clsnam, void *objpro, void

                            *usrpro);

31.1  –  Arguments

 objtyp

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Type of object being accessed. The objtyp argument is the address
    of a longword containing a value specifying the type of object.

    The appropriate symbols are listed in the following table and are
    defined in the system macro $ACLDEF library:

    Symbol                   Meaning

    ACL$C_CAPABILITY         Object is a restricted resource; use the
                             reserved name VECTOR.
    ACL$C_DEVICE             Object is a device.
    ACL$C_FILE               Object is a Files-11 On-Disk Structure
                             Level 2 file.
    ACL$C_GROUP_GLOBAL_      Object is a group global section.
    SECTION
    ACL$C_JOBCTL_QUEUE       Object is a batch, print, or server
                             queue.
    ACL$C_LOGICAL_NAME_      Object is a logical name table.
    TABLE
    ACL$C_SYSTEM_GLOBAL_     Object is a system global section.
    SECTION

    For further information about these symbols, see the description
    of the clsnam argument.

 objnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the object being accessed. The objnam argument is the
    address of a character-string descriptor pointing to the object
    name.

 usrnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the user attempting access. The usrnam argument is the
    address of a descriptor that points to a character string that
    contains the name of the user attempting to gain access to the
    specified object. The user name string can contain a maximum of
    12 alphanumeric characters.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Attributes describing how the object is to be accessed and
    information returned after $CHECK_ACCESS performs the protection
    check (for instance, security alarm information).

    For each item code, you must include a set of four elements and
    end the list with a longword containing the value 0 (CHP$_END).

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

 contxt

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read-write
    mechanism:    by reference
    Longword used to maintain the user authorization file (UAF)
    context. The contxt argument is the address of a longword
    to receive a UAI context longword. On the initial call, this
    longword should contain the value -1. On subsequent calls, the
    value of the contxt argument from the previous call should be
    passed back in.

    Using the contxt argument keeps the UAF open across all calls,
    thereby improving the performance of the system on subsequent
    calls. To close the UAF, you must run down the image.

    The resulting contxt value from a $CHECK_ACCESS call can also be
    used as the input contxt argument to the $GETUAI system service,
    and vice versa.

 clsnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor
    Object class name associated with the protected object. The
    clsnam argument is the address of a descriptor pointing to the
    name of the object class associated with the object specified by
    either the objnam or the objpro argument. The clsnam and objtyp
    arguments are mutually exclusive. The clsnam argument is the
    preferred argument to $CHECK_ACCESS. The following object class
    names are valid:

    CAPABILITY                  QUEUE
    COMMON_EVENT_CLUSTER        RESOURCE_DOMAIN
    DEVICE                      SECURITY_CLASS
    FILE                        SYSTEM_GLOBAL_SECTION
    GROUP_GLOBAL_SECTION        VOLUME
    LOGICAL_NAME_TABLE

 objpro

    OpenVMS usage:char_string
    type:         opaque byte stream or object handle
    access:       read only
    mechanism:    by descriptor
    Buffer containing an object security profile or object handle.
    The objpro argument is the address of a descriptor pointing to
    a buffer that contains an encoded object security profile or the
    address of a descriptor pointing to an object handle.

    Object handles vary according to the associated security object
    class. Currently, the only supported object handles are for the
    file and device class objects where the object handle is a word
    or longword channel.

    The objpro and objnam arguments are mutually exclusive unless the
    objpro argument is a simple object handle. The objpro and usrpro
    arguments are also mutually exclusive unless the objpro argument
    is an object handle.

 usrpro

    OpenVMS usage:char_string
    type:         opaque byte stream
    access:       read only
    mechanism:    by descriptor
    Buffer containing a user security profile. The usrpro argument is
    the address of a descriptor pointing to a buffer that contains an
    encoded user security profile.

    The $CREATE_USER_PROFILE service can be used to construct a user
    security profile. The usrpro and usrnam arguments are mutually
    exclusive. The objpro and usrpro arguments are also mutually
    exclusive unless the objpro argument is an object handle.

32  –  $CHECK FEN (Alpha and Integrity servers)

    On Alpha and Integrity server systems, indicates whether floating
    point is enabled for the current image.

    Format

      SYS$CHECK_FEN  [flags]

    C Prototype

      int sys$check_fen  (unsigned int *flags);

32.1  –  Arguments

 flags

    OpenVMS usage:mask longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    For architectures that have multiple floating-point resources
    that can be enabled separately, this longword is returned with a
    bitmask indicating which resources are enabled. On Alpha systems,
    no separate resources exist; nothing is returned. On Integrity
    server systems, the bitmask has two bits: bit 0 for the low
    floating-point bank and bit 1 for the high floating-point bank.

33  –  $CHECK PRIVILEGE

    Determines whether the caller has the specified privileges
    or identifier. In addition to checking for a privilege or an
    identifier, $CHECK_PRIVILEGE determines if the caller's use of
    privilege needs to be audited.

    Format

      SYS$CHECK_PRIVILEGE  [efn] ,prvadr ,[altprv] ,[flags] ,[itmlst]

                           ,[audsts] ,[astadr] ,[astprm]

    C Prototype

      int sys$check_privilege  (unsigned int efn, struct _generic_64

                               *prvadr, struct _generic_64

                               *altprv, unsigned int flags, void

                               *itmlst, unsigned int *audsts, void

                               (*astadr)(__unknown_params), int

                               astprm);

33.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when the audit completes. The
    efn argument is a longword containing the number of the event
    flag; however, $CHECK_PRIVILEGE uses only the low-order byte. If
    efn is not specified, event flag 0 is used.

    Upon request initiation, $CHECK_PRIVILEGE clears the specified
    event flag.

 prvadr

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    The privilege, privileges, or identifier that the calling process
    must possess.

    The prvadr argument is either the address of a quadword bit
    array, where each bit corresponds to a privilege, or the address
    of a quadword identifier.

    When the array lists privileges, each bit has a symbolic name.
    The $PRVDEF macro defines these names. You form the bit array
    by specifying the symbolic name of each desired privilege in a
    logical OR operation. See the $SETPRV system service for the
    symbolic name and description of each privilege.

    If the caller passes an identifier, the caller must set the
    NSA$M_IDENTIFIER bit in the flags longword. The identifier
    structure is defined by the $KGBDEF macro. The identifier
    attributes (KGB$) are reserved for future use and should be set
    to 0.

 altprv

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Alternate privilege mask to check against. The altprv argument
    is the address of a quadword privilege mask, where each bit
    corresponds to a privilege. This argument and the flags NSA$M_
    AUTHPRIV, NSA$M_IDENTIFIER, and NSA$M_PROCPRIV are mutually
    exclusive.

    With this argument, $CHECK_PRIVILEGE uses the supplied set of
    privileges instead of the current, active privileges. Each bit
    in the mask has a symbolic name, defined by the $PRVDEF macro.
    You form the bit array by specifying the symbolic name of each
    desired privilege in a logical OR operation. See the $SETPRV
    system service for the symbolic name and description of each
    privilege.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flags that specify options for the $CHECK_PRIVILEGE operation.
    The flags argument is a longword bit mask, where each bit
    corresponds to an option.

    Each flag option has a symbolic name. The $NSADEF macro defines
    the following symbolic names. Be aware that the flags NSA$M_
    AUTHPRIV, NSA$M_IDENTIFIER, and NSA$M_PROCPRIV are mutually
    exclusive; therefore, you can specify only one of these flag
    options.

    Symbolic Name      Description

    NSA$M_AUTHPRIV     Checks the authorized privileges of the
                       process instead of the current (active)
                       privileges.
    NSA$M_FLUSH        Specifies that all messages in the audit
                       server buffer be written to the audit log
                       file.
    NSA$M_IDENTIFIER   Interprets the prvadr argument as the address
                       of an identifier instead of a privilege mask.
    NSA$M_INTERNAL     Specifies that the $CHECK_PRIVILEGE call
                       originates in the context of a trusted
                       computing base (TCB) component. The auditing
                       components use this flag to indicate that
                       internal auditing failures should result in a
                       SECAUDTCB bugcheck. This flag is reserved to
                       VSI.
    NSA$M_MANDATORY    Specifies that an audit is to be performed,
                       regardless of system alarm and audit settings.
    NSA$M_PROCPRIV     Checks the permanent privileges of the
                       process, instead of the privileges in the
                       current (active) mask.
    NSA$M_SERVER       Indicates that the call originates in a TCB
                       server process and that the event should be
                       audited regardless of the state of a process-
                       specific no-audit bit.

                       Trusted servers use this flag to override
                       the no-audit bit when they want to perform
                       explicit auditing on behalf of a client
                       process. This flag is Reserved to VSI.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying additional security auditing information
    to be included in any security audit that is generated by the
    service. The itmlst argument is the address of a list of item
    descriptors, each of which describes an item of information. The
    list of item descriptors is terminated by a longword of 0.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

 audsts

    OpenVMS usage:cond_value_type
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Longword condition value that receives a final completion status
    from the operation. If a security audit is required, the final
    completion status represents either the successful completion of
    the resulting security audit or any failing status that occurred
    while the security audit was performed within the AUDIT_SERVER
    process.

    The audsts argument is valid only when the service returns
    success and the status is not SS$_EVTNOTENAB. In addition, the
    caller must either make use of the astadr argument or use the
    $CHECK_PRIVILEGEW service before attempting to access audsts.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    Asynchronous system trap (AST) routine to be executed after the
    audsts argument is written. The astadr argument, which is the
    address of a longword value, is the procedure value of the AST
    routine.

    The AST routine executes in the access mode of the caller of
    $CHECK_PRIVILEGE.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Asynchronous system trap (AST) parameter passed to the AST
    service routine. The astprm argument is a longword value
    containing the AST parameter.

34  –  $CHECK PRIVILEGEW

    Determines whether the caller has the specified privileges
    or identifier. In addition to checking for a privilege or an
    identifier, the Check Privilege and Wait service determines if
    the caller's use of privilege needs to be audited.

    $CHECK_PRIVILEGEW completes synchronously; that is, it returns
    the final status to the caller only after receiving an explicit
    confirmation from the audit server that the associated audit, if
    enabled, has been performed.

    Format

      SYS$CHECK_PRIVILEGEW  efn ,prvadr ,[altprv] ,[flags] ,[itmlst]

                            ,audsts ,[astadr] ,[astprm]

    C Prototype

      int sys$check_privilegew  (unsigned int efn, struct _generic_64

                                *prvadr, struct _generic_64

                                *altprv, unsigned int flags, void

                                *itmlst, unsigned int *audsts, void

                                (*astadr)(__unknown_params), int

                                astprm);

35  –  $CHKPRO

    Determines whether an accessor with the specified rights and
    privileges can access an object with the specified attributes.

    Format

      SYS$CHKPRO  itmlst ,[objpro] ,[usrpro]

    C Prototype

      int sys$chkpro  (void *itmlst, void *objpro, void *usrpro);

35.1  –  Argument

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Protection attributes of the object and the rights and privileges
    of the accessor. The itmlst argument is the address of an item
    list of descriptors used to specify the protection attributes of
    the object and the rights and privileges of the accessor.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

    Specifying any specific protection attribute causes that
    protection check to be made; any protection attribute not
    specified is not checked. Rights and privileges specified are
    used as needed. If a protection check requires any right or
    privilege not specified in the item list, the right or privilege
    of the caller's process is used.

 objpro

    OpenVMS usage:char_string
    type:         opaque byte stream
    access:       read only
    mechanism:    by descriptor
    Buffer containing an object security profile. The objpro
    argument is the address of a descriptor pointing to a buffer
    that contains an encoded object security profile. The objpro
    argument eliminates the need to supply all of the component
    object protection attributes with the $CHKPRO item list. The
    objpro argument is currently Reserved to VSI.

 usrpro

    OpenVMS usage:char_string
    type:         opaque byte stream
    access:       read only
    mechanism:    by descriptor
    Buffer containing a user security profile. The usrpro argument is
    the address of a descriptor pointing to a buffer that contains an
    encoded user security profile. The usrpro argument eliminates the
    need to supply all of the component user security attributes with
    the $CHKPRO item list.

    The $CREATE_USER_PROFILE service can be used to construct a user
    security profile. When the usrpro argument is specified, any
    component user profile attributes specified in the $CHKPRO item
    list replace those contained in the user security profile.

36  –  $CLEAR SYSTEM EVENT (Alpha and Integrity servers)

    Removes one or more notification requests previously established
    by a call to $SET_SYSTEM_EVENT.

    This service does not allow you to specify a handle and an
    event. You must pass a zero as one of these parameters. You can
    either clear by handle or request that all events for the user be
    cleared.

    Format

      SYS$CLEAR_SYSTEM_EVENT  [handle] ,[acmode] ,event

    C Prototype

      int sys$clear_system_event  (struct _generic_64 * handle,

                                  unsigned int acmode, unsigned int

                                  event);

36.1  –  Arguments

 handle

    OpenVMS usage:identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Identification of the AST request to be cleared. The handle
    argument uniquely identifies the request and is returned when
    the $SET_SYSTEM_EVENT service is called. The handle argument may
    be omitted by specifying a zero address.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode of the system event to be cleared. The acmode
    argument is a longword containing the access mode. The value of
    the access mode is maximized with the access mode of the caller.

 event

    OpenVMS usage:event_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The event argument is a value indicating the type of system event
    to be cleared. SYSEVT$C_ALL_EVENTS may be specified to clear all
    event types.

37  –  $CLEAR UNWIND TABLE (Integrity servers Only)

    Clears unwind table (UT) information.

    Format

      SYS$CLEAR_UNWIND_TABLE  code_base_va

    C Prototype

      int SYS$CLEAR_UNWIND_TABLE  (unsigned __int64 code_base_va);

37.1  –  Arguments

 code_base_va

    OpenVMS usage: address
    type:          quadword (unsigned)
    access:        read only
    mechanism:     by value
    Input by value. Must be the process virtual address of the start
    of a registered code range.

38  –  $CLOSE

    The Close service terminates file processing and closes the file.
    This service performs an implicit Disconnect service for all
    record streams associated with the file.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

39  –  $CLRAST

    Clears the "AST active" status.

    This enables delivery of asynchronous system traps (ASTs) for the
    access mode from which the service call was issued, while an AST
    routine is active.

                                   NOTE

       The explicit use of $CLRAST is strongly discouraged, as
       it complicates synchronization issues and may lead to the
       unbounded consumption of stack space.

    Normally, AST delivery for a particular access mode is deferred
    while an AST routine is executing in that access mode. When the
    AST routine returns, an implicit call is made to $CLRAST to re-
    enable AST delivery.

    Explicitly calling $CLRAST within an AST routine allows the
    delivery of ASTs for the access mode from which the service call
    was issued, prior to completion of the active AST routine.

    Format

      SYS$CLRAST

39.1  –  Arguments

    None.

40  –  $CLRCLUEVT

    Removes one or more notification requests previously established
    by a call to SYS$SETCLUEVT.

    Format

      SYS$CLRCLUEVT  [handle] ,[acmode] ,[event]

    C Prototype

      int sys$clrcluevt  (struct _cluevthndl *handle, unsigned int

                         acmode, unsigned int event);

40.1  –  Arguments

 handle

    OpenVMS usage:identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Identification of the AST request to be canceled. The handle
    argument uniquely identifies the request and is returned when the
    $SETCLUEVT service is called.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode of the cluster configuration event to be canceled.
    The acmode argument is a longword containing the access mode.

    Each access mode has a symbolic name. The $PSLDEF macro defines
    the following symbols for the four access types:

    Symbol         Access Mode

    PSL$C_KERNEL   Kernel
    PSL$C_EXEC     Executive
    PSL$C_SUPER    Supervisor
    PSL$C_USER     User

 event

    OpenVMS usage:event_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Event code indicating the type of cluster configuration event for
    which an AST is no longer to be delivered. The event argument is
    a value indicating which type of event is no longer of interest.

    Each event type has a symbolic name. The $CLUEVTDEF macro defines
    the following symbolic names:

    Symbolic Name      Description

    CLUEVT$C_ADD       One or more OpenVMS nodes have been added to
                       the OpenVMS Cluster system.
    CLUEVT$C_REMOVE    One or more OpenVMS nodes have been removed
                       from the OpenVMS Cluster system.

41  –  $CLREF

    Clears (sets to 0) an event flag in a local or common event flag
    cluster.

    Format

      SYS$CLREF  efn

    C Prototype

      int sys$clref  (unsigned int efn);

41.1  –  Argument

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be cleared. The efn argument is a
    longword containing this number; however, $CLREF uses only the
    low-order byte.

42  –  $CMEXEC

    Changes the access mode of the calling process to executive mode.

    Format

      SYS$CMEXEC  routin ,[arglst]

    C Prototype

      int sys$cmexec  (int (*routin)(__unknown_params), unsigned int

                      *arglst);

42.1  –  Arguments

 routin

    OpenVMS usage:procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    Routine to be executed while the process is in executive mode.
    The routin argument is the address of this routine.

 arglst

    OpenVMS usage:arg_list
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Argument list to be passed to the routine specified by the routin
    argument. The arglst argument is the address of this argument
    list.

    If the arglst value is nonzero and is not accessible as an
    address or if the routine is inaccessible, the service returns
    SS$_ACCVIO.

    Alpha and Integrity server systems require a pointer to a valid
    argument list or a value of 0 in the arglst argument. This means
    that the arglst argument must contain an accessible virtual
    address for an argument list, the first longword of which must
    be a valid list size.

43  –  $CMEXEC 64

    On Alpha and Integrity server systems, changes the access mode of
    the calling process to executive mode.

    This service accepts 64-bit addresses.

    Format

      SYS$CMEXEC_64  routin_64 ,arglst_64

    C Prototype

      int sys$cmexec_64  (int (*routin_64)(__unknown_params),

                         unsigned __int64 *arglst_64);

43.1  –  Arguments

 routin_64

    OpenVMS usage:procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference
    Routine to be executed while the process is in executive mode.
    The routin_64 argument is the 32- or 64-bit address of this
    routine.

 arglst_64

    OpenVMS usage:arg_list
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Argument list to be passed to the routine specified by the
    routin_64 argument. The arglst_64 argument is the 32- or 64-bit
    address of this argument list.

    If the arglst value is nonzero and is not accessible as an
    address or if the routine is inaccessible, the service returns
    SS$_ACCVIO.

    Alpha and Integrity server systems require a pointer to a valid
    argument list or a value of 0 in the arglst_64 argument. This
    means that the arglst_64 argument, if nonzero, must contain
    an accessible virtual address for an argument list, the first
    quadword of which must be a number between 0 and 255 specifying
    the number of quadwords that follow it on the list.

44  –  $CMKRNL

    Changes the access mode of the calling process to kernel mode.
    This service allows a process to change its access mode to
    kernel, execute a specified routine, and then return to the
    access mode in effect before the call was issued.

    Format

      SYS$CMKRNL  routin ,[arglst]

    C Prototype

      int sys$cmkrnl  (int (*routin)(__unknown_params), unsigned int

                      *arglst);

44.1  –  Arguments

 routin

    OpenVMS usage:procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    Routine to be executed while the process is in kernel mode. The
    routin argument is the address of this routine.

 arglst

    OpenVMS usage:arg_list
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Argument list to be passed to the routine specified by the routin
    argument. The arglst argument is the address of this argument
    list.

    If the arglst value is nonzero and is not accessible as an
    address or if the routine is inaccessible, the service returns
    SS$_ACCVIO.

    Alpha systems require a pointer to a valid argument list or a
    value of 0 in the arglst argument. This means that the arglst
    argument must contain an accessible virtual address for an
    argument list, the first longword of which must be a valid list
    size.

45  –  $CMKRNL 64

    On Alpha and Integrity server systems, changes the access mode of
    the calling process to kernel mode. This service allows a process
    to change its access mode to kernel, execute a specified routine,
    and then return to the access mode in effect before the call was
    issued.

    This service accepts 64-bit addresses.

    Format

      SYS$CMKRNL_64  routin_64 ,arglst_64

    C Prototype

      int sys$cmkrnl_64  (int (*routin_64)(__unknown_params),

                         unsigned __int64 *arglst_64);

45.1  –  Arguments

 routin_64

    OpenVMS usage:procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference
    Routine to be executed while the process is in kernel mode. The
    routin_64 argument is the 32- or 64-bit address of this routine.

 arglst_64

    OpenVMS usage:arg_list
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Quadword argument list to be passed to the routine specified
    by the routin_64 argument. The routin_64 argument is the 32- or
    64-bit address of this routine.

    If the arglst value is nonzero and is not accessible as an
    address or if the routine is inaccessible, the service returns
    SS$_ACCVIO.

    Alpha and Integrity server systems require a pointer to a valid
    argument list or a value of 0 in the arglst_64 argument. This
    means that the arglst_64 argument, if nonzero, must contain
    an accessible virtual address for an argument list, the first
    quadword of which must be a number between 0 and 255 specifying
    the number of quadwords that follow it on the list.

46  –  $CONNECT

    The Connect service establishes a record stream by associating
    and connecting a RAB with a FAB. You can invoke the Connect
    service only for files that are already open.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

47  –  $CPU CAPABILITIES

    On Alpha and Integrity server systems, allows modification of the
    user capability set for a specified CPU, or for the global user
    capability CPU default.

    This service accepts 64-bit addresses.

    Format

      SYS$CPU_CAPABILITIES  cpu_id [,select_mask] [,modify_mask]

                            [,prev_mask] [,flags]

    C Prototype

      int sys$cpu_capabilities  (int cpu_id, struct _generic_64

                                *select_mask, struct _generic_64

                                *modify_mask, struct _generic_64

                                *prev_mask, struct _generic_64

                                *flags);

47.1  –  Arguments

 cpu_id

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Identifier of the CPU whose user capability mask is to be
    modified or returned. The cpu_id argument is a longword
    containing this number, which is in the supported range of
    individual CPUs from 0 to SYI$_MAX_CPUS -1.

    Specifying the constant CAP$K_ALL_ACTIVE_CPUS applies the current
    modification operation to all CPUs currently in the active set,
    and to the default CPU initialization context in SCH$GL_DEFAULT_
    CPU_CAP. If the prev_mask argument is also supplied, the previous
    default CPU initialization context in SCH$GL_DEFAULT_CPU_CAP will
    be returned rather than any specific CPU state.

    To modify only the user capabilities in SCH$GL_DEFAULT_CPU_CAP,
    the flags argument has a bit constant CAP$M_FLAG_DEFAULT_ONLY.
    When this bit is set, all service operations are performed on
    the global cell rather than on an individual CPU specified in
    the cpu_id argument. This bit does not supersede the CAP$K_
    ALL_ACTIVE_CPUS constant, however. If both constants are
    specified, CAP$K_ALL_ACTIVE_CPUS take precedence; nevertheless,
    the operations to SCH$GL_DEFAULT_CPU are identical because that
    function is a direct subset of the other.

 select_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Mask specifying which bits of the specified CPU's user capability
    mask are to be modified. The select_mask argument is the 32-
    or 64-bit address of a quadword bit vector wherein a bit, when
    set, specifies that the corresponding user capability is to be
    modified.

    The individual user capability bits in select_mask can be
    referenced by their symbolic constant names, CAP$M_USER1 through
    CAP$M_USER16. These constants (not zero-relative) specify the
    position in the mask quadword that corresponds to the bit
    name. Multiple capabilities can be selected by connecting the
    appropriate bits with a logical OR operation.

    The constant CAP$K_ALL_USER, when specified in the select_mask
    argument, selects all user capability bits.

 modify_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Mask specifying the settings for those capabilities selected in
    the select_mask argument. The modify_mask argument is the 32-
    or 64-bit address of a quadword bit vector wherein a bit, when
    set, specifies that the corresponding user capability is to be
    added to the specified CPU; when clear, the corresponding user
    capability is to be removed from the specified CPU.

    The bit constants CAP$M_USER1 through CAP$M_USER16 can be used
    to modify the appropriate bit position in modify_mask. Multiple
    capabilities can be modified by connecting the appropriate bits
    with OR.

    To add a specific user capability to the specified CPU, that
    bit position must be set in both select_mask and modify_mask. To
    remove a specific user capability from the specified CPU, that
    bit position must be set in select_mask and cleared in modify_
    mask.

    The symbolic constant CAP$K_ALL_USER_ADD, when specified in
    modify_mask, indicates that all capabilities specified in select_
    mask are to be added to the current user capability set. The
    constant CAP$K_ALL_USER_REMOVE indicates that all capabilities
    specified are to be cleared from the set.

 prev_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Previous user capability mask for the specified CPU before
    execution of this call to $CPU_CAPABILITIES. The prev_mask
    argument is the 32- or 64-bit address of a quadword into which
    $CPU_CAPABILITIES writes a quadword bit mask specifying the
    previous user capabilities.

    If this argument is specified in conjunction with CAP$K_ALL_
    ACTIVE_CPUS as the cpu_id selection constant or with CAP$M_
    FLAG_DEFAULT_ONLY, the user capability portion of the default
    boot initialization state context SCH$GL_DEFAULT_CPU_CAP will be
    returned.

 flags

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Options selected for the user capability modification. The flags
    argument is a quadword bit vector wherein a bit corresponds to an
    option. Only the bits specified in the following table are used;
    the remainder of the quadword bits are reserved and must be 0.

    Each option (bit) has a symbolic name, defined by the $CAPDEF
    macro. The flags argument is constructed by performing a logical
    OR operation using the symbolic names of each desired option.

    The following table describes the symbolic name of each option:

    Symbolic Name          Description

    CAP$M_FLAG_DEFAULT_    Indicates that the specified operations
    ONLY                   are to be performed on the global context
                           cell instead of on a specific CPU.
                           This bit supersedes any individual CPU
                           specified in cpu_id but does not override
                           the all active set behavior (CAP$K_ALL_
                           ACTIVE_CPUS). Specifying this bit constant
                           applies this operation to the default
                           startup capabilities for all CPUs booted
                           for the first time.

    CAP$M_FLAG_CHECK_CPU   Determines whether the kernel thread can
                           be left in a nonrunnable state under
                           some circumstances. No operation of
                           this service allows a transition from a
                           runnable to blocked state; however, if
                           the kernel thread is already at a blocked
                           state, this bit determines whether the
                           result of the operation must leave it
                           runnable. If CAP$M_FLAG_CHECK_CPU is set
                           or flags is not specified, the kernel
                           thread is checked to ensure that it can
                           safely run on one of the CPUs in the
                           active set. If CAP$M_FLAG_CHECK_CPU is
                           not set, any state operations on kernel
                           threads already in a blocked state are
                           allowed.

48  –  $CPU TRANSITION (Alpha and Integrity servers)

    On Alpha and Integrity server systems, changes the current
    processing state of a CPU in the configure set of the current
    system or an unassigned CPU in an OpenVMS Galaxy configuration.
    This service completes asynchronously. For synchronous
    completion, use the $CPU_TRANSITIONW service.

    This service accepts 64-bit addresses. Parameter and bit
    definitions are resolved in $CSTDEF in the appropriate STARLET
    library.

    For more information, see the VSI OpenVMS Alpha Partitioning and
    Galaxy Guide.

    Format

      SYS$CPU_TRANSITION  tran_code ,cpu_id ,nodename ,node_id ,flags

                          ,efn ,iosb ,astadr_64 ,astprm_64

    C Prototype

      int sys$cpu_transition  (int tran_code, int cpu_id,

                              dsc64$descriptor_s_pq nodename, int

                              node_id, uint32 flags, int efn, IOSB

                              *iosb, VOID_PQ astadr, uint64 astprm,

                              uint32 timout);

48.1  –  Arguments

 tran_code

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Identifier specifying the type of state change to be initiated on
    the target CPU. The tran_code argument is a longword containing
    one of the following values:

    Symbolic Name      Description

    CST$K_CPU_STOP     The target CPU is to be removed from the
                       active set and halted into console mode. It
                       remains in the configure set of the current
                       partition.

    CST$K_CPU_MIGRATE  The target CPU is removed from the configure
                       set of the local partition and the console
                       is requested to add it to the configure set
                       of the partition specified in node_id. If
                       the CPU is currently in the active set, it is
                       automatically brought to console mode through
                       the CST$K_CPU_STOP function first.

    CST$K_CPU_START    The target CPU is requested to exit console
                       mode and join the active set of the current
                       partition. The CPU must already be part of the
                       configure set.

    CST$K_CPU_         The CPU is assigned a default target partition
    FAILOVER           where it will automatically migrate on system
                       failure. This assignment persists until it
                       is superseded. To remove an assignment or
                       partition name, the current partition ID
                       should be specified.

    CST$K_CPU_POWER_   The requested operation is initiated on the
    OFF                target CPU to bring the electrical power to
                       the OFF state. If the CPU is currently in
                       the active set, it is automatically brought
                       to console mode through the CST$K_CPU_STOP
                       function first.

    CST$K_CPU_POWER_   The requested operation is initiated on the
    ON                 target CPU to bring the electrical power to
                       the ON state.

    Each $K code represents an end state operation, each of which
    has a specific start state that the CPU must be in, in order to
    initiate the transition.

    This service may automatically initiate a successful completion
    of the requested operation by initiating one or more transparent
    transitions. This operation takes place if the CPU is not in that
    specific start state, and there are an obvious and unique set
    of transitions that can be initiated prior to the specified end
    state.

    Multiple transitions can also be initiated simultaneously through
    the system service tran_code parameter. Each transition code has
    a $M form as shown in the following list, that can be or'd with a
    specific end state $K code:

    o  CST$M_CPU_STOP

    o  CST$M_CPU_MIGRATE

    o  CST$M_CPU_START

    o  CST$M_CPU_FAILOVER

    o  CST$M_CPU_POWER_OFF

    o  CST$M_CPU_POWER_ON

    Any legal combination of transitions can be specified with the $M
    form, however no more than one $K code is allowed.

 cpu_id

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Identifier of the CPU whose state is to be modified. The cpu_
    id argument is a longword number in the supported range of
    individual CPUs from 0 to SYI$_MAX_CPUS - 1.

    Generic identifiers can also be used to allow OpenVMS to select
    the most appropriate resource. The following table lists these
    codes:

    Code                Description

    CST$K_ANY_OWNED_    Any CPU in the configure set, regardless of
    CPU                 the active set state
    CST$K_ANY_ACTIVE_   Any CPU in the active set
    CPU
    CST$K_ANY_STOPPED_  Any CPU in the configure set, but not the
    CPU                 active set

 node_id

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Identifier of the target Galaxy partition in CST$K_CPU_ASSIGN,
    CST$K_CPU_FAILOVER, or CST$K_CPU_MIGRATE transition. The node_id
    argument is a longword containing a number in the supported range
    of IDs provided by the console for the current hardware platform.
    If the nodename parameter is specified, node_id is ignored.

 flags

    OpenVMS usage:longword_mask
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Options selected for the CPU state transition. The flags argument
    is a longword bit vector wherein a bit corresponds to an option.
    Only the bits specified below are used; the remainder of the
    longword bits are reserved and must be 0.

    Each option (bit) has a symbolic name. The flags argument is
    constructed by performing a logical OR operation using the
    symbolic names of the following options:

    Symbolic Name      Description

    CST$V_CPU_         At the completion of the transition, the CPU's
    DEFAULT_           user capabilities are set back to the default
    CAPABILITIES       system value. If this option is not specified,
                       modified user capabilities are maintained
                       across STOP and START transitions as long
                       as the CPU remains in the local partition
                       configure set.

    CST$V_CPU_ALLOW_   The transition is to be allowed even though it
    ORPHANS            will leave at least one thread in the system
                       unable to execute on any CPU in the active
                       set.

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The event flag to be set when the state transition attempt has
    completed. The efn argument is a longword specifying the number
    of the event flag; however, this service only uses the low-order
    byte.

    When you invoke $CPU_TRANSITION, the specified event flag is
    cleared; when the operation is complete, the event flag is set.

 iosb

    OpenVMS usage:io_status_area
    type:         IOSB structure
    access:       write only
    mechanism:    by 32-bit or 64-bit reference
    The I/O status area to receive the final completion status of
    the transition operation. The iosb argument is the 32-bit or 64-
    bit virtual address of the I/O status area. The I/O status area
    structure is 32 bytes in length; its definition can be found in
    $IOSBDEF in STARLET.MLB for macro and in the file IOSBDEF.H in
    SYS$STARLET_C.TLB for C.

    When you call $CPU_TRANSITION, the I/O status area is cleared.
    After the transition operation is complete, the block is modified
    as follows:

    Symbolic
    Name        Description

    iosb$w_     The first word contains the condition value return,
    status      indicating the final completion status of the
                operation.

                The first bit in the second word of the IOSB is set
                only if an error occurred during the operation; the
                remaining bits are zeroes.

 astadr_64

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit reference
    The AST routine to be executed when the requested transition
    attempt has completed. The astadr_64 argument is the 32-bit
    or 64-bit virtual address of this routine. If you specify the
    astadr_64 argument, the AST routine executes at the access mode
    from which the state transition was requested.

 astprm_64

    OpenVMS usage:user_arg
    type:         quadword
    access:       read only
    mechanism:    by value
    The quadword AST parameter to be passed to the AST routine.

49  –  $CPU TRANSITIONW (Alpha and Integrity servers)

    On Alpha and Integrity server systems, changes the current
    processing state of a CPU in the configure set or an unassigned
    CPU in a Galaxy configuration. This service completes
    synchronously; that is, it returns to the caller only after the
    final completion status of the operation is known.

    In all other respects, $CPU_TRANSITIONW is identical to $CPU_
    TRANSITION. For all other information about the $CPU_TRANSITIONW
    service, see the description of $CPU_TRANSITION in this manual.

    This service accepts 64-bit addresses.

    For more information, see the VSI OpenVMS Alpha Partitioning and
    Galaxy Guide.

    Format

      SYS$CPU_TRANSITIONW  tran_id ,cpu_id ,nodename ,node_id ,flags

                           ,efn ,iosb ,astadr_64 ,astprm_64

    C Prototype

      int sys$cpu_transitionw  (int tran_code, int cpu_id,

                               dsc64$descriptor_s_pq nodename,

                               int node_id, uint32 flags, int efn,

                               IOSB *iosb, UINT64_PQ astadr, uint64

                               astprm, uint32 timout);

50  –  $CREATE

    The Create service constructs a new file according to the
    attributes you specify in the FAB. If any XABs are chained to the
    FAB, then the characteristics described in the XABs are applied
    to the file. This service performs implicit Open and Display
    services.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

51  –  $CREATE BUFOBJ 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, creates a buffer object
    out of a range of pages.

    This service accepts 64-bit addresses.

    Format

      SYS$CREATE_BUFOBJ_64  start_va_64 ,length_64 ,acmode ,flags

                            ,return_va_64 ,return_length_64

                            ,buffer_handle_64

    C Prototype

      int sys$create_bufobj_64  (void *start_va_64, unsigned

                                __int64 length_64, unsigned int

                                acmode, unsigned int flags, void

                                *(*(return_va_64)), unsigned __int64

                                *return_length_64, struct _generic_64

                                *buffer_handle_64);

51.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    Starting virtual address of the pages to be included in the
    buffer object. The specified virtual address will be rounded
    down to a CPU-specific page boundary.

    The virtual address space must already exist.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be included in the buffer
    object. The specified length will be rounded up to a CPU-specific
    page boundary such that it includes all CPU-specific pages in the
    requested range.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode on behalf of which the request is being made. The
    acmode argument is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of
    the caller. For the $CREATE_BUFOBJ_64 service to complete
    successfully, the resultant access mode must be equal to or more
    privileged than the access mode already associated with the pages
    in the specified input range.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the request options. The flags argument is a
    longword bit vector in which each bit corresponds to a flag. The
    $CBODEF macro in STARLET.MLB and CBODEF.H file in SYS$STARLET_
    C.TLB define a symbolic name for each flag.

    The following table describes each flag that is valid for the
    $CREATE_BUFOBJ_64 service:

    Flag          Value  Description

    CBO$M_RETSVA  1      If set, returns the system virtual address
                         in the return_va_64 argument instead of the
                         process virtual address range. (Valid for
                         inner mode callers only.)
    CBO$M_SVA_32  4      If set, creates the buffer object window
                         in 32-bit S0/S1 space. (By default, this
                         service creates the window in 64-bit S2
                         space.)

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the pages in the buffer
    object. The return_va_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword into which the service
    returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the virtual address range in the buffer object. The
    return_length_64 argument is the 32- or 64-bit virtual address of
    a naturally aligned quadword into which the service returns the
    length of the virtual address range in bytes.

 buffer_handle_64

    OpenVMS usage:handle
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned
    quadword into which a buffer handle is returned to be used when
    referencing the created buffer object.

52  –  $CREATE GALAXY LOCK (Alpha Only)

    Allocates an OpenVMS Galaxy lock block from a lock table created
    with the $CREATE_GALAXY_LOCK_TABLE service.

    Note that this system service is supported only in an OpenVMS
    Alpha Galaxy environment.

    For more information about programming with OpenVMS Galaxy system
    services, see the VSI OpenVMS Alpha Partitioning and Galaxy Guide.

    Format

      SYS$CREATE_GALAXY_LOCK  lcktbl_handle ,name ,size ,timeout ,ipl

                              ,rank ,handle

    C Prototype

      int sys$create_galaxy_lock  (unsigned int lcktbl_handle, void

                                  *name, unsigned int size, unsigned

                                  int timeout, unsigned int ipl,

                                  unsigned int rank, unsigned __int64

                                  *lock_handle);

52.1  –  Arguments

 lcktbl_handle

    OpenVMS usage:lock table handle
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    The 32-bit lock table handle that identifies the lock table in
    which to create the lock. This value is returned by SYS$CREATE_
    GALAXY_LOCK_TABLE.

 name

    OpenVMS usage:address
    type:         ASCID string
    access:       read
    mechanism:    input by reference
    The name parameter is a pointer to an ASCID string (passed by
    descriptor). The name can be a maximum of 15 characters. Lock
    names are not checked for uniqueness; therefore, multiple locks
    can be created with the same name.

 timeout

    OpenVMS usage:wait timeout
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    The 32-bit wait or spin timeout specified in 10 microsecond
    units. If not specified, the timeout defaults to 10 microseconds.

 size

    OpenVMS usage:byte count
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    The size of the galaxy lock in bytes. Galaxy locks have two legal
    sizes. These values are returned by SYS$GET_GALAXY_LOCK_SIZE. The
    value passed to SYS$CREATE_GALAXY_LOCK must be equal to the value
    passed to the call to SYS$CREATE_GALAXY_LOCK_TABLE.

 ipl

    OpenVMS usage:IPL of lock
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    For galaxy locks acquired in kernel mode, the IPL to raise to
    while the lock is held. This parameter is ignored for all other
    access mode.

 rank

    OpenVMS usage:rank of lock
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    Rank applied to a galaxy lock. Ranking is used to detect
    potential deadlocks. This parameter is currently ignored.

 handle

    OpenVMS usage:address
    type:         quadword (unsigned)
    access:       write
    mechanism:    output by reference
    The handle parameter is a pointer to a quadword. The value
    returned is a 64-bit handle that uniquely identifies the lock
    galaxy-wide.

53  –  $CREATE GALAXY LOCK TABLE (Alpha Only)

    Allocates an OpenVMS Galaxy lock table.

    Note that this system service is supported only in an OpenVMS
    Alpha Galaxy environment.

    For more information about programming with OpenVMS Galaxy system
    services, see the VSI OpenVMS Alpha Partitioning and Galaxy Guide.

    Format

      SYS$CREATE_GALAXY_LOCK_TABLE  name ,accmode ,section_size

                                    ,section_type ,prot ,lock_size

                                    ,lcktbl_handle

    C Prototype

      int sys$create_galaxy_lock_table  (void *name, unsigned int

                                        accmode, unsigned __int64

                                        section_size, unsigned int

                                        section_type, unsigned int

                                        prot, unsigned int lock_size,

                                        unsigned int *lcktbl_handle);

53.1  –  Arguments

 name

    OpenVMS usage:address
    type:         ASCID string
    access:       read
    mechanism:    input by reference
    The name parameter is a pointer to an ASCID string (passed by
    descriptor). The name is given to the global section that is
    created to contain the galaxy locks.

 accmode

    OpenVMS usage:access mode
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    Access mode that is to be the owner of the pages created during
    the mapping. The accmode argument is a longword containing the
    access mode.

 section_size

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read
    mechanism:    input by value
    Length of the global section to be created, in bytes. The size
    must be specified as a multiple of the CPU-specific page size. A
    size of zero is illegal.

 section_type

    OpenVMS usage:bit mask
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    Used to control where in virtual memory the global section
    is created. If GLCKTBL$C_PROCESS is specified, the section is
    created in P2 (process) space. If GLCKTBL$C_SYSTEM is specified,
    the section is created in S0/S1 (system) space. These constants
    are defined in the GLOCKDEF macro.

 prot

    OpenVMS usage:protection
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    Protection to be applied to the global section.

 lock_size

    OpenVMS usage:byte count
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    The size of the galaxy lock in bytes. Galaxy locks have two
    sizes. The legal values are returned by SYS$GET_GALAXY_LOCK_SIZE.

 lcktbl_handle

    OpenVMS usage:address
    type:         longword
    access:       write
    mechanism:    output by reference
    Pointer to a longword. The value returned is a 32-bit handle that
    uniquely identifies the lock table galaxy-wide.

54  –  $CREATE GDZRO

    On Alpha and Integrity server systems, creates a permanent,
    memory-resident, global demand-zero section to which processes
    can map. Shared page table sections can also be created.

    This service accepts 64-bit addresses.

    Format

      SYS$CREATE_GDZRO  gs_name_64 ,ident_64 ,prot ,length_64 ,acmode

                        ,flags [,reserved_length_64] [,rad_mask]

    C Prototype

      int sys$create_gdzro  (void *gs_name_64, struct _secid

                            *ident_64, unsigned int prot, unsigned

                            __int64 length_64, unsigned int acmode,

                            unsigned int flags,...);

54.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned 32- or 64-bit
    string descriptor pointing to this name string.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of the global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order 2 bits. Their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    If you specify the ident_64 argument as 0, the version number and
    match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 prot

    OpenVMS usage:file_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Protection to be applied to the global demand-zero section. The
    mask contains four 4-bit fields. Bits are read from right to left
    in each field.

    To view the diagram depicting the mask, see the VSI OpenVMS System
    Services Reference Manual.

    Cleared bits indicate that read, write, execute, and delete
    access, in that order, are granted to the particular category
    of user. Only read, write, and execute access are meaningful for
    section protection. Delete access bits are ignored. Read access
    also grants execute access for those situations where execute
    access applies. If 0 is specified, read access and write access
    are granted to all users.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length, in bytes, of the global demand-zero section to be
    created. The length_64 argument must be specified as a multiple
    of the CPU-specific page size. A length of 0 cannot be specified.

                                   NOTE

       Creating a memory-resident global section with shared page
       tables does not imply that the global section must have
       a length that is an even multiple of CPU-specific page
       table pages. The global section might not fully use the
       last shared page table page.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    If the memory-resident global section is created with shared
    page tables, this is the access mode that is stored in the owner,
    read, and write fields of the corresponding shared page table
    entries (PTEs).

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the type of global section to be created as
    well as its characteristics. The flags argument is a longword bit
    vector in which each bit corresponds to a flag. The $SECDEF macro
    and the SECDEF.H file define a symbolic name for each flag. You
    construct the flags argument by performing a logical OR operation
    on the symbol names for all desired flags.

    The following table describes the flags that are valid for the
    $CREATE_GDZRO service:

    Flag          Description

    SEC$M_DZRO    Pages are demand-zero pages. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_MRES    Pages form a memory-resident section. By default,
                  this flag is always present in this service and
                  cannot be disabled.
    SEC$M_PERM    Global section is permanent. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_RAD_    When set, the argument rad_mask is used as a mask
    HINT          of RADs from which to allocate memory. See the rad_
                  mask argument description for more information.
    SEC$M_READ_   Create shared table pages for the section that
    ONLY_SHPT     allow read access only.
    SEC$M_SHMGS   Create a shared-memory global section.
    SEC$M_SYSGBL  Pages form a system global section. By default,
                  pages form a group global section.
    SEC$M_WRT     Pages form a read/write section. By default, this
                  flag is always present in this service and cannot
                  be disabled.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set.

 reserved_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    32- or 64-bit reference
    Length, in bytes, of the global section as currently registered
    in the Reserved Memory Registry. The reserved_length_64 argument
    is the 32- or 64-bit virtual address of a naturally aligned
    quadword into which the service returns the reserved length.

    If reserved_length_64 is not specified or is specified as 0, no
    reserved length is returned to the caller.

    If the memory-resident global section is not registered,
    reserved_length_64 is written with the value 0.

 rad_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Use the rad_mask argument to specify from which RADs to allocate
    memory. Currently only one bit may be set. The specified RAD
    must contain memory. This argument is only a hint. Memory may be
    obtained from other RADs if no free memory is available at the
    time of allocation.

    The rad_mask argument is considered only if the SEC$M_RAD_HINT
    flag is specified. Otherwise, this argument is ignored.

    On a system that does not support resource affinity domains
    (RADs), specifying 1 for the rad_mask argument is allowed.

    RAD is supported on AlphaServer GS series systems and starting
    from OpenVMS Version 8.4, support is extended to NUMA capable
    Integrity servers.

55  –  $CREATE GFILE (Alpha and Integrity servers)

    On Alpha and Integrity server systems, creates a permanent global
    disk file section to which processes can map.

    This service accepts 64-bit addresses.

    Format

      SYS$CREATE_GFILE  gs_name_64 ,ident_64 ,file_offset_64

                        ,length_64 ,chan ,acmode ,flags

                        ,return_length_64 [,fault_cluster]

    C Prototype

      int sys$create_gfile  (void *gs_nam_64, struct _secid

                            *ident_64, unsigned __int64

                            file_offset_64, unsigned __int64

                            length_64, unsigned short int chan,

                            unsigned int acmode, unsigned int flags,

                            unsigned __int64 *return_length_64,...);

55.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 64-
    bit virtual address of a naturally aligned 32- or 64-bit string
    descriptor pointing to this name string.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order two bits. The valid values, symbolic names by which they
    can be specified, and their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    If you specify the ident_64 argument as 0, the version number and
    match control fields default to 0.

    The version number is in the second longword and contains
    two fields: a minor identification in the low-order 24 bits
    and a major identification in the high-order 8 bits. You can
    assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 file_offset_64

    OpenVMS usage:byte offset
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Byte offset into the file that marks the beginning of the
    section. The file_offset_64 argument is a quadword containing
    this number. If you do not specify the file_offset_64 argument or
    specify it as 0, the section is created beginning with the first
    byte in the file.

    The file_offset_64 argument must be a multiple of virtual disk
    blocks.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length, in bytes, of the global disk file section to be created.
    The length specified must be 0 or a multiple of virtual disk
    blocks. If the length specified is 0 or extends beyond end-of-
    file (EOF), the global disk file section is created up to and
    including the virtual block number that contains EOF.

 chan

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the channel on which the file has been accessed. The
    chan argument is a longword containing this number. The access
    mode at which the channel was opened must be equal to or less
    privileged than the access mode of the caller.

    You can use the OpenVMS Record Management Services (RMS) macro
    $OPEN to access a file; the file options parameter in the file
    access block must indicate a user file open (UFO keyword).

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the type of global section to be created as
    well as its characteristics. The flags argument is a longword bit
    vector in which each bit corresponds to a flag. The $SECDEF macro
    and the SECDEF.H file define a symbolic name for each flag. You
    construct the flags argument by performing a logical OR operation
    on the symbol names for all desired flags.

    The following table describes each flag that is valid for the
    $CREATE_GFILE service:

    Flag          Description

    SEC$M_CRF     Pages are copy-on-reference. By default, pages are
                  shared.
    SEC$M_DZRO    Pages are demand-zero pages. By default, they are
                  not zeroed when copied.

                  Note that SEC$M_DZRO and SEC$M_CRF cannot both be
                  set and that SEC$M_DZRO set and SEC$M_WRT clear is
                  an invalid combination.
    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_PERM    Global section is permanent. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_SYSGBL  Pages form a system global section. By default,
                  pages form a group global section.
    SEC$M_WRT     Pages form a read/write section. By default, pages
                  form a read-only section.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an illegal combination of flags is set.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the global section created. The return_length_64
    argument is the 32- or 64-bit virtual address of a naturally
    aligned quadword into which the service returns the length of the
    global section in bytes.

 fault_cluster

    OpenVMS usage:byte count
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Page fault cluster in byte units indicating how many pages are
    to be brought into memory when a page fault occurs for a single
    page. The fault cluster specified is rounded up to a multiple of
    CPU-specific pages.

    If this argument is specified as 0, the system default page fault
    cluster is used. If this argument is specified as more than
    the maximum allowed for the system, no error is returned. The
    systemwide maximum is used.

56  –  $CREATE GPFILE (Alpha and Integrity servers)

    On Alpha and Integrity server systems, creates a permanent global
    page file section to which processes can map.

    This service accepts 64-bit addresses.

    Format

      SYS$CREATE_GPFILE  gs_name_64 ,ident_64 ,prot ,length_64

                         ,acmode ,flags

    C Prototype

      int sys$create_gpfile  (void *gs_name_64, struct _secid

                             *ident_64, unsigned int prot, unsigned

                             __int64 length_64, unsigned int acmode,

                             unsigned int flags);

56.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned 32- or 64-bit
    string descriptor pointing to this name string.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order 2 bits. Their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    If you specify the ident_64 argument as 0, the version number and
    match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 prot

    OpenVMS usage:file_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Protection to be applied to the global page file section. The
    mask contains four 4-bit fields. Bits are read from right to left
    in each field.

    To view the diagram depicting the mask, see the VSI OpenVMS System
    Services Reference Manual.

    Cleared bits indicate that read, write, execute, and delete
    access, in that order, are granted to the particular category
    of user. Only read, write, and execute access are meaningful for
    section protection. Delete access bits are ignored. Read access
    also grants execute access for those situations where execute
    access applies. If 0 is specified, read access and write access
    are granted to all users.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length, in bytes, of the global page file section to be created.
    The length_64 argument must be specified as a multiple of the
    CPU-specific page size. A length of 0 cannot be specified.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the type of global section to be created as
    well as its characteristics. The flags argument is a longword bit
    vector in which each bit corresponds to a flag. The $SECDEF macro
    and the SECDEF.H file define a symbolic name for each flag. You
    construct the flags argument by performing a logical OR operation
    on the symbol names for all desired flags.

    The following table describes the flags that are valid for the
    $CREATE_GPFILE service:

    Flag          Description

    SEC$M_DZRO    Pages are demand-zero pages.
    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_PAGFIL  Pages form a global page-file section. SEC$M_PAGFIL
                  also implies SEC$M_WRT and SEC$M_DZRO. By default,
                  this flag is always present in this service and
                  cannot be disabled.
    SEC$M_PERM    Global section is permanent. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_SYSGBL  Pages form a system global section. By default,
                  pages form a group global section.
    SEC$M_WRT     Pages form a read/write section. By default, this
                  flag is always present in this service and cannot
                  be disabled.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set.

57  –  $CREATE GPFN (Alpha and Integrity servers)

    On Alpha and Integrity server systems, creates a permanent page
    frame section to which processes can map.

    This service accepts 64-bit addresses.

    Format

      SYS$CREATE_GPFN  gs_name_64 ,ident_64 ,prot ,start_pfn

                       ,page_count ,acmode ,flags

    C Prototype

      int sys$create_gpfn  (void *gs_name_64, struct _secid

                           *ident_64, unsigned int prot, unsigned

                           int start_pfn, unsigned int page_count,

                           unsigned int acmode, unsigned int flags);

57.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned 32- or 64-bit
    string descriptor pointing to this name string.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order two bits.

    The valid values, symbolic names by which they can be specified,
    and their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    If you specify the ident_64 argument as 0, the version number and
    match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 prot

    OpenVMS usage:file_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Protection to be applied to the global page frame section. The
    mask contains four 4-bit fields. Bits are read from right to left
    in each field.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the diagram depicting the mask.

    Cleared bits indicate that read, write, execute, and delete
    access, in that order, are granted to the particular category
    of user. Only read, write, and execute access are meaningful
    for section protection. Delete access bits are ignored. Read
    access also grants execute access for those situations where
    execute access applies. If zero is specified, read access and
    write access are granted to all users.

 start_pfn

    OpenVMS usage:page frame number
    type:         longword (unsigned) on Alpha, quadword (unsigned)
                  on Integrity servers
    access:       read only
    mechanism:    by value
    The CPU-specific page frame number where the section begins in
    memory.

 page_count

    OpenVMS usage:CPU-specific page count
    type:         longword (unsigned) on Alpha, quadword (unsigned)
                  on Integrity servers
    access:       read only
    mechanism:    by value
    Length of the page frame section in CPU-specific pages.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the characteristics of the page frame
    section to be created. The flags argument is a longword bit
    vector in which each bit corresponds to a flag. The $SECDEF macro
    and the SECDEF.H file define a symbolic name for each flag. You
    construct the flags argument by performing a logical OR operation
    on the symbol names for all desired flags.

    The following table describes the flags that are valid for the
    $CREATE_GPFN service:

    Flag          Description

    SEC$M_ARGS64  Indicates that all parameters, specifically start_
                  pfn and page_count, are passed as 64-bit numbers.
                  This flag is ignored on OpenVMS Alpha but must be
                  set on Integrity server systems. If the flag is
                  not set on Integrity servers, the error code SS$_
                  IVSECFLG is returned.
    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_PERM    Global section is permanent. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_PFNMAP  Pages form a page frame section. By default, this
                  flag is always present in this service and cannot
                  be disabled.
    SEC$M_SYSGBL  Pages form a system global page frame section.
                  By default, pages form a group global page frame
                  section.
    SEC$M_        Flag that must be set when a PFN-mapped section
    UNCACHED      is created if this section must be treated as
                  uncached memory. Flag is ignored on Alpha systems;
                  it applies only to Integrity server systems.
    SEC$M_WRT     Pages form a read/write section. By default, pages
                  form a read-only section.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an illegal combination of flags is set.

58  –  $CREATE RDB

    Initializes a rights database.

    Format

      SYS$CREATE_RDB  [sysid]

    C Prototype

      int sys$create_rdb  (struct _generic_64 *sysid);

58.1  –  Argument

 sysid

    OpenVMS usage:system_access_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    System identification value associated with the rights database
    when $CREATE_RDB completes execution. The sysid argument is the
    address of a quadword containing the system identification value.
    If you omit sysid, the current system time in 64-bit format is
    used.

59  –  $CREATE REGION 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, creates a virtual region
    within the process's private address space.

    This service accepts 64-bit addresses.

    Format

      SYS$CREATE_REGION_64  length_64 ,region_prot ,flags

                            ,return_region_id_64 ,return_va_64

                            ,return_length_64 [,start_va_64]

    C Prototype

      int sys$create_region_64  ( unsigned __int64 length_64,

                                unsigned int region_prot,

                                unsigned int flags, struct

                                _generic_64 *return_region_id, void

                                *(*(return_va_64)), unsigned __int64

                                *return_length_64,...);

59.1  –  Arguments

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual region to be created. The length specified
    must be a multiple of CPU-specific pages. This length is fixed at
    the time the region is created.

    If you want to map multiple memory-resident sections to this
    region, specify a length large enough not only to accommodate
    all of the sections, but also to fill the space necessary to
    align the next section for a maximum of effective page sizes
    (granularity hints). You can satisfy this requirement by simply
    allocating a region that is twice as large as the sum of all
    sections you want to map.

    If the flag VA$M_SHARED_PTS is set, this length is rounded up to
    include an even multiple of CPU-specific pages mapped by a page
    table page.

 region_prot

    OpenVMS usage:region_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Region protection to be associated with the region to be created.
    The region_prot argument is a longword containing the create and
    owner mode.

    The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF macro in
    STARLET.MLB define the following symbols for valid combinations
    of create and owner modes:

    Symbol                 Create and Owner Modes

    VA$C_REGION_UCREATE_   User create mode and user owner mode
    UOWN
    VA$C_REGION_UCREATE_   User create mode and supervisor owner mode
    SOWN
    VA$C_REGION_UCREATE_   User create mode and executive owner mode
    EOWN
    VA$C_REGION_UCREATE_   User create mode and kernel owner mode
    KOWN
    VA$C_REGION_SCREATE_   Supervisor create mode and supervisor
    SOWN                   owner mode
    VA$C_REGION_SCREATE_   Supervisor create mode and executive owner
    EOWN                   mode
    VA$C_REGION_SCREATE_   Supervisor create mode and kernel owner
    KOWN                   mode
    VA$C_REGION_ECREATE_   Executive create mode and executive owner
    EOWN                   mode
    VA$C_REGION_ECREATE_   Executive create mode and kernel owner
    KOWN                   mode
    VA$C_REGION_KCREATE_   Kernel create mode and kernel owner mode
    KOWN

    For both create and owner mode, the $CREATE_REGION_64 service
    uses whichever of the following two access modes is least
    privileged:

    o  Access mode specified by the acmode argument

    o  Access mode of the caller

    A subsequent call to any system service that created address
    space within a region must be made from an access mode that is
    the same or more privileged than the create mode associated with
    the region.

    A subsequent call to $DELETE_REGION_64 to delete the region must
    be made from an access mode that is the same or more privileged
    than the owner mode associated with the region.

    All regions created by $CREATE_REGION_64 are automatically
    deleted when the image is run down on image exit.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the characteristics of the region to
    be created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The file VADEF.H in
    SYS$STARLET_C.TLB and the $VADEF macro in STARLET.MLB define a
    symbolic name for each flag. You construct the flags argument
    by performing a logical OR operation on the symbol names for all
    desired flags.

    The following table describes the flags that are valid for the
    $CREATE_REGION_64 service:

    Flag             Description

    VA$M_DESCEND     Created region is a descending region; that
                     is, allocation occurs toward decreasing virtual
                     addresses. If VA$M_DESCEND is not specified,
                     the region allocation occurs toward increasing
                     virtual addresses.
    VA$M_SHARED_PTS  Created region requires the virtual address
                     space created within it to be capable of
                     using shared page tables. If this flag is not
                     specified, the virtual address space created
                     within the region is mapped by process-private
                     page tables only. By default, the region does
                     not allow the use of shared page tables.
    VA$M_P0_SPACE    Create region in P0 space. This flag cannot be
                     set if VA$M_P1_SPACE is set.
    VA$M_P1_SPACE    Create region in P1 space. This flag cannot be
                     set if VA$M_P0_SPACE is set.

    All other bits in the flags argument are reserved for future
    use by VSI. The condition value SS$_IVREGFLG is returned if any
    undefined bits are set.

 return_region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the created region. The
    return_region_id_64 argument is the 32- or 64-bit virtual address
    of a naturally aligned quadword into which the service returns
    the region ID.

 return_va_64

    OpenVMS usage:return address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the region. The
    return_va_64 argument is the 32- or 64-bit virtual address of
    a naturally aligned quadword into which the service returns the
    lowest virtual address of the region.

    If the flag VA$M_SHARED_PTS is set, the returned virtual address
    is aligned to a CPU-specific page table page boundary. If the
    global section mapped by this shared page table region is large
    enough that multiple page table pages are required to map the
    global section, the page tables themselves can be mapped with
    granularity hints; therefore, the alignment of the returned
    virtual address can be even greater than that of a single CPU-
    specific page table page boundary.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the region actually created. The return_length_64
    argument is the 32- or 64-bit virtual address of a naturally
    aligned quadword into which the service returns the length of the
    region in bytes.

    If the flag VA$M_SHARED_PTS is set, the returned length is the
    input length rounded up to an even multiple of bytes mapped by a
    single CPU-specific page table page.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting address for the created virtual region. The
    specified virtual address must be a CPU-specific page aligned
    address.

    If the start_va_64 argument is not specified or is specified
    as 0, the region can be created anywhere within the following
    address spaces:

    o  P2 space (if the flags VA$M_P0_SPACE and VA$M_P1_SPACE are
       clear)

    o  P0 space (if the flag VA$M_P0_SPACE is set and VA$M_P1_SPACE
       is clear)

    o  P1 space (if the flag VA$M_P1_SPACE is set and VA$M_P0_SPACE
       is clear)

    If the flag VA$M_SHARED_PTS is set and this argument is
    specified, the specified starting address must be aligned to the
    larger of a natural page table boundary or the largest possible
    page size used to map the section. If the alignment is less than
    a page table boundary, the $CREATE_REGION_64 service returns an
    error. If the alignment is less than the largest page size used
    in the section, an error might be returned when you attempt to
    map the section.

    If you do not specify a starting address, OpenVMS automatically
    ensures correct alignment.

60  –  $CREATE UID

    Generates a universally unique identifier (UID).

    Format

      SYS$CREATE_UID  uid

    C Prototype

      int sys$create_uid  (unsigned int uid [4]);

60.1  –  Arguments

 uid

    OpenVMS usage:uid
    type:         octaword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of an octaword in which the unique identifier is returned
    to the calling process.

61  –  $CREATE USER PROFILE

    Returns an encoded security profile for the specified user.

    Format

      SYS$CREATE_USER_PROFILE  usrnam ,[itmlst] ,[flags] ,usrpro

                               ,usrprolen ,[contxt]

    C Prototype

      int sys$create_user_profile  (void *usrnam, void *itmlst,

                                   unsigned int flags, void *usrpro,

                                   unsigned int *usrprolen, unsigned

                                   int *contxt);

61.1  –  Arguments

 usrnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor
    Name of the user whose security profile is to be returned. The
    usrnam argument is the address of a descriptor pointing to a text
    string containing the user name. The user name string can contain
    a maximum of 12 alphanumeric characters.

    For more information about user names, see the VSI OpenVMS Guide
    to System Security.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying the portions of the user's security profile
    to be replaced or augmented.

    To view the general format of an item descriptor and the fields
    description, see the VSI OpenVMS System Services Reference Manual.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The flags argument is used to control the behavior of the
    $CREATE_USER_PROFILE service. This argument does not accept ISS$
    mask values; therefore, continue to use the CHP$ mask values for
    this argument.

    The following table describes each flag:

    Symbol          Description

    CHP$M_          By default, $CREATE_USER_PROFILE initializes
    DEFCLASS        the security profile with the user's maximum
                    authorized classification. When this flag is set,
                    the service initializes the security profile from
                    the user's default classification instead. This
                    flag is Reserved to VSI.

    CHP$M_DEFPRIV   By default, $CREATE_USER_PROFILE initializes
                    the security profile with the user's authorized
                    privilege mask. When this flag is set, the
                    service initializes the security profile from
                    the user's default privilege mask instead.

    CHP$M_          Instructs the service not to access the user
    NOACCESS        authorization file (SYSUAF.DAT) or rights
                    database (RIGHTSLIST.DAT) to build the security
                    profile. This flag can be used as an optimization
                    when all the information necessary to build the
                    security profile is known to the caller.

 usrpro

    OpenVMS usage:char_string
    type:         opaque byte stream
    access:       write only
    mechanism:    by reference
    Buffer to receive the security profile. The usrpro argument is
    the address of a buffer to receive the encoded security profile.
    If an address of 0 is specified, $CREATE_USER_PROFILE returns the
    size of the buffer needed in the usrprolen argument.

 usrprolen

    OpenVMS usage:word
    type:         word (unsigned)
    access:       read/write
    mechanism:    by reference
    Word to receive the full size of the security profile. On input,
    the usrprolen argument specifies the length of the buffer pointed
    to by the usrpro argument. The usrprolen argument is the address
    of a word to which $CREATE_USER_PROFILE writes the actual length
    of the security profile. If the caller specifies a usrpro address
    of 0, $CREATE_USER_PROFILE returns the anticipated size, in
    bytes, of the buffer needed to hold the user's security profile
    in the usrprolen argument.

 contxt

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Longword used to maintain authorization file context. The contxt
    argument is the address of a longword to receive a $GETUAI
    context value. On the initial call, this longword should contain
    the value -1. On subsequent calls, the value of the contxt
    argument from the previous call should be passed back in.

    Using the contxt argument keeps the UAF open across all calls,
    thereby improving the performance of the system on subsequent
    calls. To close the UAF, you must run down the image.

    The resulting context value from a $CREATE_USER_PROFILE call can
    also be used as the input contxt argument to the $GETUAI system
    service, and vice versa.

62  –  $CRELNM

    Creates a logical name and specifies its equivalence names.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$CRELNM  [attr] ,tabnam ,lognam ,[acmode] ,[itmlst]

    C Prototype

      int sys$crelnm  (unsigned int *attr, void *tabnam, void

                      *lognam, unsigned char *acmode, void *itmlst);

62.1  –  Arguments

 attr

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Attributes to be associated with the logical name. The attr
    argument is the 32- or 64-bit address of a longword bit mask
    specifying these attributes.

    Each bit in the longword corresponds to an attribute and has a
    symbolic name. These symbolic names are defined by the $LNMDEF
    macro. To specify an attribute, specify its symbolic name or set
    its corresponding bit. The longword bit mask is the logical OR of
    all desired attributes. All undefined bits in the longword must
    be 0.

    If you do not specify this argument or specify it as 0 (no bits
    set), no attributes are associated with the logical name.

    The attributes are as follows:

    Attribute      Description

    LNM$M_         If set, the logical name is not copied from the
    CONFINE        process to its spawned subprocesses. You create
                   a subprocess with the DCL command SPAWN or the
                   LIB$SPAWN Run-Time Library routine. If the logical
                   name is placed into a process-private table that
                   has the CONFINE attribute, the CONFINE attribute
                   is automatically associated with the logical
                   name. This applies only to process-private logical
                   names.

    LNM$M_NO_      If set, the logical name cannot be duplicated in
    ALIAS          this table at an outer access mode. If another
                   logical name with the same name already exists in
                   the table at an outer access mode, it is deleted.

 tabnam

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the table in which to create the logical name. The tabnam
    argument is the 32- or 64-bit address of a descriptor that points
    to the name of this table. This argument is required and must be
    specified in uppercase.

    The name must be entered in uppercase letters. (This requirement
    differs from the $CRELNT system service, which automatically
    changes tabnam to uppercase.)

    If tabnam is not the name of a logical name table, it is assumed
    to be a logical name and is translated iteratively until either
    the name of a logical name table is found or the number of
    translations allowed by the system has been performed. If tabnam
    translates to a list of logical name tables, the logical name is
    entered into the first table in the list.

 lognam

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the logical name to be created. The lognam argument is
    the 32- or 64-bit address of a descriptor that points to the
    logical name string.

    Logical name strings of logical names created within either the
    system or process directory table must consist of uppercase
    alphanumeric characters, dollar signs ($),  hyphens (-), and
    underscores (_);  the maximum length is 31 characters. The
    maximum length of logical name strings created within other
    tables is 255 characters with no restrictions on the types of
    characters that can be used. This argument is required.

 acmode

    OpenVMS usage:access_mode
    type:         byte (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Access mode to be associated with the logical name. The acmode
    argument is the 32- or 64-bit address of a byte that specifies
    the access mode.

    The access mode associated with the logical name is determined
    by maximizing the access mode of the caller with the access
    mode specified by the acmode argument, which means that the less
    privileged of the two is used. Symbols for the four access modes
    are defined by the $PSLDEF macro.

    You cannot specify an access mode more privileged than that
    of the containing table. However, if the caller has SYSNAM
    privilege, then the specified access mode is associated with
    the logical name regardless of the access mode of the caller.

    If you omit this argument or specify it as 0, the access mode of
    the caller is associated with the logical name.

 itmlst

    OpenVMS usage:32-bit item_list_3 or 64-bit item_list 64b
    type:         longword (unsigned) for 32-bit; quadword (unsigned)
                  for 64-bit
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Item list describing the equivalence names to be defined for
    the logical name and information to be returned to the caller.
    The itmlst argument is the 32- or 64-bit address of a list of
    item descriptors, each of which specifies information about an
    equivalence name. An item list in 32-bit format is terminated by
    a longword of 0; an item list in 64-bit format is terminated by
    a quadword of 0. All items in an item list must be of the same
    format-either 32-bit or 64-bit.

    Note that it is possible to create a logical that has no
    equivalence names. This is done by either omitting the itmlst
    argument to $CRELNM, or by not including the LNM$_STRING item
    code to the itmlst data structure that is passed into $CRELNM. It
    is not possible to create this kind of logical using DCL.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagrams and descriptor fields tables.

63  –  $CRELNT

    Creates a process-private or shareable logical name table.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$CRELNT  [attr] ,[resnam] ,[reslen] ,[quota]

                  ,[promsk] ,[tabnam] ,partab ,[acmode]

    C Prototype

      int sys$crelnt  (unsigned int *attr, void *resnam, unsigned

                      short int *reslen, unsigned int *quota,

                      unsigned short int *promsk, void *tabnam, void

                      *partab, unsigned char *acmode);

63.1  –  Arguments

 attr

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Attributes to affect the creation of the logical name table and
    to be associated with the newly created logical name table. The
    attr argument is the 32- or 64-bit address of a longword bit mask
    specifying these attributes.

    Each bit in the longword corresponds to an attribute and has a
    symbolic name. These symbolic names are defined by the $LNMDEF
    macro. To specify an attribute, specify its symbolic name or set
    its corresponding bit. The longword bit mask is the logical OR of
    all desired attributes. All unused bits in the longword must be
    0.

    If you do not specify this argument or specify it as 0 (no bits
    set), no attributes are associated with the logical name table or
    affect the creation of the new table.

    The following table describes each attribute:

    Attribute       Description

    LNM$M_CONFINE   If set, the logical name table is not copied
                    from the process to its spawned subprocesses. You
                    create a subprocess with the DCL command SPAWN or
                    the Run-Time Library LIB$SPAWN routine. You can
                    specify this attribute only for process-private
                    logical name tables; it is ignored for shareable
                    tables.

                    The state of this bit is also propagated from
                    the parent table to the newly created table
                    and can be overridden only if the parent table
                    does not have the bit set. Thus, if the parent
                    table has the LNM$M_CONFINE attribute, the newly
                    created table will also have it, no matter what
                    is specified in the attr argument. On the other
                    hand, if the parent table does not have the
                    LNM$M_CONFINE attribute, the newly created table
                    can be given this attribute through the attr
                    argument.

                    The process-private directory table LNM$PROCESS_
                    DIRECTORY does not have the LNM$M_CONFINE
                    attribute.

    LNM$M_CREATE_   This attribute applies to all types of logical
    IF              name tables except clusterwide logical name
                    tables. If set, a new logical name table is
                    created only if the specified table name is not
                    already entered at the specified access mode in
                    the appropriate directory table. If the table
                    name exists, a new table is not created and no
                    modification is made to the existing table name.
                    This holds true even if the existing name has
                    differing attributes or quota values, or even if
                    it is not the name of a logical name table.

                    If LNM$M_CREATE_IF is not set, the new logical
                    name table will supersede any existing table name
                    with the same access mode within the appropriate
                    directory table. Setting this attribute is useful
                    when two or more users want to create and use
                    the same table but do not want to synchronize its
                    creation.

                    Regardless of the setting of LNM$M_CREATE_IF:

                    o  You cannot create a new clusterwide logical
                       name table with the same name and the same
                       mode as an existing clusterwide logical name
                       table until you delete the existing one.

                    o  If you specify a new clusterwide logical name
                       table with the same name and access mode as
                       an existing local logical name table, the new
                       clusterwide logical name table is created,
                       and the local table and its logical names are
                       deleted.

    LNM$M_NO_       If set, the name of the logical name table cannot
    ALIAS           be duplicated at an outer access mode within
                    the appropriate directory table. If this name
                    already exists at an outer access mode, it is
                    deleted. Note that this attribute does not apply
                    to clusterwide logical name tables.

 resnam

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       write only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the newly created logical name table, returned by
    $CRELNT. The resnam argument is the 32- or 64-bit address of a
    descriptor pointing to this name. The name is a character string
    whose maximum length is 31 characters.

 reslen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Length in bytes of the name of the newly created logical name
    table, returned by $CRELNT. The reslen argument is the 32- or
    64-bit address of a word to receive this length.

 quota

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Maximum number of bytes of memory to be allocated for logical
    names contained in this logical name table. The quota argument is
    the 32- or 64-bit address of a longword specifying this value.

    If you specify no quota value, the logical name table has an
    infinite quota. Note that a shareable table created with infinite
    quota permits users with write access to that table to consume
    system dynamic memory without limit.

 promsk

    OpenVMS usage:file_protection
    type:         word (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Protection mask to be associated with the newly created shareable
    logical name table. The promsk argument is the 32- or 64-bit
    address of a word that contains a value that represents four
    4-bit fields. Each field grants or denies the type of access,
    either delete, create, write, or read, allowed for system, owner,
    group, and world users.

    The following diagram depicts these protection bits:

            |------------|------------|------------|------------|
            |   World    |    Group   |   Owner    |   System   |
            |------------|------------|------------|------------|
            | D  C  W  R | D  C  W  R | D  C  W  R | D  C  W  R |
            |------------|------------|------------|------------|
             15 14 13 12  11 10  9  8   7  6  5  4   3  2  1  0

    Create access is required to create a shareable table within
    another shareable table.

    Each field consists of 4 bits specifying protection for the
    logical name table. The remaining bits in the protection mask
    are as follows:

    o  Read privileges allow access to names in the logical name
       table.

    o  Write privileges allow creation and deletion of names within
       the logical name table.

    o  Delete privileges allow deletion of the logical name table.

    If a bit is clear, access is granted.

    The initial security profile for any shared logical name table is
    taken from the logical name table template. The owner is then set
    to the process UIC and, if the promsk argument is nonzero, that
    value replaces the protection mask.

 tabnam

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    The name of the new logical name table. The tabnam argument
    is the 32- or 64-bit address of a character-string descriptor
    pointing to this name string. Table names are contained in either
    the process or system directory table (LNM$PROCESS_DIRECTORY or
    LNM$SYSTEM_DIRECTORY); therefore, table names must consist of
    alphanumeric characters, dollar signs ($),  and underscores (_);
    the maximum length is 31 characters. Names of logical name tables
    must be in uppercase letters. If you specify a lowercase name,
    the $CRELNT service automatically changes it to uppercase.

    This argument is required for clusterwide logical name tables.
    For all other logical name tables, if you do not specify this
    argument, a default name in the format LNM$xxxx is used, where
    xxxx is a unique hexadecimal number.

    You need SYSPRV privilege or write access to LNM$SYSTEM_DIRECTORY
    to specify the name of a shareable logical name table.

 partab

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name string for the parent table name. The partab argument is the
    32- or 64-bit address of a character string descriptor pointing
    to this name string.

    If the parent table is shareable, then the newly created table
    is shareable and is entered into the system directory LNM$SYSTEM_
    DIRECTORY. If the parent table is process-private, then the newly
    created table is process-private and is entered in the process
    directory LNM$PROCESS_DIRECTORY.

    You need SYSPRV privilege or write access to the system directory
    table to create a named shareable table. This argument is
    required.

 acmode

    OpenVMS usage:access_mode
    type:         byte (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Access mode to be associated with the newly created logical name
    table. The acmode argument is the 32- or 64-bit address of a byte
    containing this access mode. The $PSLDEF macro defines symbolic
    names for the four access modes.

    If you do not specify the acmode argument or specify it as 0, the
    access mode of the caller is associated with the newly created
    logical name table.

    The access mode associated with the logical name table is
    determined by maximizing the access mode of the caller with the
    access mode specified by the acmode. The less privileged of the
    two access modes is used.

    However, if the caller has SYSNAM privilege, then the specified
    access mode is associated with the logical name table, regardless
    of the access mode of the caller.

    Access modes associated with logical name tables govern logical
    name table processing and provide a protection mechanism that
    prevents the deletion of inner access mode logical name tables
    by nonprivileged users. You cannot specify an access mode more
    privileged than that of the parent table.

    A logical name table with supervisor mode access can contain
    supervisor mode and user mode logical names and can be a parent
    to supervisor mode and user mode logical name tables, but cannot
    contain executive or kernel mode logical names or be a parent to
    executive or kernel mode logical name tables.

    You need SYSNAM privilege to specify executive or kernel mode
    access for a logical name table.

64  –  $CREMBX

    Creates a virtual mailbox device named MBAn and assigns an I/O
    channel to it. The system provides the unit number n when it
    creates the mailbox. If a logical name is specified and a mailbox
    with the specified name already exists, the $CREMBX service
    assigns a channel to the existing mailbox.

    Format

      SYS$CREMBX  [prmflg] ,chan ,[maxmsg] ,[bufquo] ,[promsk]

                  ,[acmode] ,[lognam] ,[flags] ,[nullarg]

    C Prototype

      int sys$crembx  (char prmflg, unsigned short int *chan,

                      unsigned int maxmsg, unsigned int bufquo,

                      unsigned int promsk, unsigned int acmode, void

                      *lognam,...);

64.1  –  Arguments

 prmflg

    OpenVMS usage:boolean
    type:         byte (unsigned)
    access:       read only
    mechanism:    by value
    Indicator specifying whether the created mailbox is to be
    permanent or temporary. The prmflg argument is a byte value.
    The first bit specifies a permanent mailbox; the value 0, which
    is the default, specifies a temporary mailbox. Any other values
    result in an error.

 chan

    OpenVMS usage:channel
    type:         word
    access:       write only
    mechanism:    by reference
    Channel number assigned by $CREMBX to the mailbox. The chan
    argument is the address of a word into which $CREMBX writes the
    channel number.

 maxmsg

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Maximum size (in bytes) of a message that can be sent to the
    mailbox. The maxmsg argument is a longword value containing this
    size.

    The maximum value you can specify for the maxmsg argument is
    65535. If you do not specify a value or specify the value
    as 0, the operating system provides a default value from the
    DEFMBXBUFQUO system parameter.

 bufquo

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of bytes of system dynamic memory that can be used to
    buffer messages sent to the mailbox. The bufquo argument is a
    value containing this number. If you do not specify the bufquo
    argument or specify it as 0, the operating system provides a
    default value from the DEFMBXBUFQUO system parameter.

    For a temporary mailbox, this value must be less than or equal to
    the process buffer quota.

    Note that as of Version 7.3-1, the maximum value limit for the
    bufquo argument is the amount of available non-paged pool.

 promsk

    OpenVMS usage:file_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Protection mask to be associated with the created mailbox. The
    promsk argument is a longword value that is the combined value
    of the bits set in the protection mask. Cleared bits grant access
    and set bits deny access to each of the four classes of user:
    world, group, owner, and system. The following diagram depicts
    these protection bits:

            |------------|------------|------------|------------|
            |   World    |    Group   |   Owner    |   System   |
            |------------|------------|------------|------------|
            | L  P  W  R | L  P  W  R | L  P  W  R | L  P  W  R |
            |------------|------------|------------|------------|
             15 14 13 12  11 10  9  8   7  6  5  4   3  2  1  0

    If you do not specify the promsk argument or specify it as 0, the
    mailbox template is used.

    The logical access bit must be clear for the class of user
    requiring access to the mailbox. The access bit must be clear
    for all categories of user because logical access is required to
    read or write to a mailbox; thus, setting or clearing the read
    and write access bits is meaningless unless the logical access
    bit is also cleared.

    The physical access bit is ignored for all categories of user.

    Logical access also allows you to queue read or write attention
    ASTs.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be associated with the channel to which the
    mailbox is assigned. The acmode argument is a longword containing
    the access mode.

    The $PSLDEF macro defines the following symbols for the four
    access modes:

    Symbol         Access Mode    Numeric Value

    PSL$C_KERNEL   Kernel         0
    PSL$C_EXEC     Executive      1
    PSL$C_SUPER    Supervisor     2
    PSL$C_USER     User           3

    The most privileged access mode used is the access mode of
    the caller. The specified access mode and the access mode of
    the caller are compared. The less privileged (but the higher
    numeric valued) of the two access modes becomes the access
    mode associated with the assigned channel. I/O operations on
    the channel can be performed only from equal or more privileged
    access modes.

 lognam

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Logical name to be assigned to the mailbox. The lognam argument
    is the address of a character string descriptor pointing to the
    logical name string.

    The equivalence name for the mailbox is MBAn. The equivalence
    name is marked with the terminal attribute. Processes can use the
    logical name to assign other I/O channels to the mailbox.

    For permanent mailboxes, the $CREMBX service enters the specified
    logical name, if any, in the LNM$PERMANENT_MAILBOX logical name
    table and, for temporary mailboxes, into the LNM$TEMPORARY_
    MAILBOX logical name table.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The flags argument is used for specifying options for the
    assign operation that occurs in $CREMBX. The flags argument
    is a longword bit mask that enables the user to specify that
    the channel assigned to the mailbox is a READ ONLY or WRITE
    ONLY channel. If the flags argument is not specified, then the
    default channel behavior is READ/WRITE. The $CMBDEF macro defines
    a symbolic name for each flag bit.

    The following table describes each flag:

    Flag            Description

    CMB$M_          When this flag is specified, $CREMBX assigns
    READONLY        a read-only channel to the mailbox device.
                    An attempt to issue a QIO WRITE operation on
                    the mailbox channel results in an illegal I/O
                    operation error.
    CMB$M_          When this flag is specified, $CREMBX assigns
    WRITEONLY       a write-only channel to the mailbox device.
                    An attempt to issue a QIO READ operation on
                    the mailbox channel results in an illegal I/O
                    operation error.

    For more information about the flags argument, see the VSI OpenVMS
    I/O User's Reference Manual.

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument reserved by VSI.

65  –  $CREPRC

    Creates, on behalf of the calling process, a subprocess or
    detached process on the current node, or a detached process on
    another OpenVMS Cluster node.

    Format

      SYS$CREPRC  [pidadr] ,[image] ,[input] ,[output] ,[error]

                  ,[prvadr] ,[quota] ,[prcnam] ,[baspri] ,[uic]

                  ,[mbxunt] ,[stsflg] ,[itmlst] ,[node] ,[home_rad]

    C Prototype

      int sys$creprc  (unsigned int *pidadr, void *image, void

                      *input, void *output, void *error, struct

                      _generic_64 *prvadr, unsigned int *quota, void

                      *prcnam, unsigned int baspri, unsigned int

                      uic, unsigned short int mbxunt, unsigned int

                      stsflg,...);

65.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Process identification (PID) of the newly created process. The
    pidadr argument is the address of a longword into which $CREPRC
    writes the PID.

 image

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the image to be activated in the newly created process.
    The image argument is the address of a character string
    descriptor pointing to the file specification of the image.

    The image name can have a maximum of 63 characters. If the image
    name contains a logical name, the logical name is translated in
    the created process and must therefore be in a logical name table
    that it can access.

    To create a process that will run under the control of a command
    language interpreter (CLI), specify SYS$SYSTEM:LOGINOUT.EXE as
    the image name.

 input

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Equivalence name to be associated with the logical name SYS$INPUT
    in the logical name table of the created process. The input
    argument is the address of a character string descriptor pointing
    to the equivalence name string.

 output

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Equivalence name to be associated with the logical name
    SYS$OUTPUT in the logical name table of the created process. The
    output argument is the address of a character string descriptor
    pointing to the equivalence name string.

 error

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Equivalence name to be associated with the logical name SYS$ERROR
    in the logical name table of the created process. The error
    argument is the address of a character string descriptor pointing
    to the equivalence name string.

    Note that the error argument is ignored if the image argument
    specifies SYS$SYSTEM:LOGINOUT.EXE; in this case, SYS$ERROR has
    the same equivalence name as SYS$OUTPUT.

 prvadr

    OpenVMS usage:mask_privileges
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Privileges to be given to the created process. The prvadr
    argument is the address of a quadword bit mask wherein each bit
    corresponds to a privilege; setting a bit gives the privilege. If
    the prvadr argument is not specified, the current privileges are
    used.

    Each bit has a symbolic name; the $PRVDEF macro defines these
    names. You form the bit mask by specifying the symbolic name of
    each desired privilege in a logical OR operation.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the table containing the symbolic name and description of each
    privilege.

    You need the user privilege SETPRV to grant a process any
    privileges other than your own. If the caller does not have this
    privilege, the mask is minimized with the current privileges of
    the creating process; any privileges the creating process does
    not have are not granted, but no error status code is returned.

 quota

    OpenVMS usage:item_quota_list
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Process quotas to be established for the created process. These
    quotas limit the created process's use of system resources. The
    quota argument is the address of a list of quota descriptors,
    where each quota descriptor consists of a 1-byte quota name
    followed by a longword that specifies the desired value for
    that quota. The list of quota descriptors is terminated by the
    symbolic name PQL$_LISTEND.

    If you do not specify the quota argument or specify it as 0, the
    operating system supplies a default value for each quota.

    Refer to the VSI OpenVMS System Services Reference Manual to
    view MACRO and C examples, individual quota descriptions, and
    instructions for use of the quota list.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Process name to be assigned to the created process. The prcnam
    argument is the address of a character string descriptor pointing
    to a process name string.

    If a subprocess is being created, the process name is implicitly
    qualified by the UIC group number of the creating process. If a
    detached process is being created, the process name is qualified
    by the group number specified in the uic argument.

 baspri

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Base priority to be assigned to the created process. The baspri
    argument is a longword value.

    The OpenVMS Alpha and Integrity servers range is 0 to 63, with
    real-time priorities in the range 32 to 63.

    If you want a created process to have a higher priority than its
    creating process, you must have ALTPRI privilege to raise the
    priority level. If the caller does not have this privilege, the
    specified base priority is compared with the caller's priority
    and the lower of the two values is used.

    A process with ALTPRI privilege running on a VAX node can
    create a process with a priority greater than 31 on an Alpha
    or Integrity servers node.

    If the baspri argument is not specified, the priority defaults to
    2 for VAX MACRO, VAX BLISS-32, and Pascal; it defaults to 0 for
    all other languages.

 uic

    OpenVMS usage:uic
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    User identification code (UIC) to be assigned to the created
    process. The uic argument is a longword value containing the UIC.

    If you do not specify the uic argument or specify it as 0 (the
    default), $CREPRC creates a process and assigns it the UIC of the
    creating process.

    If you specify a nonzero value for the uic argument, $CREPRC
    creates a detached process. This value is interpreted as a 32-bit
    octal number, with two 16-bit fields:

       bits 0-15-member number
       bits 16-31-group number

    You need IMPERSONATE or CMKRNL privilege to create a detached
    process with a UIC that is different from the UIC of the creating
    process.

    If the image argument specifies the SYS$SYSTEM:LOGINOUT.EXE,
    the UIC of the created process will be the UIC of the caller of
    $CREPRC, and the UIC parameter is ignored.

 mbxunt

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Unit number of a mailbox to receive a termination message when
    the created process is deleted. The mbxunt argument is a word
    containing this number.

    If you do not specify the mbxunt argument or specify it as 0 (the
    default), the operating system sends no termination message when
    it deletes the process.

    The Get Device/Volume Information ($GETDVI) service can be used
    to obtain the unit number of the mailbox.

    If you specify the mbxunt argument, the mailbox is used when
    the created process actually terminates. At that time, the
    $ASSIGN service is issued for the mailbox in the context of the
    terminating process and an accounting message is sent to the
    mailbox. If the mailbox no longer exists, cannot be assigned,
    or is full, the error is treated as if no mailbox had been
    specified.

    If you specify this argument when you create a process on another
    node, an accounting message will be written to the mailbox when
    the process terminates. If the node is removed from the cluster
    before the created process terminates, an accounting message
    will be simulated. The simulated message will contain the created
    process's PID and name and a final status of SS$_NODELEAVE, but
    will lack execution statistics.

    Note that two processes on different nodes cannot use the
    termination mailbox for general interprocess communication.

    The accounting message is sent before process rundown is
    initiated but after the process name has been set to null. Thus,
    a significant interval of time can occur between the sending of
    the accounting message and the final deletion of the process.

    To receive the accounting message, the caller must issue a read
    to the mailbox. When the I/O completes, the second longword of
    the I/O status block, if one is specified, contains the process
    identification of the deleted process.

    The $ACCDEF macro defines symbolic names for offsets of fields
    within the accounting message.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the table describing the offsets, their symbolic names, and the
    contents of each field.

 stsflg

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Options selected for the created process. The stsflg argument
    is a longword bit vector wherein a bit corresponds to an option.
    Only bits 0 to 22 are used; the others are reserved and must be
    0.

    Each option (bit) has a symbolic name, which the $PRCDEF macro
    defines. You construct the stsflg argument by performing a
    logical OR operation using the symbolic names of each desired
    option.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the table describing the symbolic name of each option.

 itmlst

    OpenVMS usage:reserved
    type:         longword (unsigned)
    access:
    mechanism:    0
    The itmlst argument is reserved by VSI.

 node

    OpenVMS usage:SCS_nodename
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the OpenVMS Cluster node on which the process is to be
    created. The node argument is the address of a character string
    descriptor pointing to a 1- to 6-character SCS node name string.
    If the argument is present but zero or if the string is zero
    length, the process is created on the current node.

 home_rad

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Sets the home resource affinity domain (RAD) of a process.

    The home RAD is determined by the operating system, unless you
    explicitly request one. If bit PRC$M_HOME_RAD in the stsflg is
    set, home_rad is the RAD on which the process is to start. Note
    that you may set this bit to 0 on non-RAD systems.

    RAD is supported on AlphaServer GS series systems and starting
    from OpenVMS Version 8.4, support is extended to NUMA capable
    Integrity servers. For more information about using RADs, see the
    VSI OpenVMS Alpha Partitioning and Galaxy Guide.

 kt_limit

    OpenVMS usage:longword_signed
    type:         longword (signed)
    access:       read only
    mechanism:    by value
    Sets the limit of the number of kernel threads that can be
    created in the process. If the value is greater than the SYSGEN
    MULTITHREAD parameter, an error message is returned.

    The number of kernel threads that can be created in a process,
    is by default controlled by the MULTITHREAD SYSGEN parameter. The
    kt_limit argument is used to further limit the number of possible
    kernel threads for the process.

66  –  $CRETVA

    Adds a range of demand-zero allocation pagelets to a process's
    virtual address space for the execution of the current image.

    Format

      SYS$CRETVA  inadr ,[retadr] ,[acmode]

    C Prototype

      int sys$cretva  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode);

66.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a 2-longword array containing the starting and ending
    virtual addresses of the pages to be created. If the starting and
    ending virtual addresses are the same, a single page is created.
    The addresses are adjusted up or down to fall on CPU-specific
    page boundaries. Only the virtual page number portion of the
    virtual address is used; the low order byte-within-page bits are
    ignored.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference-array reference or descriptor
    Address of a 2-longword array to receive the starting and ending
    virtual addresses of the pages created.

    On Alpha and Integrity server systems, the retadr argument should
    be checked by programs for actual allocation. Because the Alpha
    and Integrity servers architectures define more than one page
    size, more space might be created than was specified in the inadr
    argument.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode and protection for the new pages. The acmode argument
    is a longword containing the access mode.

    The $PSLDEF macro defines the following symbols for the four
    access modes:

    Symbol         Access Mode

    PSL$C_KERNEL   Kernel
    PSL$C_EXEC     Executive
    PSL$C_SUPER    Supervisor
    PSL$C_USER     User

    The most privileged access mode used is the access mode of
    the caller. The protection of the pages is read/write for the
    resultant access mode and those more privileged.

67  –  $CRETVA 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, adds a range of demand-
    zero allocation pages to a process's virtual address space for
    the execution of the current image. The new pages are added at
    the virtual address specified by the caller.

    This service accepts 64-bit addresses.

    Format

      SYS$CRETVA_64  region_id_64 ,start_va_64 ,length_64 ,acmode

                     ,flags ,return_va_64 ,return_length_64

    C Prototype

      int sys$cretva_64  (struct _generic_64 *region_id_64, void

                         *start_va_64, unsigned __int64 length_64,

                         unsigned int acmode, unsigned int flags,

                         void *(*(return_va_64)), unsigned __int64

                         *return_length_64);

67.1  –  Arguments

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region to create the virtual
    address range. The file VADEF.H in SYS$STARLET_C.TLB and the
    $VADEF macro in STARLET.MLB define a symbolic name for each of
    the three default regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified. Also, given a particular virtual address, the
    region ID for the region it is in can be obtained by calling the
    $GET_REGION_INFO system service specifying the VA$_REGSUM_BY_VA
    function.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting address for the created virtual address range. The
    specified virtual address must be a CPU-specific page aligned
    address.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be created. The length
    specified must be a multiple of CPU-specific pages.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $CRETVA_64. The access
    mode determines the owner mode of the pages as well as the read
    and write protection on the pages. The acmode argument is a
    longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The $CRETVA_64 service uses whichever of the following access
    modes is least privileged:

    o  Access mode specified by the acmode argument

    o  Access mode of the caller

    The protection of the pages is read/write for the resultant
    access mode and those more privileged.

    Address space cannot be created within a region that has a create
    mode associated with it that is more privileged than the caller's
    mode. The condition value SS$_IVACMODE is returned if the caller
    is less privileged than the create mode for the region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask controlling the characteristics of the demand-zero
    pages created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The $VADEF macro and the
    VADEF.H file define a symbolic name for each flag. You construct
    the flags argument by performing a logical OR operation on the
    symbol names for all desired flags.

    The following table describes the flag that is valid for the
    $CRETVA_64 service:

    Flag               Description

    VA$M_NO_OVERMAP    Pages cannot overmap existing address space.
                       By default, pages can overmap existing address
                       space.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVVAFLG is returned if any undefined bits are set.

 return_va_64

    OpenVMS usage:address
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the created virtual address
    range. The return_va_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword into which the service
    returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the virtual address range created. The
    return_length_64 argument is the 32- or 64-bit virtual address
    of a naturally aligned quadword into which the service returns
    the length of the virtual address range in bytes.

68  –  $CRMPSC

    Allows a process to associate (map) a section of its address
    space with either a specified section of a file (a disk file
    section) or specified physical addresses represented by page
    frame numbers (a page frame section). This service also allows
    the process to create either type of section and to specify that
    the section be available only to the creating process (private
    section) or to all processes that map to it (global section).

    Format

      SYS$CRMPSC  [inadr] ,[retadr] ,[acmode] ,[flags] ,[gsdnam]

                  ,[ident] ,[relpag] ,[chan] ,[pagcnt] ,[vbn] ,[prot]

                  ,[pfc]

    C Prototype

      int sys$crmpsc  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode, unsigned int

                      flags, void *gsdnam, unsigned int relpag,

                      unsigned short int chan, unsigned int pagcnt,

                      unsigned int vbn, unsigned int prot,unsigned

                      int pfc);

68.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Starting and ending virtual addresses into which the section is
    to be mapped. The inadr argument is the address of a 2-longword
    array containing, in order, the starting and ending process
    virtual addresses. Only the virtual page number portion of each
    virtual address is used to specify which pages are to be mapped;
    the low-order byte-within-page bits are ignored for this purpose.

    The interpretation of the inadr argument depends on the setting
    of SEC$M_EXPREG in the flags argument and whether you are
    using an Alpha or an Integrity server system. For a complete
    description of these differences, see the VSI OpenVMS System
    Services Reference Manual.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference-array reference
    Starting and ending process virtual addresses into which the
    section was actually mapped by $CRMPSC. The retadr argument
    is the address of a 2-longword array containing, in order, the
    starting and ending process virtual addresses.

    On Alpha and Integrity server systems, the retadr argument
    returns starting and ending addresses of the usable range of
    addresses. This might differ from the total amount mapped.
    The retadr argument is required when the relpag argument is
    specified. If the section being mapped does not completely
    fill the last page used to map the section, the retadr argument
    indicates the highest address that actually maps the section.
    If the relpag argument is used to specify an offset into the
    section, the retadr argument reflects the offset.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    The $PSLDEF macro defines the following symbols for the four
    access modes:

    Symbol         Access Mode

    PSL$C_KERNEL   Kernel
    PSL$C_EXEC     Executive
    PSL$C_SUPER    Supervisor
    PSL$C_USER     User

    The most privileged access mode used is the access mode of the
    caller.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the type of section to be created or mapped
    to, as well as its characteristics. The flags argument is a
    longword bit vector wherein each bit corresponds to a flag.
    The $SECDEF macro defines a symbolic name for each flag. You
    construct the flags argument by performing a logical OR operation
    on the symbol names for all desired flags.

    The following table describes each flag and the default value
    that it supersedes:

    Flag             Description

    SEC$M_CRF        Pages are copy-on-reference. By default, pages
                     are shared.
    SEC$M_DZRO       Pages are demand-zero pages. By default, they
                     are not zeroed when copied.
    SEC$M_EXECUTE    Pages are mapped if the caller has execute
                     access. This flag takes effect only (1)  when
                     specified from executive or kernel mode, (2)
                     when the SEC$M_GBL flag is also specified, and
                     (3)  when SEC$M_WRT is not specified. By default
                     $CRMPSC performs a read access check against the
                     section.
    SEC$M_EXPREG     Pages are mapped into the first available space.
                     By default, pages are mapped into the range
                     specified by the inadr argument.

                     See the inadr argument description for a
                     complete explanation of how to set the SEC$M_
                     EXPREG flag.
    SEC$M_GBL        Pages form a global section. The default is
                     private section.
    SEC$M_NO_        Pages cannot overmap existing address space.
    OVERMAP          Note that, by default, pages can overmap
                     existing address space.
    SEC$M_PAGFIL     Pages form a global page file section. By
                     default, pages form a disk file section. SEC$M_
                     PAGFIL also implies SEC$M_WRT and SEC$M_DZRO.
    SEC$M_PERM       Global section is permanent. By default, global
                     sections are temporary.
    SEC$M_PFNMAP     Pages form a page frame section. By default,
                     pages form a disk file section. Pages mapped
                     by SEC$M_PFNMAP are not included in or charged
                     against the process's working set; they are
                     always valid. Do not lock these pages in the
                     working set by using $LKWSET; this can result in
                     a machine check if they are in I/O space.

                     On Alpha and Integrity server systems, when the
                     SEC$M_PFNMAP flag is set, the pagcnt and relpag
                     arguments are interpreted in CPU-specific pages,
                     not as pagelets.
    SEC$M_SYSGBL     Pages form a system global section. By default,
                     pages form a group global section.
    SEC$M_UNCACHED   Flag that must be set when a PFN-mapped section
                     is created if this section is to be treated
                     as uncached memory. Flag is ignored on Alpha
                     systems; it applies only to Integrity server
                     systems.
    SEC$M_WRT        Pages form a read/write section. By default,
                     pages form a read-only section.

 gsdnam

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the global section. The gsdnam argument is the address of
    a character string descriptor pointing to this name string.

    For group global sections, the operating system interprets the
    UIC group as part of the global section name; thus, the names of
    global sections are unique to UIC groups.

    You can specify any name from 1 to 43 characters. All processes
    mapping to the same global section must specify the same name.
    Note that the name is case sensitive.

    Use of characters valid in logical names is strongly encouraged.
    Valid values include alphanumeric characters, the dollar sign
    ($), and the underscore (_). If the name string begins with an
    underscore (_), the underscore is stripped and the resultant
    string is considered to be the actual name. Use of the colon (:)
    is not permitted.

    Names are first subject to a logical name translation, after
    the application of the prefix GBL$ to the name. If the result
    translates, it is used as the name of the section. If the
    resulting name does not translate, the name specified by the
    caller is used as the name of the section.

    Additional information on logical name translations and
    on section name processing is available in the VSI OpenVMS
    Programming Concepts Manual.

 ident

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Identification value specifying the version number of a global
    section and, for processes mapping to an existing global section,
    the criteria for matching the identification. The ident argument
    is the address of a quadword structure containing three fields.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

    The first longword specifies, in its low-order two bits, the
    matching criteria. The valid values, symbolic names by which they
    can be specified, and their meanings are as follows:

    Value/Name       Match Criteria

    0 SEC$K_MATALL   Match all versions of the section.
    1 SEC$K_MATEQU   Match only if major and minor identifications
                     match.
    2 SEC$K_MATLEQ   Match if the major identifications are equal and
                     the minor identification of the mapper is less
                     than or equal to the minor identification of the
                     global section.

    When a section is mapped at creation time, the match control
    field is ignored.

    If you do not specify the ident argument or specify it as 0 (the
    default), the version number and match control fields default to
    0.

 relpag

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Relative page number within the global section of the first page
    in the section to be mapped. The relpag argument is a longword
    containing this page number.

    On Alpha and Integrity server systems, the relpag argument
    is interpreted as an index into the section file, measured in
    pagelets for a file-backed section or in CPU-specific pages for a
    PFN-mapped section.

    On Alpha or Integrity servers, you use this argument only for
    global sections. If you do not specify the relpag argument or
    specify it as 0 (the default), the global section is mapped
    beginning with the first virtual block in the file.

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Number of the channel on which the file has been accessed. The
    chan argument is a word containing this number.

    The file must have been accessed with the OpenVMS RMS macro
    $OPEN; the file options parameter (FOP) in the FAB must indicate
    a user file open (UFO keyword). The access mode at which the
    channel was opened must be equal to or less privileged than the
    access mode of the caller.

 pagcnt

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of pagelets in the section. The pagcnt argument is a
    longword containing this number.

    On Alpha and Integrity server systems, the smallest allocation
    is an Alpha or Integrity servers page, which is 8192 bytes. When
    requesting pagelets, the size requested is a multiple of 512
    bytes, but the actual allocation is rounded to 8192. For example,
    when requesting 17 pagelets, the allocation is for two Alpha or
    Integrity servers pages, 16384 bytes.

    On Alpha and Integrity server systems, if the SEC$M_PFNMAP flag
    bit is set, the pagcnt argument is interpreted as CPU-specific
    pages, not as pagelets.

    On Alpha or Integrity server systems , the specified page count
    is compared with the number of blocks in the section file;
    if they are different, the lower value is used. If you do not
    specify the page count or specify it as 0 (the default), the size
    of the section file is used. However, for physical page frame
    sections, this argument must not be 0.

 vbn

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Virtual block number in the file that marks the beginning of the
    section. The vbn argument is a longword containing this number.
    If you do not specify the vbn argument or specify it as 0 (the
    default), the section is created beginning with the first virtual
    block in the file.

    If you specified page frame number mapping (by setting the SEC$M_
    PFNMAP flag), the vbn argument specifies the CPU-specific page
    frame number where the section begins in memory.

    To view which arguments are required and which are optional for
    three different uses of the $CRMPSC service, see the VSI OpenVMS
    System Services Reference Manual.

 prot

    OpenVMS usage:file_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Protection to be applied to the global page file and PFN
    sections. For file-backed sections, the protection is taken from
    the backing file and the prot argument is ignored.

    The mask contains four 4-bit fields. Bits are read from right to
    left in each field.

    To view the diagram depicting the mask, see the VSI OpenVMS System
    Services Reference Manual.

    Cleared bits indicate that read, write, execute, and delete
    access, in that order, are granted to the particular category
    of user.

    Only read, write, and execute access are meaningful for section
    protection. Delete access bits are ignored. Read access also
    grants execute access for those situations where execute access
    applies.

    Protection is taken from the system or group global section
    template for page file or PFN global sections if the prot
    argument is not specified.

 pfc

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Page fault cluster size indicating how many pagelets are to be
    brought into memory when a page fault occurs for a single page.

    On Alpha and Integrity server systems, this argument is not used
    for page file sections or physical page frame sections. The pfc
    argument is rounded up to CPU-specific pages. That is, at least
    16 pagelets (on an Alpha or Integrity servers system with an
    8KB page size) will be mapped for each physical page. The system
    cannot map less than one physical page.

69  –  $CRMPSC FILE 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows a process to map
    a section of its address space to a specified portion of a file.
    This service creates and maps a private disk file section.

    This service accepts 64-bit addresses.

    Format

      SYS$CRMPSC_FILE_64  region_id_64 ,file_offset_64 ,length_64

                          ,chan ,acmode ,flags ,return_va_64

                          ,return_length_64 [,fault_cluster

                          [,start_va_64]]

    C Prototype

      int sys$crmpsc_file_64  (struct _generic_64 *region_id_64,

                              unsigned __int64 file_offset_64,

                              unsigned __int64 length_64, unsigned

                              short int chan, unsigned int

                              acmode, unsigned int flags, void

                              *(*(return_va_64)), unsigned __int64

                              *return_length_64,...);

69.1  –  Arguments

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region to map the private disk
    file section. The file VADEF.H in SYS$STARLET_C.TLB and the
    $VADEF macro in STARLET.MLB define a symbolic name for each of
    the three default regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 file_offset_64

    OpenVMS usage:byte offset
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Byte offset into the file that marks the beginning of the
    section. The file_offset_64 argument is a quadword containing
    this number. If you specify the file_offset_64 argument as 0, the
    section is created beginning with the first byte in the file.

    The file_offset_64 argument must be a multiple of virtual disk
    blocks.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    value
    Length, in bytes, of the private disk file section to be created
    and mapped to. The length specified must be 0 or a multiple of
    virtual disk blocks. If the length specified is 0 or extends
    beyond end-of-file (EOF), the disk file is mapped up to and
    including the virtual block number that contains EOF.

 chan

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the channel on which the file has been accessed. The
    chan argument is a longword containing this number. The access
    mode at which the channel was opened must be equal to or less
    privileged than the access mode of the caller.

    Use the OpenVMS Record Management Services (RMS) macro $OPEN
    to access a file; the file options parameter in the file access
    block must indicate a user file open (UFO) keyword.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. The calling process can delete pages only if those pages
    are owned by an access mode equal to or less privileged than the
    access mode of the calling process.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the characteristics of the private section
    to be created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The $SECDEF macro and the
    SECDEF.H file define a symbolic name for each flag. You construct
    the flags argument by performing a logical OR operation on the
    symbol names for all desired flags.

    The following table describes each flag that is valid for the
    $CRMPSC_FILE_64 service:

    Flag          Description

    SEC$M_CRF     Pages are copy-on-reference.
    SEC$M_DZRO    Pages are demand-zero pages. By default, they are
                  not zeroed when copied.

                  Note that SEC$M_DZRO and SEC$M_CRF cannot both be
                  set and that SEC$M_DZRO set and SEC$M_WRT clear is
                  an invalid combination.
    SEC$M_EXPREG  Pages are mapped into the first available space at
                  the current end of the specified region.
    SEC$M_NO_     Pages cannot overmap existing address space. By
    OVERMAP       default, pages can overmap existing address space.
    SEC$M_WRT     Pages form a read/write section. By default, pages
                  form a read-only section.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an illegal combination of flags is set.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address into which the private disk
    file section was mapped. The return_va_64 argument is the 32- or
    64-bit virtual address of a naturally aligned quadword into which
    the service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length of the usable virtual
    address range mapped in bytes. This length might differ from
    the total amount mapped. If the section being mapped does not
    completely fill the last page used to map the section, the
    return_va_64 and return_length_64 arguments indicate the highest
    address that actually maps the section.

 fault_cluster

    OpenVMS usage:byte count
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Page fault cluster in byte units indicating how many pages
    are to be brought into memory when a page fault occurs for a
    single page. The fault cluster specified will be rounded up to a
    multiple of CPU-specific pages.

    If this argument is specified as 0, the process default page
    fault cluster will be used. If this argument is specified as more
    than the maximum allowed for the system, no condition value will
    be returned. The systemwide maximum will be used.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to map the private disk file
    section. The specified virtual address must be a CPU-specific
    page aligned address. If the flag SEC$M_EXPREG is specified, the
    start_va_64 argument must not be specified or must be specified
    as 0. If SEC$M_EXPREG is set and the start_va_64 argument is
    nonzero, the condition value SS$_IVSECFLG is returned.

70  –  $CRMPSC GDZRO 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows a process to create
    a memory-resident global demand-zero section and to map a section
    of its address space to the global section. Shared page table
    sections can also be created.

    This service accepts 64-bit addresses.

    Format

      SYS$CRMPSC_GDZRO_64  gs_name_64 ,ident_64 ,prot ,length_64

                           ,region_id_64 ,section_offset_64 ,acmode

                           ,flags ,return_va_64 ,return_length_64

                           [[[[,start_va_64] ,map_length_64]

                           ,reserved_length_64] ,rad_mask]

    C Prototype

      int sys$crmpsc_gdzro_64  (void *gs_nam_64, struct _secid

                               *ident_64, unsigned int prot, unsigned

                               __int64 length_64, struct _generic_64

                               *region_id_64, unsigned __int64

                               section_offset_64, unsigned int

                               acmode, unsigned int flags, void

                               *(*(return_va_64)), unsigned __int64

                               *return_length_64,...);

70.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned 32- or 64-bit
    string descriptor pointing to this name string.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order 2 bits. The valid values, symbolic names by which they can
    be specified, and their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    When a section is mapped at creation time, the match control
    field is ignored. If you specify the ident_64 argument as 0, the
    version number and match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 prot

    OpenVMS usage:file_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Protection to be applied to the global demand-zero section. The
    mask contains four 4-bit fields. Bits are read from right to left
    in each field.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the diagram depicting the mask.

    Cleared bits indicate that read, write, execute, and delete
    access, in that order, are granted to the particular category
    of user. Only read, write, and execute access are meaningful
    for section protection. Delete access bits are ignored. Read
    access also grants execute access for those situations where
    execute access applies. If zero is specified, read access and
    write access are granted to all users.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length, in bytes, of the global demand-zero section to be
    created. The length_64 must be specified as a multiple of the
    CPU-specific page size. A length of 0 cannot be specified.

                                   NOTE

       Creating a memory-resident global section with shared page
       table does not imply that the global section must have an
       even multiple of CPU-specific page table pages. The global
       section might not fully use the last page table page.

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region to map the global page
    file section.

    The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF macro in
    STARLET.MLB define a symbolic name for each of the three default
    regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 section_offset_64

    OpenVMS usage:byte offset
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Offset into the global section to start mapping into the
    process's virtual address space. The offset specified must be
    a multiple of a CPU-specific page size.

    If a shared page table region is specified by the region_id_
    64 argument, section_offset_64 must be an even multiple of
    the larger of the number of bytes that can be mapped by a CPU-
    specific page. For Integrity server systems, the alignment of
    section offsets must also be an integer multiple of the page size
    used to map VA space at this offset.

    VSI recommends that you avoid any partial mapping of memory-
    resident sections when you use shared page tables on Integrity
    server systems. If you cannot avoid this, set bit 4 in the system
    parameter MMG_CTLFLAGS to limit the effective page size to the
    number of bytes that can be mapped by a page.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. This access mode is also the read access mode
    and the write access mode. The acmode argument is a longword
    containing the access mode.

    If the memory-resident global section is created with shared
    page tables, this is the access mode that is stored in the owner,
    read, and write fields of the corresponding shared page table
    entries (PTEs).

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. The calling process can delete pages only if those pages
    are owned by an access mode equal to or less privileged than the
    access mode of the calling process.

    Address space cannot be created within a region that has a create
    mode associated with it that is more privileged than the caller's
    mode. The condition value SS$_IVACMODE is returned if the caller
    is less privileged than the create mode for the region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the type of the global section to be created
    as well as its characteristics. The flags argument is a longword
    bit vector in which each bit corresponds to a flag. The $SECDEF
    macro and the SECDEF.H file define a symbolic name for each
    flag. You construct the flags argument by performing a logical
    OR operation on the symbol names for all desired flags.

    The following table describes each flag that is valid for the
    $CRMPSC_GDZRO_64 service:

    Flag          Description

    SEC$M_DZRO    Pages are demand-zero pages. By default, this flag
                  is always present in this service and cannot be
                  disabled.

    SEC$M_EXPREG  Pages are mapped into the first available space at
                  the current end of the specified region.

                  If the /ALLOCATE qualifier was specified when the
                  global section was registered in the Reserved
                  Memory Registry, virtually aligned addresses
                  after the first available space are chosen for
                  the mapping.

    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.

    SEC$M_NO_     Pages cannot overmap existing address space.
    OVERMAP

    SEC$M_PERM    Global section is permanent.

    SEC$M_RAD_    When set, the argument rad_mask is used as a mask
    HINT          of RADs from which to allocate memory. See the rad_
                  mask argument description for more information.

    SEC$M_READ_   Create shared table pages for the section that
    ONLY_SHPT     allow read access only.

    SEC$M_SHMGS   Create a shared-memory global section.

    SEC$M_SYSGBL  Pages form a system global section. By default,
                  pages form a group global section.

    SEC$M_MRES    Pages form a memory-resident section. By default,
                  this page is always present in this service and
                  cannot be disabled.

    SEC$M_WRT     Pages form a read/write section. By default, this
                  flag is always present in this service and cannot
                  be disabled.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an invalid combination of flags is set.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address into which the global demand-
    zero section was mapped. The return_va_64 argument is the 32- or
    64-bit virtual address of a naturally aligned quadword into which
    the service returns the virtual address.

    If a shared page table region is specified by the region_id_64
    argument and the SEC$M_EXPREG flag is set, the returned virtual
    address is aligned to a CPU-specific page table page boundary.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length of the virtual address
    range mapped in bytes.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to map the memory-resident global
    section. The specified virtual address must be a CPU-specific
    page aligned address. If the flag SEC$M_EXPREG is specified, the
    start_va_64 argument must not be specified or must be specified
    as 0. If SEC$M_EXPREG is set and the start_va_64 argument is
    nonzero, the condition value SS$_IVSECFLG is returned.

    If SEC$M_EXPREG is clear, start_va_64 is nonzero, and a shared
    page table region is specified, the specified starting address
    must be aligned to a natural page table page boundary; otherwise,
    the condition value SS$_VA_NOTPAGALGN is returned.

    If the /ALLOCATE qualifier was specified when the memory-resident
    global section was registered in the Reserved Memory Registry
    and start_va_64 is aligned to a multiple of CPU-specific pages
    appropriate for taking advantage of granularity hints then
    granularity hints are used to map to the global section:

    o  On Alpha systems, granularity hints mean multiples of pages,
       regardless of page size. The multiples 8, 64, and 512 pages
       are architected.

    o  On Integrity server systems, OpenVMS initially supports page
       sizes of 64KB, 256KB, and 4MB instead of granularity hints.
       Additional pages sizes will be supported in the future.

    If the flag VA$M_SHARED_PTS is set and this argument is
    specified, the specified starting address must be aligned to
    the larger of a natural page table boundary or to the largest
    possible page size used to map the section. If the alignment is
    less than a page table boundary, the $CREATE_REGION_64 service
    returns an error. If the alignment is less than the largest page
    size used in the section, an error might be returned when you
    attempt to map the section.

    If you do not specify a starting address, OpenVMS automatically
    ensures correct alignment.

 map_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the memory-resident global section to be mapped. The
    length specified must be a multiple of CPU-specific pages. If
    this argument is not specified or is specified as zero, the
    global file section is mapped up to and including the last page
    in that section.

    If a shared page table region is specified by the region_id_64
    argument, map_length_64 must be an even multiple of the number
    of bytes that can be mapped by a CPU-specific page table page or
    must include the last page within the global section.

 reserved_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    32- or 64-bit reference
    Length, in bytes, of the global section as currently registered
    in the Reserved Memory Registry. The reserved_length_64 argument
    is the 32- or 64-bit virtual address of a naturally aligned
    quadword into which the service returns the reserved length.

    If reserved_length_64 is not specified or is specified as 0, no
    reserved length is returned to the caller.

    If the memory-resident global section is not registered,
    reserved_length_64 is written with the value 0.

 rad_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Use the rad_mask argument to specify from which RADs to allocate
    memory. Currently only one bit may be set. The specified RAD
    must contain memory. This argument is only a hint. Memory may be
    obtained from other RADs if no free memory is available at the
    time of allocation.

    The rad_mask argument is considered only if the SEC$M_RAD_HINT
    flag is specified. Otherwise, this argument is ignored.

    On a system that does not support resource affinity domains
    (RADs), specifying 1 for the rad_mask argument is allowed.

    RAD is supported on AlphaServer GS series systems and starting
    from OpenVMS Version 8.4, support is extended to NUMA capable
    Integrity servers.

71  –  $CRMPSC GFILE 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows a process to create
    a global disk file section and to map a section of its address
    space to the global section.

    This service accepts 64-bit addresses.

    Format

      SYS$CRMPSC_GFILE_64  gs_name_64 ,ident_64 ,file_offset_64

                           ,length_64 ,chan ,region_id_64

                           ,section_offset_64 ,acmode ,flags

                           ,return_va_64 ,return_length_64

                           [,fault_cluster

                           [,start_va_64 [,map_length_64]]]

    C Prototype

      int sys$crmpsc_gfile_64  (void *gs_nam_64, struct _secid

                               *ident_64, unsigned __int64

                               file_offset_64, unsigned __int64

                               length_64, unsigned short

                               int chan, struct _generic_64

                               *region_id_64, unsigned __int64

                               section_offset_64, unsigned int

                               acmode, unsigned int flags, void

                               *(*(return_va_64)), unsigned __int64

                               *return_length_64,...);

71.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned 32- or 64-bit
    string descriptor pointing to this name string.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order 2 bits. The valid values, symbolic names by which they can
    be specified, and their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    When a section is mapped at creation time, the match control
    field is ignored. If you specify the ident_64 argument as 0, the
    version number and match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 file_offset_64

    OpenVMS usage:byte offset
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Byte offset into the file that marks the beginning of the
    section. The file_offset_64 argument is a quadword containing
    this number. If you specify the file_offset_64 argument as 0, the
    section is created beginning with the first byte in the file.

    The file offset specified must be a multiple of virtual disk
    blocks.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length, in bytes, of the global disk file section to be created.
    The length specified must be 0 or a multiple of virtual disk
    blocks. If the length specified is 0 or extends beyond the end-
    of-file (EOF), the global disk file section is created up to and
    including the virtual block number that contains EOF.

 chan

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the channel on which the file has been accessed. The
    chan argument is a longword containing this number. The access
    mode at which the channel was opened must be equal to or less
    privileged than the access mode of the caller.

    You can use the OpenVMS Record Management Services (RMS) macro
    $OPEN to access a file; the file options parameter in the file
    access block must indicate a user file open (UFO) keyword.

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 64 bit reference
    The region ID associated with the region in which to map the
    global disk file section. The file VADEF.H in SYS$STARLET_C.TLB
    and the $VADEF macro in STARLET.MLB define a symbolic name for
    each of the three default regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 section_offset_64

    OpenVMS usage:byte offset
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Offset into the global section to start mapping into the
    process's virtual address space. The offset specified must be
    a multiple of virtual disk blocks.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller.

    Address space cannot be created within a region that has a create
    mode associated with it that is more privileged than the caller's
    mode. The condition value SS$_IVACMODE is returned if the caller
    is less privileged than the create mode for the region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the characteristics of the global section
    to be created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The $SECDEF macro and the
    SECDEF.H file define a symbolic name for each flag. You construct
    the flags argument by performing a logical OR operation on the
    symbol names for all desired flags.

    The following table describes each flag that is valid for the
    $CRMPSC_GFILE_64 service:

    Flag          Description

    SEC$M_CRF     Pages are copy-on-reference.
    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_WRT     Pages form a read/write section. By default, pages
                  form a read-only section.
    SEC$M_DZRO    Pages are demand-zero pages. By default, they are
                  not zeroed when copied.

                  Note that SEC$M_DZRO and SEC$M_CRF cannot both be
                  set and that SEC$M_DZRO set and SEC$M_WRT clear is
                  an invalid combination.
    SEC$M_EXPREG  Pages are mapped into the first available space at
                  the current end of the specified region.
    SEC$M_NO_     Pages cannot overmap existing address space. By
    OVERMAP       default, pages can overmap existing address space.
    SEC$M_PERM    Global section is permanent. By default, global
                  sections are temporary.
    SEC$M_SYSGBL  Pages form a system global section. By default,
                  pages form a group global section.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an illegal combination of flags is set.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address into which the global disk
    file section was mapped. The return_va_64 argument is the 32- or
    64-bit virtual address of a naturally aligned quadword into which
    the service returns the virtual address.

    Upon successful completion of this service, if the
    section_offset_64 argument was specified, the virtual address
    returned in return_va_64 reflects the offset into the global
    section mapped such that the virtual address returned cannot
    be aligned on a CPU-specific page boundary. The virtual address
    returned will always be on an even virtual disk block boundary.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length of the virtual address
    range mapped in bytes.

    Upon successful completion of this service, the value in the
    return_length_64 argument indicates the amount of created address
    space backed by the section file.

    If the number of disk blocks mapped does not represent an exact
    multiple of CPU-specific pages, the last page in the mapped
    address space will not be completely mapped by the section file.
    In this case, modifying memory beyond the amount indicated by
    return_length_64 can result in the loss of this data.

    Unlike the return_length_64 argument for the $CREATE_GFILE
    service, upon successful completion of this service, the
    return_length_64 argument does not represent the total length
    of the global section created if the section_offset_64 argument
    was specified as nonzero. The value in the section_offset_64
    argument plus the value in the return_length_64 argument is the
    total length of the global disk file section created.

 fault_cluster

    OpenVMS usage:byte count
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Page fault cluster in byte units indicating how many pages
    are to be brought into memory when a page fault occurs for a
    single page. The fault cluster specified will be rounded up to a
    multiple of CPU-specific pages.

    If this argument is specified as 0, the system default page fault
    cluster will be used. If this argument is specified as more than
    the maximum allowed for the system, no error will be returned.
    The systemwide maximum will be used.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to map the global disk file section.
    The specified virtual address must be a CPU-specific page aligned
    address. If the flag SEC$M_EXPREG is specified, this argument
    will not be used. If SEC$M_EXPREG is clear and the start_va_64
    argument is not specified or is specified as 0, the condition
    value SS$_IVSECFLG will be returned.

    Always refer to the return_va_64 and return_length_64 arguments
    to determine the usable range of virtual addresses mapped.

 map_length_64

    OpenVMS usage:byte count
    type:         quadword unsigned
    access:       read only
    mechanism:    by value
    Length of the global disk file section to be mapped. The length
    specified must be a multiple of virtual disk blocks. If this
    argument is not specified as zero, the global disk section is
    mapped up to and including the last disk block in the section.

72  –  $CRMPSC GPFILE 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows a process to create
    a global page file section and to map a section of its address
    space to the global section.

    This service accepts 64-bit addresses.

    Format

      SYS$CRMPSC_GPFILE_64  gs_name_64 ,ident_64 ,prot ,length_64

                            ,region_id_64 ,section_offset_64 ,acmode

                            ,flags ,return_va_64 ,return_length_64

                            [,start_va_64 [,map_length_64]]

    C Prototype

      int sys$crmpsc_gpfile_64  (void *gs_nam_64, struct _secid

                                *ident_64, unsigned int prot,

                                unsigned __int64 length_64, struct

                                _generic_64 *region_id_64, unsigned

                                __int64 section_offset_64, unsigned

                                int acmode, unsigned int flags, void

                                *(*(return_va_64)), unsigned __int64

                                *return_length_64,...);

72.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned 32- or 64-bit
    string descriptor pointing to this name string.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order 2 bits. The valid values, symbolic names by which they can
    be specified, and their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    When a section is mapped at creation time, the match control
    field is ignored. If you specify the ident_64 argument as 0, the
    version number and match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 prot

    OpenVMS usage:file_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Protection to be applied to the global page file section. The
    mask contains four 4-bit fields. Bits are read from right to left
    in each field.

    To view the mask diagram, see the VSI OpenVMS System Services
    Reference Manual.

    Cleared bits indicate that read, write, execute, and delete
    access, in that order, are granted to the particular category
    of user. Only read, write, and execute access are meaningful
    for section protection. Delete access bits are ignored. Read
    access also grants execute access for those situations where
    execute access applies. If zero is specified, read access and
    write access are granted to all users.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length, in bytes, of the global page file section to be created.
    The length specified must be a multiple of CPU-specific pages. A
    length of 0 cannot be specified.

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region to map the global page
    file section.

    The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF macro in
    STARLET.MLB define a symbolic name for each of the three default
    regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 section_offset_64

    OpenVMS usage:byte offset
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Offset into the global section to start mapping into the
    process's virtual address space. The offset specified must be
    a multiple of virtual disk blocks.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. The calling process can delete pages only if those pages
    are owned by an access mode equal to or less privileged than the
    access mode of the calling process.

    Address space cannot be created within a region that has a create
    mode associated with it that is more privileged than the caller's
    mode. The condition value SS$_IVACMODE is returned if the caller
    is less privileged than the create mode for the region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the characteristics of the global section
    to be created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The $SECDEF macro and the
    SECDEF.H file define a symbolic name for each flag. You construct
    the flags argument by performing a logical OR operation on the
    symbol names for all desired flags.

    The following table describes each flag that is valid for the
    $CRMPSC_GPFILE_64 service:

    Flag          Description

    SEC$M_DZRO    Pages are demand-zero pages. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_EXPREG  Pages are mapped into the first available space
                  at the current end of the specified region.
                  SEC$M_EXPREG cannot be specified with the
                  SEC$M_NO_OVERMAP flag.
    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_NO_     Pages cannot overmap existing address space. By
    OVERMAP       default, pages can overmap existing address space.
                  SEC$M_NO_OVERMAP cannot be specified with the
                  SEC$M_EXPREG flag.
    SEC$M_PAGFIL  Pages form a global page file section. By default,
                  this flag is always present in this service and
                  cannot be disabled.
    SEC$M_PERM    Global section is permanent. By default, global
                  sections are temporary.
    SEC$M_SYSGBL  Pages form a system global section. By default,
                  pages form a group global section.
    SEC$M_WRT     Pages form a read/write section. By default, this
                  flag is always present in this service and cannot
                  be disabled.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an invalid combination of flags is set.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address into which the global page
    file section was mapped. The return_va_64 argument is the 32- or
    64-bit virtual address of a naturally aligned quadword into which
    the service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length of the virtual address
    range mapped in bytes.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to map the global page file section.
    The specified virtual address must be a CPU-specific page aligned
    address. If the flag SEC$M_EXPREG is specified, the start_va_64
    argument must not be specified or must be specified as 0. If
    SEC$M_EXPREG is set and the start_va_64 argument is nonzero, the
    condition value SS$_IVSECFLG is returned.

    Always refer to the return_va_64 and return_length_64 arguments
    to determine the range of virtual addresses mapped.

 map_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the global page file section to be mapped. The length
    specified must be a multiple of CPU-specific pages. If this
    argument is not specified or is specified as zero, the global
    file section is mapped up to and including the last page in that
    section.

73  –  $CRMPSC GPFN 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows a process to create
    a permanent global page frame section and to map a section of its
    address space to the global page frame section.

    This service accepts 64-bit addresses.

    Format

      SYS$CRMPSC_GPFN_64  gs_name_64 ,ident_64 ,prot ,start_pfn

                          ,page_count ,region_id_64 ,relative_page

                          ,acmode ,flags ,return_va_64

                          ,return_length_64 [,start_va_64

                          [,map_page_count]]

    C Prototype

      int sys$crmpsc_gpfn_64  (void *gs_nam_64, struct _secid

                              *ident_64, unsigned int prot, unsigned

                              int start_pfn, unsigned int page_count,

                              struct _generic_64 *region_id_64,

                              unsigned int relative_page, unsigned

                              int acmode, unsigned int flags, void

                              *(*(return_va_64)), unsigned __int64

                              *return_length_64,...);

73.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned 32- or 64-bit
    string descriptor pointing to this name string.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order 2 bits. The valid values, symbolic names by which they can
    be specified, and their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    When a section is mapped at creation time, the match control
    field is ignored. If you specify the ident_64 argument as 0, the
    version number and match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 prot

    OpenVMS usage:file_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Protection to be applied to the global page file section.

    The mask contains four 4-bit fields. Bits are read from right to
    left in each field.

    To view the mask diagram, see the VSI OpenVMS System Services
    Reference Manual.

    Cleared bits indicate that read, write, execute, and delete
    access, in that order, are granted to the particular category
    of user. Only read, write, and execute access are meaningful
    for section protection. Delete access bits are ignored. Read
    access also grants execute access for those situations where
    execute access applies. If zero is specified, read access and
    write access are granted to all users.

 start_pfn

    OpenVMS usage:page frame number
    type:         longword (unsigned) on Alpha, quadword (unsigned)
                  on Integrity servers
    access:       read only
    mechanism:    by value
    The CPU-specific page frame number where the section begins.

 page_count

    OpenVMS usage:CPU-specific page count
    type:         longword (unsigned) on Alpha, quadword (unsigned)
                  on Integrity servers
    access:       read only
    mechanism:    by value
    Length of the page frame section in CPU-specific pages.

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region to map the global page
    frame section. The file VADEF.H in SYS$STARLET_C.TLB and the
    $VADEF macro in STARLET.MLB define a symbolic name for each of
    the three default regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 relative_page

    OpenVMS usage:CPU-specific page number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Relative CPU-specific page number within the global section to
    start mapping.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller.

    Address space cannot be created within a region that has a create
    mode associated with it that is more privileged than the caller's
    mode. The condition value SS$_IVACMODE is returned if the caller
    is less privileged than the create mode for the region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the characteristics of the global section
    to be created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The $SECDEF macro and the
    SECDEF.H file define a symbolic name for each flag. You construct
    the flags argument by performing a logical OR operation on the
    symbol names for all desired flags.

    The following table describes each flag that is valid for
    $CRMPSC_GPFN_64:

    Flag          Description

    SEC$M_ARGS64  Indicates that all parameters, specifically start_
                  pfn and page_count, are passed as 64-bit numbers.
                  This flag is ignored on OpenVMS Alpha but must be
                  set on Integrity server systems. If the flag is
                  not set on Integrity servers, the error code SS$_
                  IVSECFLG is returned.
    SEC$M_EXPREG  Pages are mapped into the first available space at
                  the current end of the specified region.
    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_PERM    Global section is permanent. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_PFNMAP  Pages form a page frame section. By default, this
                  flag is always present in this service and cannot
                  be disabled.
    SEC$M_NO_     Pages cannot overmap existing address space. By
    OVERMAP       default, pages can overmap existing address space.
    SEC$M_SYSGBL  Pages form a system global section. By default,
                  pages form a group global section.
    SEC$M_        Flag that must be set when a PFN-mapped section
    UNCACHED      is created if this section must be treated as
                  uncached memory. Flag is ignored on Alpha systems;
                  it applies only to Integrity server systems.
    SEC$M_WRT     Pages form a read/write section. By default, pages
                  form a read-only section.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an illegal combination of flags is set.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address into which the global page
    frame section was mapped. The return_va_64 argument is the 32-
    or 64-bit address of a naturally aligned quadword into which the
    service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length of the virtual address
    range mapped in bytes.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to map the global page frame
    section. The specified virtual address must be a CPU-specific
    page-aligned address. If the flag SEC$M_EXPREG is specified, the
    start_va_64 argument must not be specified or must be specified
    as 0. If SEC$M_EXPREG is set and the start_va_64 argument is
    nonzero, the condition value SS$_IVSECFLG is returned.

    Always refer to the return_va_64 and return_length_64 arguments
    to determine the range of virtual addresses mapped.

 map_page_count

    OpenVMS usage:CPU-specific page count
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the global page frame section to be mapped in CPU-
    specific pages.

74  –  $CRMPSC PFN 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows a process to map
    a section of its address space to a specified physical address
    range represented by page frame numbers. This service creates and
    maps a private page frame section.

    This service accepts 64-bit addresses.

    Format

      SYS$CRMPSC_PFN_64  region_id_64 ,start_pfn ,page_count ,acmode

                         ,flags ,return_va_64 ,return_length_64

                         [,start_va_64]

    C Prototype

      int sys$crmpsc_pfn_64  (struct _generic_64 *region_id_64,

                             unsigned int start_pfn, unsigned

                             int page_count, unsigned int

                             acmode, unsigned int flags, void

                             *(*(return_va_64)), unsigned __int64

                             *return_length_64,...);

74.1  –  Arguments

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region to map the private page
    frame section. The file VADEF.H in SYS$STARLET_C.TLB and the
    $VADEF macro in STARLET.MLB define a symbolic name for each of
    the three default regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 start_pfn

    OpenVMS usage:page frame number
    type:         longword (unsigned)on Alpha, quadword (unsigned) on
                  Integrity servers
    access:       read only
    mechanism:    by value
    The CPU-specific page frame number where the section begins in
    memory.

 page_count

    OpenVMS usage:CPU-specific page count
    type:         longword (unsigned) on Alpha, quadword (unsigned)
                  on Integrity servers
    access:       read only
    mechanism:    by value
    Length of the page frame section in CPU-specific pages.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. The acmode argument is a longword containing the
    access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. The calling process can delete pages only if those pages
    are owned by an access mode equal to or less privileged than the
    access mode of the calling process.

    Address space cannot be created within a region that has a create
    mode associated with it that is more privileged than the caller's
    mode. The condition value SS$_IVACMODE is returned if the caller
    is less privileged than the create mode for the region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the characteristics of the private section
    to be created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The $SECDEF macro and the
    SECDEF.H file define a symbolic name for each flag. You construct
    the flags argument by performing a logical OR operation on the
    symbol names for all desired flags.

    The following table describes each flag that is valid for the
    $CRMPSC_PFN_64 service:

    Flag            Description

    SEC$M_ARGS64    Indicates that all parameters, specifically
                    start_pfn and page_count, are passed as 64-bit
                    numbers. This flag is ignored on OpenVMS Alpha
                    but must be set on Integrity server systems. If
                    the flag is not set on Integrity servers, the
                    error code SS$_IVSECFLG is returned.
    SEC$M_EXPREG    Pages are mapped into the first available space
                    at the current end of the specified region.
    SEC$M_NO_       Pages cannot overmap existing address space.
    OVERMAP         By default, pages can overmap existing address
                    space.
    SEC$M_PFNMAP    Pages form a page frame section. By default, this
                    flag is always present in this service and cannot
                    be disabled.
    SEC$M_          Flag that must be set when a PFN-mapped section
    UNCACHED        is created if this section must be treated
                    as uncached memory. Flag is ignored on Alpha
                    systems; it applies only to Integrity server
                    systems.
    SEC$M_WRT       Pages form a read/write section. By default,
                    pages form a read-only section.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an invalid combination of flags is set.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address into which the private page
    frame section was mapped. The return_va_64 argument is the 32- or
    64-bit virtual address of a naturally aligned quadword into which
    the service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the virtual address range mapped. The
    return_length_64 argument is the 32- or 64-bit virtual address
    of a naturally aligned quadword into which the service returns
    the length of the virtual address range in bytes.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to map the private page frame
    section. The specified virtual address must be a CPU-specific
    page aligned address. If the flag SEC$M_EXPREG is specified, the
    start_va_64 argument must not be specified or must be specified
    as 0. If SEC$M_EXPREG is set and the start_va_64 argument is
    nonzero, the condition value SS$_IVESCFLG is returned.

75  –  $CVT FILENAME (Alpha and Integrity servers)

    Converts a string from RMS format to file-system (ACP-QIO) format
    or from file-system (ACP-QIO) format to RMS format.

    Format

      SYS$CVT_FILENAME  cvttyp ,srcstr ,inflags ,outbuf ,outlen

                        ,outflags

    C Prototype

      int sys$cvt_filename  (unsigned int cvttyp, void *srcstr,

                            unsigned int inflags, void *outbuf,

                            unsigned short int *outlen, unsigned int

                            *outflags);

75.1  –  Arguments

 cvttyp

    OpenVMS usage:unsigned_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Longword value that indicates whether the conversion is from RMS
    format to ACP-QIO format or vice versa.

    There are two legal values for this parameter, represented by the
    symbols CVTFNM$C_ACPQIO_TO_RMS and CVTFNM$C_RMS_TO_ACPQIO, that
    are defined by the $CVTFNMDEF macro.

 srcstr

    OpenVMS usage:string of bytes or words
    type:         string of bytes or words
    access:       read only
    mechanism:    by 32-bit descriptor-fixed-length string descriptor
    String to be converted by the service.

    If the conversion is from RMS format to ACP-QIO format, srcstr
    is an ISO-Latin-1 or VTF-7-encoded character string. If the
    conversion is from ACP-QIO format to RMS format, srcstr is a
    string of byte-width or word-width characters.

    The descriptor length field indicates the length of the input
    string in bytes, whether the characters are byte-width or word-
    width.

    The srcstr argument is the 32-bit address of a descriptor that
    points to this string.

 inflags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Longword flag mask indicating the characteristics of the input
    string.

    For conversion from RMS format to ACP-QIO format, only the
    CVTFNM$V_NO_DELIMITERS flag is valid.

    For conversion from ACP-QIO format to RMS format, legal flags are
    CVTFNM$V_WORD_CHARS and CVTFNM$V_NO_DELIMITERS (defined by the
    $CVTFNMDEF macro).

    Flag                 Description

    CVTFNM$V_WORD_       Input source string contains word-width
    CHARS                UCS-2 characters (ACPQIO_TO_RMS conversion
                         only).
    CVTFNM$V_NO_         Input source string should be treated as an
    DELIMITERS           arbitrary string (such as a subdirectory
                         name) rather than as a file name that
                         contains (or should contain) dots or
                         semicolons as type and version delimiters.
    CVTFNM$V_FORCE_      Causes this system service to convert each
    UPCASE               character to uppercase. (ACPQIO_TO_RMS
                         conversion only).

 outbuf

    OpenVMS usage:string of bytes or words
    type:         string of bytes or words
    access:       write only
    mechanism:    by 32-bit descriptor-fixed-length string descriptor
    The buffer into which the converted string is to be written.

    If the conversion is from RMS format to ACP-QIO format, the
    string may consist of byte-width ISO Latin-1 characters or
    word-width UCS-2 characters, depending on the characters in the
    source string. (If any character in the source string must be
    converted to UCS-2, then all characters in the output buffer will
    be converted to UCS-2.)

    If the conversion is from ACP-QIO format to RMS format, then the
    output string will consist of ISO Latin-1 and VTF-7 characters in
    RMS canonical form. (See the Guide to OpenVMS File Applications.)

    For ACPQIO_TO_RMS conversion, if the output string contains word-
    width characters, the CVTFNM$V_WORD_CHARS flag in the outflags
    flag mask will be set.

    The outbuf argument is the 32-bit address of a descriptor
    pointing to a buffer writable in the access mode of the caller.

 outlen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32-bit reference
    The outlen argument is the 32-bit address of a (16-bit) word
    writable in the access mode of the caller.

 outflags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32-bit reference
    Longword flag mask in which the service sets or clears flags to
    indicate characteristics of the output string.

    For an RMS_TO_ACPQIO conversion, SYS$CVT_FILENAME sets the bit
    corresponding to CVTFNM$V_WORD_CHARS (defined by the $CVTFNMDEF
    macro) if the characters of the converted string are one-
    word wide rather than one-byte wide. If the characters of the
    converted string are one-byte wide, the service clears the
    CVTFNM$V_WORD_CHARS bit. All other bits are cleared by an RMS_
    TO_ACPQIO conversion.

    The outflags argument is the 32-bit address of a 32-bit flag mask
    writable in the access mode of the caller.

76  –  $DACEFC

    Releases the calling process's association with a common event
    flag cluster.

    Format

      SYS$DACEFC  efn

    C Prototype

      int sys$dacefc  (unsigned int efn);

76.1  –  Argument

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of any event flag in the common cluster to be
    disassociated. The efn argument is a longword containing this
    number; however, $DACEFC uses only the low-order byte. The number
    must be in the range of 64 through 95 for cluster 2, and 96
    through 127 for cluster 3.

77  –  $DALLOC

    Deallocates a previously allocated device.

    Format

      SYS$DALLOC  [devnam] ,[acmode]

    C Prototype

      int sys$dalloc  (void *devnam, unsigned int acmode);

77.1  –  Arguments

 devnam

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the device to be deallocated. The devnam argument is the
    address of a character string descriptor pointing to the device
    name string. The string might be either a physical device name or
    a logical name. If it is a logical name, it must translate to a
    physical device name.

    If you do not specify a device name, all devices allocated by the
    process from access modes equal to or less privileged than that
    specified are deallocated.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode from which the deallocation is to be performed. The
    acmode argument is a longword containing the access mode.

    The $PSLDEF macro defines the following symbols for the four
    access modes:

    Symbol         Access Mode

    PSL$C_KERNEL   Kernel
    PSL$C_EXEC     Executive
    PSL$C_SUPER    Supervisor
    PSL$C_USER     User

    The most privileged access mode used is the access mode of the
    caller.

78  –  $DASSGN

    Deassigns (releases) an I/O channel previously acquired using the
    Assign I/O Channel ($ASSIGN) service.

    Format

      SYS$DASSGN  chan

    C Prototype

      int sys$dassgn  (unsigned short int chan);

78.1  –  Argument

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Number of the I/O channel to be deassigned. The chan argument is
    a word containing this number.

79  –  $DCLAST

    Queues an asynchronous system trap (AST) for the calling access
    mode or for a less privileged access mode.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$DCLAST  astadr ,[astprm] ,[acmode]

    C Prototype

      int sys$dclast  (void (*astadr)(__unknown_params), unsigned

                      __int64 astprm, unsigned int acmode);

79.1  –  Arguments

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference
    AST service routine to be executed. On Alpha and Integrity server
    systems, the astadr argument is the 32- or 64-bit address of this
    routine.

 astprm

    OpenVMS usage:user_arg
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 64-bit value
    AST parameter to be passed to the AST routine specified by the
    astadr argument. On Alpha and Integrity server systems, the
    astprm argument is a quadword value containing this parameter.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode for which the AST is to be declared. The most
    privileged access mode used is the access mode of the caller. The
    resultant mode is the access mode for which the AST is declared.

80  –  $DCLCMH

    Specifies the address of a routine to receive control when a
    Change Mode to User or Change Mode to Supervisor instruction trap
    occurs.

    Format

      SYS$DCLCMH  addres ,[prvhnd] ,[type]

    C Prototype

      int sys$dclcmh  (int (*addres)(__unknown_params), void

                      *(*(prvhnd)), char type);

80.1  –  Arguments

 addres

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Routine to receive control when a change mode trap or a
    compatibility mode fault occurs. The addres argument is the
    exception handling code in the address space of the calling
    process.

    If you specify the addres argument as 0, $DCLCMH clears the
    previously declared handler.

 prvhnd

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of a previously declared handler. The prvhnd argument
    is the address of a longword containing the address of the
    previously declared handler.

 type

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Handler type indicator. The type argument is a longword value.
    The value 0 (the default) indicates that a change mode handler
    is to be declared for the access mode at which the request is
    issued; the value 1 specifies that a compatibility mode handler
    is to be declared.

81  –  $DCLEXH

    Declares an exit handling routine that receives control when an
    image exits.

    Format

      SYS$DCLEXH  desblk

    C Prototype

      int sys$dclexh  (void *desblk);

81.1  –  Argument

 desblk

    OpenVMS usage:exit_handler_block
    type:         longword (unsigned)
    access:       write
    mechanism:    by reference
    Exit handler control block. The desblk argument is the address of
    this control block.

    To view the control block diagram, see the VSI OpenVMS System
    Services Reference Manual.

82  –  $DECLARE RM

    Creates a new Resource Manager instance (RMI) in the calling
    process.

    Format

      SYS$DECLARE_RM  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,rm_id

                      ,event_handler ,[part_name] [,[rm_context]

                      ,[acmode] ,[tm_log_id] ,[event_mask]]

    C Prototype

      int sys$declare_rm  unsigned int efn, unsigned int

                          flags, struct _iosb *iosb, void

                          (*astadr)(__unknown_params), int

                          astprm, unsigned int *rm_id, void

                          (*event_handler)(__unknown_params),... ;

82.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for these option
    flags, described in $DECLARE_RM Option Flags. All undefined bits
    must be 0. If this argument is omitted, no flags are used.

    Table SYS-11 $DECLARE_RM Option Flags

    Flag Name      Description

    DDTM$M_SYNC    Specifies successful synchronous completion by
                   returning SS$_SYNCH. When SS$_SYNCH is returned,
                   the AST routine is not called, the event flag is
                   not set, and the I/O status block is not filled
                   in.
    DDTM$M_        Set this flag for the new RMI to be volatile.
    VOLATILE       With this flag set, the DECdtm transaction manager
                   will not log information about any RM participants
                   associated with the new RMI. Resource managers
                   that never perform recovery should set this flag.

                   If this flag is clear, the new RMI is not
                   volatile. The DECdtm transaction manager will
                   log the following information about each RM
                   participant associated with the new RMI:

                   o  The name of the RM participant.

                   o  The identifier (TID) of the transaction in
                      which it is participating.

                   If this flag is clear and a recoverable failure
                   occurs, such as a system crash, the resource
                   manager can use the $GETDTI system service to
                   query the transaction log to determine the outcome
                   of the transactions in which it was participating
                   before the failure occurred.

 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.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the I/O status block diagram.

 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 $DECLARE_RM
    service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The AST parameter that is passed to the AST routine specified by
    the astadr argument.

 rm_id

    OpenVMS usage:identifier
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Longword in which the identifier (RM_ID) of the new RMI is
    returned. This identifier is unique within the calling process
    at any time.

 event_handler

    OpenVMS usage:ast_procedure
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    The new RMI's event handler. This routine is called to report
    an event to the new RMI or one of its RM participants. The
    event_handler argument is the address of the entry mask of this
    routine. An event handler must be specified.

    This routine is called as an AST delivered by the DECdtm
    transaction manager.

    The AST is executed in the access mode specified by the acmode
    argument. The AST parameter is the address of a DECdtm event
    report block that contains an event report.

    The DECdtm transaction manager reports events to an RMI and the
    RM participants associated with it using ASTs executed in the
    access mode specified in the call to $DECLARE_RM that created
    that RMI.

    The DECdtm transaction manager creates an event report block,
    and passes its address to the AST routine in the parameter of the
    AST. Each event report block contains:

    o  The identifier of the event report.

    o  A code that describes the event.

    o  The identifier (TID) of the transaction.

    o  The name of the RM participant or RMI.

    o  The context of the RM participant or RMI.

    o  Other data that depend on the type of the event.

    Fields in an Event Report Block describes the fields in an event
    report block, in alphabetical order:

    Table SYS-12 Fields in an Event Report Block

    Symbol             Description

    DDTM$A_TID_PTR     Address of the identifier (TID) of the
                       transaction.
    DDTM$L_ABORT_      Abort reason code (longword).
    REASON
                       See the $ACK_EVENT service for a list of
                       possible values. Present only in abort event
                       reports.
    DDTM$L_EVENT_TYPE  A code that identifies the event (longword).
                       The following table lists the possible values:
                       Symbol             Event

                       DDTM$K_ABORT       Abort
                       DDTM$K_COMMIT      Commit
                       DDTM$K_PREPARE     Prepare
                       DDTM$K_ONE_PHASE_  One-phase commit
                       COMMIT
                       DDTM$K_STARTED_    Default transaction started
                       DEFAULT
                       DDTM$K_STARTED_    Nondefault transaction
                       NONDEFAULT         started

    DDTM$L_REPORT_ID   Event report identifier (unsigned longword).
    DDTM$L_RM_CONTEXT  The context of the RM participant or RMI to
                       which the event report is being delivered
                       (unsigned longword).
    DDTM$Q_PART_NAME   The name of the RM participant or RMI to
                       which the event report is being delivered
                       (descriptor).
    DDTM$Q_TX_CLASS    The transaction class of the transaction
                       (descriptor).

    Each event report must be acknowledged by calling $ACK_EVENT,
    specifying the identifier of the report. This acknowledgment need
    not come from AST context.

    The DECdtm transaction manager delivers only one event report
    at a time to each RM participant. For example, if a prepare
    event report has been delivered to an RM participant, and the
    transaction is aborted while the RM participant is doing its
    prepare processing, then the DECdtm transaction manager does not
    deliver an abort event report to that RM participant until it has
    acknowledged the prepare event report by a call to $ACK_EVENT.
    Note that the DECdtm transaction manager may deliver multiple
    reports to an RMI.

    After acknowledging the event report, the RMI or RM participant
    should no longer access the event report block.

 part_name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    The name of the new RMI. This is:

    o  The default name of its RM participants, used when a call to
       $JOIN_RM or $ACK_EVENT that adds one of these RM participants
       to a transaction does not specify the name of the new RM
       participant.

       When an RM participant associated with the new RMI is added to
       a transaction by a call to $JOIN_RM or $ACK_EVENT that has a
       zero part_name argument, then that RM participant inherits its
       name from the RMI. The name of that RM participant is the same
       as the name of the RMI.

    o  The string passed in the participant name field of Transaction
       Started event reports delivered to the new RMI.

    This string must be no longer than 32 characters.

    If this argument is omitted, the name of the new RMI is the null
    string.

    To ensure smooth operation in a mixed-network environment,
    refer to the chapter entitled Managing DECdtm Services in the
    VSI OpenVMS System Manager's Manual, for information on defining
    node names.

 rm_context

    OpenVMS usage:userarg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The context of the new RMI. This is:

    o  The default context of its RM participants, used when a
       call to $JOIN_RM or $ACK_EVENT that adds one of these RM
       participants to a transaction does not specify the context
       of the new RM participant.

       When an RM participant associated with the new RMI is added
       to a transaction by a call to $JOIN_RM or $ACK_EVENT that has
       a zero rm_context argument, then that RM participant inherits
       its context from the RMI. The context of that RM participant
       is the same as the context of the RMI.

    o  The string passed in the context field of Transaction Started
       event reports delivered to the new RMI.

    If this argument is omitted, the context of the new RMI is 0.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The access mode of the new RMI. This is:

    o  The access mode at which the ASTs delivered to its event
       handler are to be executed.

    o  The least privileged access mode that the caller must be in
       to call $ACK_EVENT to acknowledge an event report delivered to
       the new RMI or to its RM participants.

    o  The least privileged access mode that the caller must be in to
       delete the new RMI by calling $FORGET_RM.

    o  The least privileged access mode that the caller must be in to
       call $JOIN_RM to add a new RM participant associated with the
       new RMI.

    o  The most privileged access mode of new branches that this RMI
       is interested in, if the event_mask argument requests events
       of type Transaction Started.

       The call to $START_TRANS or $START_BRANCH that adds a new
       branch to a transaction specifies the access mode of that
       transaction within this process. The DECdtm transaction
       manager reports a Transaction Started event to the new RMI
       only if the access mode of the transaction is the same as or
       less privileged than the access mode of the new RMI.

       For example, if the access mode of the new RMI is supervisor,
       it will receive a Transaction Started event when a branch
       of the calling process is added to a transaction only if the
       access mode of that transaction is user or supervisor.

    The access mode of the new RMI is the least privileged of:

    o  The access mode of the caller.

    o  The access mode specified by the acmode argument.

    If this argument is omitted, the access mode of the new RMI is
    the same as the access mode of the caller.

 tm_log_id

    OpenVMS usage:DECnet_uid
    type:         octaword (unsigned)
    access:       write only
    mechanism:    by reference
    The globally unique identifier of the transaction log for the
    local node. This identifier is used during resource manager
    recovery to check that the correct DECdtm transaction manager
    log is used. See $GETDTI for more information.

    To ensure smooth operation in a mixed-network environment,
    refer to the chapter entitled Managing DECdtm Services in the
    VSI OpenVMS System Manager's Manual, for information on defining
    node names.

 event_mask

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Requests the types of event to be reported to the new RMI and to
    its RM participants. The only type of event that can be reported
    to the new RMI is a Transaction Started event (a default or non-
    default transaction started event). The following types of event
    can be reported to its RM participants:

    o  Abort events

    o  Commit events

    o  One-phase commit events

    o  Prepare events

    The event_mask argument is a longword bit mask that is the
    logical OR of each bit set, where each bit corresponds to an
    event. The $DDTMDEF module defines a symbolic name for each flag
    bit. $DECLARE_RM Event Selection Flags describes the flags. All
    undefined bits must be 0.

    If this argument is omitted, the following events are requested:

    o  Abort events

    o  Commit events

    o  One-phase commit events

    o  Prepare events

    Table SYS-13 $DECLARE_RM Event Selection Flags

    Flag Name      Description

    DDTM$M_EV_     Specifies that abort events are to be reported
    ABORT          to the RM participants associated with the new
                   RMI. If this flag is set, when an abort event
                   occurs for a transaction, the DECdtm transaction
                   manager delivers an abort event report to each RM
                   participant in the transaction that is associated
                   with the new RMI.
    DDTM$M_EV_     Specifies that commit events are to be reported to
    COMMIT         the RM participants associated with the new RMI.

                   If this flag is set, when the DECdtm transaction
                   manager decides that the outcome of a transaction
                   is commit, it delivers a commit event report to
                   each RM participant in the transaction that is
                   associated with the new RMI.
    DDTM$M_EV_     Specifies that prepare events are to be reported
    PREPARE        to the RM participants associated with the new
                   RMI.

                   If this flag is set, when the DECdtm transaction
                   manager initiates the commit protocol (in response
                   to a call to $END_TRANS) to determine the outcome
                   of a transaction, it reports a prepare event to
                   each RM participant in the transaction that is
                   associated with the new RMI.

                   The acknowledgment of a prepare event is a vote on
                   the outcome of the transaction. See $ACK_EVENT for
                   more information.
    DDTM$M_EV_     Specifies that events of type Transaction Started
    TRANS_START    are to be reported to the new RMI. Events of type
                   Transaction Started are:

                   o  Default transaction started events.

                   o  Non-default transaction-started events.

                   If this flag is set, the DECdtm transaction
                   manager will report one of these events to the
                   new RMI whenever a new branch in the calling
                   process is added to a transaction, provided that
                   the access mode of the new branch is not more
                   privileged than the access mode of the new RMI.
                   The acknowledgment of that event report may add
                   a new RM participant associated with the new RMI
                   to that transaction. See the description of the
                   acmode argument for a discussion of access modes.

83  –  $DECLARE RMW

    Creates a new Resource Manager instance (RMI) in the calling
    process. $DECLARE_RMW always waits for the request to complete
    before returning to the caller. Other than this, it is identical
    to $DECLARE_RM.

    Format

      SYS$DECLARE_RMW  [efn] ,[flags] ,iosb ,[astadr] ,[astprm]

                       ,rm_id ,event_handler ,[part_name]

                       [,[rm_context] ,[acmode] ,[tm_log_id]

                       ,[event_mask]]

    C Prototype

      int sys$declare_rmw  (unsigned int efn, unsigned int

                           flags, struct _iosb *iosb, void

                           (*astadr)(__unknown_params), int

                           astprm, unsigned int *rm_id, void

                           (*event_handler)(__unknown_params),...);

84  –  $DELETE

    The Delete service removes an existing record from a relative
    or indexed file. You cannot use this service when processing
    sequential files.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

85  –  $DELETE BUFOBJ (Alpha and Integrity servers)

    On Alpha and Integrity server systems, deletes a buffer object
    previously created by the $CREATE_BUFOBJ_64 system service.

    This service accepts 64-bit addresses.

    Format

      SYS$DELETE_BUFOBJ  buffer_handle_64

    C Prototype

      int sys$delete_bufobj  (struct _generic_64 *buffer_handle_64);

85.1  –  Arguments

 buffer_handle_64

    OpenVMS usage:handle
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The buffer object to be deleted. The buffer_handle_64 argument
    is the 32- or 64-bit address of a 2-longword array previously
    returned by a $CREATE_BUFOBJ_64 call.

86  –  $DELETE GALAXY LOCK (Alpha Only)

    Invalidates an OpenVMS Galaxy lock and deletes it.

    Note that this system service is supported only in an OpenVMS
    Alpha Galaxy environment.

    For more information about programming with OpenVMS Galaxy system
    services, see the VSI OpenVMS Alpha Partitioning and Galaxy Guide.

    Format

      SYS$DELETE_GALAXY_LOCK  handle

    C Prototype

      int sys$delete_galaxy_lock  (unsigned __int64 lock_handle);

86.1  –  Arguments

 handle

    OpenVMS usage:galaxy lock handle
    type:         quadword (unsigned)
    access:       read
    mechanism:    input by value
    The 64-bit lock handle that identifies the lock to be deleted.
    This value is returned by SYS$CREATE_GALAXY_LOCK.

87  –  $DELETE GALAXY LOCK TABLE (Alpha Only)

    Deletes an OpenVMS Galaxy locktable.

    Note that this system service is supported only in an OpenVMS
    Alpha Galaxy environment. For more information about programming
    with OpenVMS Galaxy system services, see the VSI OpenVMS Alpha
    Partitioning and Galaxy Guide.

    Format

      SYS$DELETE_GALAXY_LOCK_TABLE  handle

    C Prototype

      int sys$delete_galaxy_lock_table  (unsigned int

                                        *lcktbl_handle);

87.1  –  Arguments

 lcktbl_handle

    OpenVMS usage:lock table handle
    type:         longword (unsigned)
    access:       read
    mechanism:    input by value
    The 32-bit lock table handle that identifies the table to be
    deleted. This value is returned by SYS$CREATE_GALAXY_LOCK_TABLE.

88  –  $DELETE INTRUSION

    Searches for and deletes all records in the intrusion database
    matching the caller's specifications.

    Format

      SYS$DELETE_INTRUSION  user_criteria ,[flags]

    C Prototype

      int sys$delete_intrusion  (void *user_criteria, unsigned int

                                flags);

88.1  –  Arguments

 user_criteria

    OpenVMS usage:char_string or item_list_3
    type:         character-coded text string or longword (unsigned)
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor or by
                  reference
    If the CIA$M_ITEMLIST flag is FALSE:

    The user_criteria argument is the description of intruder or
    suspect. This argument is the address of a character-string
    descriptor pointing to a buffer containing the user criteria to
    match an intrusion record's user specification in the intrusion
    database.

    The user_criteria argument is a character string of 1 to 1058
    bytes containing characters to match the user specification on
    records in the intrusion database.

    A user specification is any combination of the suspect's or
    intruder's source node name, source user name, source DECnet-
    Plus address, local failed user name, or local terminal. The user
    specification for an intrusion record is based on the input to
    the $SCAN_INTRUSION service and the settings of the LGI system
    parameter. For more information, see the VSI OpenVMS Guide to
    System Security.

    Wildcards are allowed for the user_criteria argument. For
    example, if you specify an asterisk (*)  for the user_criteria
    argument, the service deletes all records in the intrusion
    database.

    If the CIA$M_ITEMLIST flag is TRUE:

    The user_criteria argument is now the address of a 32-bit item
    list. If the item list is used, one item, the CIA$_USER_CRITERIAL
    item, must be present in the item list. The ITM$L_BUFADR should
    point to a buffer containing the specified user criteria.

    The following table lists the valid item descriptions for the
    user_criteria argument:

    Item               Description

    CIA$_SCSNODE_LIST  Address of a list of 8-character null-padded
                       SCS nodenames for which intrusions are to be
                       deleted.
    CIA$_USER_         Address of a buffer, 1-1058 bytes long,
    CRITERIAL          containing the intruder or suspect.

    If the CIA$_SCSNODE_LIST item is present, it is the address
    of a list of 8-character null-padded SCS nodenames for which
    intrusions are to be deleted. If this item is absent, the service
    deletes the specified intrusion records for all nodes in the
    cluster. Multiple CIA$_SCSNODE_LIST items are permitted.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Functional specification for the service. The flags argument is a
    longword bit mask wherein each bit corresponds to an option.

    Each flag option has a symbolic name. The $CIADEF macro defines
    the following valid names for the $DELETE_INTRUSION service:

    Symbolic Name      Description

    CIA$M_IGNORE_      The service should not wait for the return
    RETURN             status from the security server. No return
                       status from the server's function will be
                       returned to the caller.
    CIA$M_ITEMLIST     If FALSE, the user_criteria argument is a
                       character string. If TRUE, this argument is a
                       32-bit item list.

89  –  $DELETE PROXY

    Deletes an existing proxy or removes the default user or a local
    user from an existing proxy in the proxy database.

    Format

      SYS$DELETE_PROXY  rem_node ,rem_user ,[local_user] ,[flags]

    D Prototype

      int sys$delete_proxy  (void *rem_node, void *rem_user, void

                            *local_user, unsigned int flags);

89.1  –  Arguments

 rem_node

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Remote node name of the proxy to be deleted from or modified
    in the proxy database. The rem_node argument is the address of
    a character-string descriptor pointing to the remote node name
    string.

    A remote node name consists of 1 to 1024 characters. No specific
    characters, format, or case are required for a remote node name
    string. All node names are converted to their DECnet for OpenVMS
    full name unless the PRX$M_BYPASS_EXPAND flag is set with the
    flags argument.

    Asterisk (*)  and percent sign (%) wildcards are allowed for the
    remote node specification. If you specify wildcards for the rem_
    node argument, the security server searches for an exact match
    to the specified remote node first. If it does not find an exact
    match, the server performs the requested operations on all of the
    matching proxies in the proxy database.

 rem_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Remote user name of the proxy to be deleted from or modified in
    the proxy database. The rem_user argument is the address of a
    character-string descriptor pointing to the user name string.

    A remote user name consists of 1 to 32 alphanumeric characters,
    including dollar signs ($),  underscores (_), and brackets
    ([ ]).  Any lowercase characters specified are automatically
    converted to uppercase.

    The rem_user argument can be specified in user identification
    code (UIC) format ([group, member]).  Brackets are allowed only
    if the remote user name string specifies a UIC. Group and member
    are character-string representations of octal numbers with no
    leading zeros.

    Asterisk (*)  and percent sign (%) wildcards are allowed for
    the remote user specification. If you specify wildcards for the
    rem_user argument, the server searches for an exact match to
    the specified remote user first. If it does not find an exact
    match, the server performs the requested operations on all of the
    matching proxies in the proxy database.

 local_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Local user name to delete from the proxy record specified by the
    rem_node and rem_user arguments in the proxy database. The local_
    user argument is the address of a character-string descriptor
    pointing to the local user name.

    A local user name consists of 0 to 32 alphanumeric characters,
    including dollar signs ($)  and underscores (_). If the local_
    user argument is not specified or has a length of 0, the server
    will delete the entire record or records specified by the rem_
    node and rem_user arguments from the proxy database.

    If the local_user argument is specified, the server will delete
    only the user name specified by the local_user argument from
    the record specified by the rem_node and rem_user arguments. The
    local_user argument can specify either the proxy's default user
    or a user name in the proxy's local users list.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Functional specification for the service and type of user the
    local_user argument represents. The flags argument is a longword
    bit mask wherein each bit corresponds to an option.

    Each flag option has a symbolic name. The $PRXDEF macro defines
    the following symbolic names:

    Symbolic Name      Description

    PRX$M_BYPASS_      The service should not convert the node name
    EXPAND             specified in the rem_node argument to its
                       corresponding DECnet full name. If this flag
                       is set, it is the caller's responsibility to
                       ensure that the fully expanded node name is
                       passed into the service.

    PRX$M_IGNORE_      The service should not wait for a return
    RETURN             status from the security server. No return
                       status from the server's function will be
                       returned to the caller.
    PRX$M_EXACT        The service should match exactly the remote
                       node and remote user and ignore wildcards.

90  –  $DELETE REGION 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, deletes a virtual region
    within the process's address space, including all created virtual
    addresses within the region.

    This service accepts 64-bit addresses.

    Format

      SYS$DELETE_REGION_64  region_id_64 ,acmode ,return_va_64

                            ,return_length_64

    C Prototype

      nt sys$delete_region_64  (struct _generic_64 *region_id_64,

                               unsigned int acmode, void

                               *(*(return_va_64)), unsigned __int64

                               *return_length_64);

90.1  –  Arguments

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region to be deleted. The
    region ID specified must be one returned by the $CREATE_REGION_64
    service. You cannot specify VA$C_P0, VA$C_P1, or VA$C_P2.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $DELETE_REGION_64. The
    acmode argument is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. The caller can delete pages only if those pages are owned
    by an access mode equal to or less privileged than the access
    mode of the caller.

    Once all pages are deleted within the region, the region can be
    deleted only if the region is owned by an access mode equal to or
    less privileged than the access mode of the caller.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the pages that
    $DELETE_REGION_64 has successfully deleted. The return_va_64
    argument is the 32- or 64-bit virtual address of a naturally
    aligned quadword into which the service returns the virtual
    address of the first page deleted. Virtual addresses are deleted
    from low address to high address, regardless of the direction in
    which virtual addresses expand for that region.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the virtual address range that $DELETE_REGION_64
    has successfully deleted. The return_length_64 argument is the
    32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length of the deleted virtual
    address range in bytes.

91  –  $DELLNM

    Deletes all logical names with the specified name at the
    specified access mode or outer access mode, or it deletes all
    the logical names with the specified access mode or outer access
    mode in a specified table.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$DELLNM  tabnam ,[lognam] ,[acmode]

    C Prototype

      int sys$dellnm  (void *tabnam, void *lognam, unsigned char

                      *acmode);

91.1  –  Arguments

 tabnam

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of a logical name table or a list of tables to be searched
    for the logical name to be deleted. The tabnam argument is the
    32- or 64-bit address of a descriptor that points to the table
    name. This argument is required.

    If tabnam is not the name of a logical name table, it is assumed
    to be a logical name and is translated iteratively until either
    the name of a logical name table is found or the number of
    translations allowed by the system has been performed.

    If tabnam translates to the name of a list of tables, $DELLNM
    does the following:

    o  If you specify the lognam argument, $DELLNM searches (in
       order) each table in the list until it finds the first table
       that contains the specified logical name. If the logical
       name is at the specified access mode, $DELLNM then deletes
       occurrences of the logical name at the specified access mode
       and at outer access modes within the table.

    o  If you do not specify the lognam argument, $DELLNM deletes all
       of the logical names at the specified access mode or at outer
       access modes from the first table in the list whose access
       mode is equal to or less privileged than the caller's access
       mode.

 lognam

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Logical name to be deleted. The lognam argument is the 32- or
    64-bit address of a descriptor that points to the logical name
    string.

 acmode

    OpenVMS usage:access_mode
    type:         byte (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Access mode to be used in the delete operation. The acmode
    argument is the 32- or 64-bit address of a byte containing this
    access mode. The $PSLDEF macro defines symbolic names for the
    four access modes.

    You determine the access mode actually used in the delete
    operation by maximizing the access mode of the caller with the
    access mode specified by the acmode argument; that is, the less
    privileged of the two is used.

    However, if you have SYSNAM privilege, the delete operation is
    executed at the specified access mode regardless of the caller's
    access mode.

    If you omit this argument or specify it as 0, the access mode
    of the caller is used in the delete operation. The access mode
    used in the delete operation determines which tables are used and
    which names are deleted.

92  –  $DELMBX

    Marks a permanent mailbox for deletion.

    Format

      SYS$DELMBX  chan

    C Prototype

      int sys$delmbx  (unsigned short int chan);

92.1  –  Argument

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Number of the channel assigned to the mailbox that is to be
    deleted. The chan argument is a word containing this number.

93  –  $DELPRC

    Allows a process to delete itself or another process.

    Format

      SYS$DELPRC  [pidadr] ,[prcnam] ,[flags]

    C Prototype

      int sys$delprc  (unsigned int *pidadr, void *prcnam);

93.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) of the process to be deleted. The
    pidadr argument is the address of a longword that contains the
    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 delete processes in other
    UIC groups.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Process name of the process to be deleted. The prcnam is the
    address of a character string descriptor pointing to the
    process name string. 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.

    You use the prcnam argument to delete only processes in the
    same UIC group as the calling process, because process names
    are unique to UIC groups, and the operating system uses the UIC
    group number of the calling process to interpret the process name
    specified by the prcnam argument.

    You must use the pidadr argument to delete processes in other
    groups.

 flags

    OpenVMS usage:mask
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The flags argument can be used to control whether exit handlers
    are called by $DELPRC. If the flags argument is not specified
    or is specified with a zero, the system parameter DELPRC_EXIT
    controls what exit handlers, if any, are called by $DELPRC.

    The $DELPRCSYMDEF macro defines a symbolic name for EXIT and
    NOEXIT. The EXIT flag should be or'd with the access mode defined
    by the $PSLDEF macro for the initial exit handler.

    The following table describes each flag:

    Flag           Description

    DELPRC$M_      When set, exit handlers as specified by DELPRC$M_
    EXIT           MODE are called. This flag is ignored for a hard
                   suspended process.
    DELPRC$M_      2 bit field: values psl$c_kernel, psl$c_exec,
    MODE           psl$c_super, psl$c_user (from the $PSLDEF macro)
    DELPRC$M_      Set to disable any exit handler execution
    NOEXIT

                                   NOTE

       Deleting the current process:

       When $DELPRC is used to delete the current process,
       execution cannot continue in the mode from which $DELPRC
       was called. The first exit handlers that are called will be
       in the next more privileged mode relative to the mode from
       which $DELPRC was called (subject to options defined). For
       example:

       o  $DELPRC called from user mode can call supervisor mode
          exit handlers.

       o  $DELPRC called from exec mode can only execute kernel
          mode exit handlers.

       o  $DELPRC called from kernel mode cannot call exit
          handlers.

94  –  $DELTVA

    Deletes a range of addresses from a process's virtual address
    space. Upon successful completion of the service, the deleted
    pages are inaccessible, and references to them cause access
    violations.

    Format

      SYS$DELTVA  inadr ,[retadr] ,[acmode]

    C Prototype

      int sys$deltva  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode);

94.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Starting and ending virtual addresses of the pages to be
    deleted. The inadr argument is the address of a 2-longword array
    containing, in order, the starting and ending process virtual
    addresses. If the starting and ending virtual addresses are the
    same, a single page is deleted. The addresses are adjusted up or
    down to fall on CPU-specific page boundaries. Only the virtual
    page number portion of each virtual address is used; the low-
    order byte-within-page bits are ignored.

    The $DELTVA service deletes pages starting at the address
    contained in the second longword of the inadr argument and ending
    at the address in the first longword. Thus, if you use the same
    address array for both the Create Virtual Address Space ($CRETVA)
    and the $DELTVA services, the pages are deleted in the reverse
    order from which they were created.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Starting and ending process virtual addresses of the pages that
    $DELTVA has deleted. The retadr argument is the address of a
    2-longword array containing, in order, the starting and ending
    process virtual addresses.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode on behalf of which the service is to be performed.
    The acmode argument is a longword containing the access mode.

    The most privileged access mode used is the access mode of the
    caller. The calling process can delete pages only if those pages
    are owned by an access mode equal to or less privileged than the
    access mode of the calling process.

95  –  $DELTVA 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, deletes a range of virtual
    addresses from a process's virtual address space. Upon successful
    completion of the service, the deleted pages are inaccessible,
    and references to them cause access violations.

    This service accepts 64-bit addresses.

    Format

      SYS$DELTVA_64  region_id_64 ,start_va_64 ,length_64 ,acmode

                     ,return_va_64 ,return_length_64

    C Prototype

      int sys$deltva_64  (struct _generic_64 *region_id_64,

                         void *start_va_64, unsigned __int64

                         length_64, unsigned int acmode, void

                         *(*(return_va_64)), unsigned __int64

                         *return_length_64);

95.1  –  Arguments

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region from which to address
    the VA space.

    The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF macro in
    STARLET.MLB define a symbolic name for each of the three default
    regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified. Also, the region ID that a virtual address
    is in can be obtained by calling the $GET_REGION_INFO service,
    specifying the VA$_REGSUM_BY_VA function.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the pages to be deleted. The
    specified address must be a CPU-specific page aligned address.
    If the region_id_64 argument specifies a shared page table region
    or if the start_va_64 argument lies within a shared page table
    region, the specified address must be a CPU-specific page table
    page aligned address.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be deleted. The length
    specified must be a multiple of CPU-specific pages. If the
    virtual address space is being deleted from a shared page table
    region, the specified length must be page table page aligned or
    include the last page in a memory-resident section.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $DELTVA_64. The acmode
    argument is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. The calling process can delete pages only if those pages
    are owned by an access mode equal to or less privileged than the
    access mode of the calling process.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the deleted virtual address
    range. The return_va_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword into which the $DELTVA_64
    service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned quadword
    into which the $DELTVA_64 service returns the length in bytes of
    the virtual address range deleted.

96  –  $DEQ

    Dequeues (unlocks) granted locks; dequeues the sublocks of a
    lock; or cancels an ungranted lock request. The calling process
    must have previously acquired the lock or queued the lock request
    by calling the Enqueue Lock Request ($ENQ) service.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$DEQ  [lkid] ,[valblk] ,[acmode] ,[flags]

    C Prototype

      int sys$deq  (unsigned int lkid, void *valblk, unsigned int

                   acmode, unsigned int flags);

96.1  –  Arguments

 lkid

    OpenVMS usage:lock_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Lock identification of the lock to be dequeued. The lkid argument
    specifies this lock identification.

    Note that if you do not specify the lkid argument, you must
    specify the LCK$M_DEQALL flag in the flags argument.

    When you specify the LCK$M_DEQALL flag in the flags argument,
    different values (or no value) for the lkid argument produce
    varying behavior:

    o  When you do not specify the lkid argument (or specify it as
       0) and you do specify the LCK$M_DEQALL flag, $DEQ dequeues all
       locks held by the process, at access modes equal to or less
       privileged than the effective access mode, on all resources.
       The effective access mode is the least privileged of the
       caller's access mode and the access mode specified in the
       acmode argument.

    o  When you specify the lkid argument as a nonzero value together
       with the LCK$M_DEQALL flag, $DEQ dequeues all sublocks of
       the lock identified by lkid; it does not dequeue the lock
       identified by lkid. For this operation, $DEQ ignores the
       LCK$M_CANCEL flag if it is set. A sublock of a lock is a lock
       that was created when the parid argument in the call to $ENQ
       was specified, where parid is the lock ID of the parent lock.

    If you omit the lkid argument (or specify it as 0) and the LCK$M_
    DEQALL flag is not set, the $DEQ service returns the invalid lock
    ID condition value (SS$_IVLOCKID).

 valblk

    OpenVMS usage:lock_value_block
    type:         longword (unsigned)
    access:       modify
    mechanism:    by 32- or 64-bit reference
    Lock value block for the resource associated with the lock to
    be dequeued. The valblk argument is the 32- or 64-bit address of
    the 16-byte lock value block, or, if LCK$M_XVALBLK is specified
    (on Alpha or Integrity server systems), of the 64-byte lock value
    block. When you specify the LCK$M_DEQALL flag, you cannot use
    this argument.

    When a protected write (PW) or exclusive (EX) mode lock is
    being dequeued and you specify a lock value block in the valblk
    argument, the contents of that lock value block are written to
    the lock value block in the lock database. Further, if the lock
    value block in the lock database was marked as invalid, that
    condition is cleared; the block becomes valid.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode of the lock to be dequeued. The acmode argument is a
    longword containing the access mode.

    The acmode argument is valid only if the LCK$M_DEQALL flag of the
    flags argument is set. The $PSLDEF macro defines the following
    symbols for the four access modes:

    Symbol         Access Mode

    PSL$C_KERNEL   Kernel
    PSL$C_EXEC     Executive
    PSL$C_SUPER    Supervisor
    PSL$C_USER     User

    When dequeuing locks, $DEQ maximizes the access mode of the
    caller and the specified acmode argument. The maximized access
    mode is the less privileged of the caller's access mode and the
    acmode argument. If you do not specify the acmode argument, $DEQ
    uses the caller's access mode. Only those locks with an access
    mode that is equal to or less than the maximized access mode are
    dequeued.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flags specifying options for the $DEQ operation. The flags
    argument is a longword bit mask that is the logical OR of each
    bit set, where each bit corresponds to an option.

    Note that if you do not specify the lkid argument, you must
    specify the LCK$M_DEQALL flag in the flags argument.

    A symbolic name for each flag bit is defined by the $LCKDEF
    macro. The following table describes each flag:

    Flag           Description

    LCK$M_DEQALL   When you specify this flag, $DEQ dequeues
                   multiple locks, depending on the value of the lkid
                   argument. For details, see the description of the
                   lkid argument. The acmode argument is ignored if
                   the LCK$M_DEQALL flag is not set. If you specify
                   LCK$M_DEQALL, the LCK$M_CANCEL flag, if set, is
                   ignored.

    LCK$M_CANCEL   When you specify this flag, $DEQ attempts to
                   cancel a lock request that was queued by $ENQ.
                   You can cancel only a waiting request. When the
                   request is canceled, $DEQ returns the condition
                   value SS$_NORMAL.

                   If you attempt to cancel a granted lock, the
                   request fails and $DEQ returns the condition value
                   SS$_CANCELGRANT. There are two types of waiting
                   requests that can be canceled:

                   o  A request for a new lock

                   o  A request to convert an existing lock

                   When canceling a new lock request, the following
                   action is taken:

                   o  If a completion asynchronous system trap (AST)
                      was requested, the AST is queued for delivery
                      and SS$_ABORT is stored in the lock status
                      block.

                   When canceling a request to convert an existing
                   lock, the conversion request is canceled. The
                   existing granted lock remains unchanged. The
                   following specific actions are taken:

                   o  The blocking AST address specified for the
                      existing granted lock is queued for delivery
                      if the granted mode of the existing lock is
                      blocking other waiting requests.

                   o  If a completion AST was specified by the
                      conversion request, the completion AST is
                      queued for delivery with SS$_CANCEL status
                      stored in the lock status block that was
                      specified by the conversion request.

                   If you specify the LCK$M_DEQALL flag, the LCK$M_
                   CANCEL flag is ignored.

    LCK$M_         When you specify this flag, $DEQ marks the lock
    INVVALBLK      value block, which is maintained for the resource
                   in the lock database, as invalid. The lock value
                   block remains marked as invalid until it is again
                   written to. The Description section of the $ENQ
                   service provides additional information about lock
                   value block invalidation.

                   This flag is ignored if (1)  the lock mode of the
                   lock being dequeued is not protected write or
                   exclusive, or (2)  you specify the LCK$M_CANCEL
                   flag.
    LCK$M_         When you specify this flag, you must provide a
    XVALBLK        64-byte lock value block as the valblk argument.
                   If you do not specify this flag, only the first
                   16 bytes of the buffer specified in the valblk
                   argument will be written.

                   If the value block is written without this flag,
                   the value block will be flagged so that a future
                   reader who specifies the LCK$M_XVALBLK flag in the
                   $ENQ system service call will receive the warning
                   status SS$_XVALNOTVALID until a future writer
                   writes to the value block specifying this flag.

                   This flag is valid only on Alpha and Integrity
                   server systems.

97  –  $DEVICE PATH SCAN (Alpha and Integrity servers)

    On Alpha and Integrity server systems, returns the displayable
    pathname for a given I/O channel or device name. Can be used to
    return all displayable paths to an I/O device.

    Format

      SYS$DEVICE_PATH_SCAN  [chan] [,devnam] ,itmlst [,contxt]

                            [,nullarg]

    C Prototype

      int sys$device_path_scan  (unsigned short int chan, void

                                *devnam, void *itmlst, unsigned int

                                *contxt, struct_generic_64 *nullarg);

97.1  –  Arguments

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Number of the I/O channel assigned to the device about which
    information is desired. The chan argument is a word containing
    this number.

    To identify a device to $DEVICE_PATH_SCAN, you can specify either
    the chan or devnam parameters, but you should not specify both.
    If you specify both arguments, the chan argument is used.

    If you specify neither chan nor devnam, $DEVICE_PATH_SCAN uses a
    default value of 0 for chan.

 devnam

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    The name of the device about which $DEVICE_PATH_SCAN is to
    return path information. The devnam argument is the address of
    a character string descriptor pointing to this name string.

    The device name string can be either a physical device name
    or a logical name. If the first character in the string is an
    underscore (_),  the string is considered a physical device name;
    otherwise, the string is considered a logical name and logical
    name translation is performed until either a physical device name
    is found or the system default number of translations has been
    performed.

    If the device name string contains a colon (:),  the colon and
    the characters that follow it are ignored.

    To identify a device to $DEVICE_PATH_SCAN, you can specify either
    the chan or devnam argument, but you should not specify both. If
    both arguments are specified, the chan argument is used.

    If you specify neither chan nor devnam, $DEVICE_PATH_SCAN uses a
    default value of 0 for chan.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying which information about the device is to be
    returned. The itmlst argument is the address of a list of item
    descriptors, each of which describes an item of information. The
    list of item descriptors is terminated by a longword of 0.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

 contxt

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Value used to indicate the current position of a $DEVICE_PATH_
    SCAN search. The contxt argument is the address of the longword
    that receives this information. On the initial call, the longword
    should contain 0.

 nullarg

    OpenVMS usage:null_arg
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Placeholding argument Reserved to VSI.

98  –  $DEVICE SCAN

    Returns the names of all devices that match a specified set of
    search criteria.

    Format

      SYS$DEVICE_SCAN  return_devnam ,retlen ,[search_devnam]

                       ,[itmlst] ,[contxt]

    C Prototype

      int sys$device_scan  (void *return_devnam, unsigned short

                           int *retlen, void *search_devnam, void

                           *itmlst, struct _generic_64 *contxt);

98.1  –  Arguments

 return_devnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    Buffer to receive the device name. The return_devnam argument is
    the address of a character string descriptor pointing to a buffer
    into which $DEVICE_SCAN writes the name of the first or next
    device that matches the specified search criteria. The maximum
    size of any device name is 64 bytes.

 retlen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by reference
    Length of the device name string returned by $DEVICE_SCAN. The
    retlen argument is the address of a word into which $DEVICE_SCAN
    writes the length of the device name string.

 search_devnam

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the device for which $DEVICE_SCAN is to search. The
    search_devnam argument accepts the standard wildcard characters,
    the asterisk (*), which matches any sequence of characters, and
    the percent sign (%), which matches any one character. If the
    search_devnam argument does not include a wildcard character,
    an exact match is used for comparison. For example, to match all
    unit 0 DU devices on any controller, specify *DU%0. This string
    is compared to the most complete device name (DVI$_ALLDEVNAM).
    Only uppercase characters are accepted.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword_unsigned
    access:       read only
    mechanism:    by reference
    Item list specifying search criteria used to identify the device
    names for return by $DEVICE_SCAN. The itmlst argument is the
    address of a list of item descriptors, each of which describes
    one search criterion. The list of item descriptors is terminated
    by a longword of 0.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

 contxt

    OpenVMS usage:quadword_unsigned
    type:         quadword (unsigned)
    access:       modify
    mechanism:    by reference
    Value used to indicate the current position of a $DEVICE_SCAN
    search. The contxt argument is the address of the quadword that
    receives this information. On the initial call, the quadword
    should contain 0.

99  –  $DGBLSC

    Marks an existing permanent global section for deletion. The
    actual deletion of the global section takes place when all
    processes that have mapped the global section have deleted the
    mapped pages.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$DGBLSC  [flags] ,gsdnam ,[ident]

    C Prototype

      int sys$dgblsc  (unsigned int flags, void *gsdnam, struct

                      _secid *ident);

99.1  –  Arguments

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Mask indicating global section characteristics. The flags
    argument is a longword value. A value of 0 (the default)
    specifies a group global section; a value of SEC$M_SYSGBL
    specifies a system global section; a value of SEC$M_SHMGS on
    an OpenVMS Galaxy system creates a shared-memory global section.

 gsdnam

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section to be deleted. The gsdnam argument
    is the address of a character string descriptor pointing to this
    name string.

    For group global sections, the operating system interprets the
    group UIC as part of the global section name; thus, the names of
    global sections are unique to UIC groups.

    You can specify any name from 1 to 43 characters. All processes
    mapping to the same global section must specify the same name.
    Note that the name is case sensitive.

    Use of characters valid in logical names is strongly encouraged.
    Valid values include alphanumeric characters, the dollar sign
    ($), and the underscore (_). If the name string begins with an
    underscore (_), the underscore is stripped and the resultant
    string is considered to be the actual name. Use of the colon (:)
    is not permitted.

    Names are first subject to a logical name translation, after
    the application of the prefix GBL$ to the name. If the result
    translates, it is used as the name of the section. If the
    resulting name does not translate, the name specified by the
    caller is used as the name of the section.

    Additional information on logical name translations and
    on section name processing is available in the VSI OpenVMS
    Programming Concepts Manual.

 ident

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of the global
    section to be deleted and the matching criteria to be applied.
    The ident argument is the 32- or 64-bit address of a quadword
    structure containing three fields.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. Values
    for these fields can be assigned by installation convention to
    differentiate versions of global sections. If you specify no
    version number when creating a section, processes that specify a
    version number when mapping cannot access the global section.

    The first longword specifies, in its low-order 3 bits, the
    matching criteria. The valid values, the symbolic names by
    which they can be specified, and their meanings are listed in
    the following table:

    Value Name          Match Criteria

    0     SEC$K_MATALL  Match all versions of the section.
    1     SEC$K_MATEQU  Match only if major and minor identifications
                        match.
    2     SEC$K_MATLEQ  Match if the major identifications are
                        equal and the minor identification of the
                        mapper is less than or equal to the minor
                        identification of the global section.

    If you specify no address or specify it as 0 (the default), the
    version number and match control fields default to 0.

100  –  $DISCONNECT

    The Disconnect service breaks the connection between a RAB and a
    FAB, thereby terminating a record stream. All system resources,
    such as I/O buffers and data structure space, are deallocated.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

101  –  $DISMOU

    Dismounts a mounted volume or volume sets.

    Format

      SYS$DISMOU  devnam ,[flags]

    C Prototype

      int sys$dismou  (void *devnam, unsigned int flags);

101.1  –  Arguments

 devnam

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Device name of the device to be dismounted. The devnam argument
    is the address of a character string descriptor pointing to
    the device name string. The string can be either a physical
    device name or a logical name. If it is a logical name, it must
    translate to a physical device name.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    A longword bit vector specifying options for the dismount
    operation. The flags argument is a longword bit vector wherein
    a bit, when set, selects the corresponding option. Each bit has a
    symbolic name; these names are defined by the $DMTDEF macro.

    The flags and their meanings are listed in the following table:

    Flag                Meaning

    DMT$M_ABORT         The volume is to be dismounted even if
                        the caller did not mount the volume. If
                        the volume was mounted with MNT$M_SHARE
                        specified, $DISMOU dismounts the volume for
                        all of the users who mounted it.

                        To specify DMT$M_ABORT, the caller must: (1)
                        have GRPNAM privilege for a group volume,
                        (2)  have SYSNAM privilege for a system
                        volume, or (3)  either own the volume or have
                        VOLPRO privilege.

    DMT$M_CLUSTER       The volume is to be dismounted clusterwide,
                        that is, from all nodes in the OpenVMS
                        Cluster system. $DISMOU dismounts the volume
                        from the caller's node first and then from
                        every other node in the existing cluster.

                        DMT$M_CLUSTER dismounts only system or
                        group volumes. To dismount a group volume
                        clusterwide, the caller must have GRPNAM
                        privilege. To dismount a system volume
                        clusterwide, the caller must have SYSNAM
                        privilege.

                        DMT$M_CLUSTER has no effect if the system
                        is not a member of a cluster. DMT$M_CLUSTER
                        applies only to disks.

    DMT$M_FORCE         If connectivity to a device has been lost and
                        the shadow set is in mount verification, this
                        flag causes a named shadow set member to be
                        immediately expelled from the shadow set.

    DMT$M_MINICOPY_     $DISMOU takes place, regardless of whether
    OPTIONAL            minicopy is enabled on the disk.

    DMT$M_MINICOPY_     $DISMOU fails if minicopy has not been
    REQUIRED            enabled on the disk.

    DMT$M_NOUNLOAD      Specifies that the volume is not to be
                        physically unloaded after the dismount. If
                        both the DMT$M_UNLOAD and DMT$M_NOUNLOAD
                        flags are specified, the DMT$M_NOUNLOAD flag
                        is ignored. If neither flag is specified,
                        the volume is physically unloaded, unless
                        the DMT$M_NOUNLOAD flag was specified on
                        the $MOUNT system service or the /NOUNLOAD
                        qualifier was specified on the MOUNT command
                        when the volume was mounted.

    DMT$M_OVR_CHECKS    Specifies that the volume should be
                        dismounted without checking for open files,
                        spooled devices, installed images, or
                        installed swap and page files.

    DMT$M_UNIT          The specified device, rather than the entire
                        volume set, is dismounted.

    DMT$M_UNLOAD        Specifies that the volume is to be physically
                        unloaded after the dismount. If both the
                        DMT$M_UNLOAD and DMT$M_NOUNLOAD flags
                        are specified, the DMT$M_NOUNLOAD flag
                        is ignored. If neither flag is specified,
                        the volume is physically unloaded, unless
                        the DMT$M_NOUNLOAD flag was specified on
                        the $MOUNT system service or the /NOUNLOAD
                        qualifier was specified on the MOUNT command
                        when the volume was mounted.

102  –  $DISPLAY

    The Display service retrieves file attribute information about
    a file and places this information in fields in the FAB, in XABs
    chained to the FAB, and in a NAM block (if one is requested).

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

103  –  $DISPLAY PROXY

    Returns information about one or more existing proxies.

    Format

      SYS$DISPLAY_PROXY  rem_node ,rem_user ,buffer_sizes ,proxy_node

                         ,proxy_user ,default_user ,local_users

                         ,flags ,[context]

    C Prototype

      int sys$display_proxy  (void *rem_node, void *rem_user,

                             unsigned short int buffer_sizes [4],

                             void *proxy_node, void *proxy_user,

                             void *default_user, unsigned int

                             *local_users, unsigned int flags,

                             unsigned int *context);

103.1  –  Arguments

 rem_node

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Remote node name of the proxy about which information is being
    requested. The rem_node argument is the address of a character-
    string descriptor pointing to the remote node name string.

    A remote node name consists of 1 to 1024 characters. No specific
    characters, format, or case are required for a remote node
    name string. All node names are converted to their DECnet full
    name unless the PRX$M_BYPASS_EXPAND flag is set with the flags
    argument.

    Asterisk (*)  and percent sign (%) wildcards are allowed for the
    remote node specification. If you specify wildcards for the rem_
    node argument, the server searches the entire proxy database for
    matches to the remote node and remote user you specified. If a
    match is found, information about the matched proxy is returned.

    For additional details on retrieving information about multiple
    proxies, see the VSI OpenVMS System Services Reference Manual.

 rem_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Remote user name of the proxy about which information is being
    requested. The rem_user argument is the address of a character-
    string descriptor pointing to the user name string.

    A remote user name consists of 1 to 32 alphanumeric characters,
    including dollar signs ($),  underscores (_), and brackets
    ([ ]).  Any lowercase characters specified are automatically
    converted to uppercase.

    The rem_user argument can be specified in user identification
    code (UIC) format ([group, member]).  Brackets are allowed only
    if the remote user name string specifies a UIC. Group and member
    are character-string representations of octal numbers with no
    leading zeros.

    Asterisk (*)  and percent sign (%) wildcards are allowed for the
    remote user specification. If you specify wildcards for the rem_
    user argument, the server searches the entire proxy database for
    matches to the remote node and remote user you specified. If a
    match is found, information about the matched proxy is returned.
    See the Description section for information about retrieving
    information about multiple proxies.

 buffer_sizes

    OpenVMS usage:return length block
    type:         array of 4 words (unsigned)
    access:       write only
    mechanism:    by reference
    Array of return lengths for various input buffers.

    To view the array diagram and buffer_sizes fields table, see the
    VSI OpenVMS System Services Reference Manual.

 proxy_node

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    Node name of a proxy matching the remote node name specified by
    the rem_node argument and the remote user name specified by the
    rem_user argument. The proxy_node argument is the address of a
    character-string descriptor pointing to a buffer to receive the
    proxy node name.

    The descriptor's buffer must be 1024 bytes long to receive a node
    name. The length of the returned node name is specified by the
    proxy node length field returned in the buffer specified by the
    buffer_sizes argument.

 proxy_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    User name of a proxy matching the remote node name specified by
    the rem_node argument and the remote user name specified by the
    rem_user argument. The proxy_user argument is a character-string
    descriptor pointing to a buffer to receive the remote user name
    of a proxy.

    The descriptor's buffer must be 32 bytes long to receive a user
    name. The length of the returned user name is specified by the
    proxy user length field returned in the buffer specified by the
    buffer_sizes argument.

 default_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    Default user of a proxy matching the node name specified by the
    rem_node argument and the remote user name specified by the rem_
    user argument. The default_user argument is the address of a
    character-string descriptor pointing to a buffer to receive the
    default user name.

    The descriptor's buffer must be 32 bytes long to receive a user
    name. The length of the returned user name is specified in the
    default user length field in the buffer specified by the buffer_
    sizes argument.

 local_users

    OpenVMS usage:buffer
    type:         array of 0 to 16 user name buffers
    access:       write only
    mechanism:    by reference
    Array of local user names associated with a proxy matching the
    remote node name specified by the rem_node argument and the
    remote user name specified by the rem_user argument. The local_
    users argument is the address of a buffer to receive an array of
    local user names.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the array diagram and local_users fields table.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Functional specification for the service and type of user the
    local_user argument represents. The flags argument is a longword
    bit mask wherein each bit corresponds to an option.

    Each flag option has a symbolic name. The $PRXDEF macro defines
    the following symbolic names:

    Symbolic Name      Description

    PRX$M_BYPASS_      The service should not convert the node name
    EXPAND             specified in the rem_node argument to its
                       corresponding DECnet full name. If this flag
                       is set, it is the caller's responsibility to
                       ensure that the fully expanded node name is
                       passed into the service.

    PRX$M_EXACT        The service should match exactly the remote
                       node and remote user and ignore wildcards.

 context

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Context information to keep between related calls to the
    $DISPLAY_PROXY service. The context argument is the address of
    a longword to receive a context from the $DISPLAY_PROXY service.

    The initial value contained in the longword pointed to by the
    context argument must be 0. The contents of the unsigned longword
    must not be changed after the service has set its value. If the
    contents of the buffer pointed to by the context argument are
    changed between calls to the $DISPLAY_PROXY service, the service
    will return SS$_BADCONTEXT. If the contents of the context
    argument are changed between calls to the $DISPLAY_PROXY service,
    you can change the value of the context argument back to 0 to
    start the search over again.

    Contexts become invalid after one-half hour of non-use. This
    means that if you call the $DISPLAY_PROXY service with a wildcard
    rem_node or rem_user, and do not call the service to get the
    next matching record within one-half hour, the context becomes
    invalid. If the context has become invalid, you must start your
    search of the proxy database over from its beginning by resetting
    the context to 0.

104  –  $DLCEFC

    Marks a permanent common event flag cluster for deletion.

    Format

      SYS$DLCEFC  name

    C Prototype

      int sys$dlcefc  (void *name);

104.1  –  Argument

 name

    OpenVMS usage:ef_cluster_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the common event flag cluster to be deleted. The name
    argument is the address of a character string descriptor pointing
    to the name of the cluster.

    The names of event flag clusters are unique to UIC groups, and
    the UIC group number of the calling process is part of the name.

105  –  $END BRANCH

    Removes a branch from a transaction and returns the outcome of
    the transaction.

    Format

      SYS$END_BRANCH  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,tid

                      ,bid

    C Prototype

      int sys$end_branch  (unsigned int efn, unsigned int

                          flags, struct _iosb *iosb, void

                          (*astadr)(__unknown_params), int astprm,

                          unsigned int tid [4], unsigned int bid

                          [4]);

105.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag 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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for these option
    flags, described in $END_BRANCH Option Flags. All undefined bits
    must be 0. If this argument is omitted, no flags are used.

    Table SYS-14 $END_BRANCH Option Flags

    Flag Name      Description

    DDTM$M_SYNC    Specifies successful synchronous completion by
                   returning SS$_SYNCH. When SS$_SYNCH is returned,
                   the AST routine is not called, the event flag is
                   not set, and the I/O status block is not filled
                   in.
    DDTM$M_        Indicates that the service should return to the
    NOWAIT         caller without waiting for final cleanup. Note
                   that $END_BRANCHW with the DDTM$M_NOWAIT flag
                   set is not equivalent to $END_BRANCH. The latter
                   returns when the operation has been queued. The
                   former does not return until the operation has
                   been initiated. The full range of status values
                   may be returned from a nowait call.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    The I/O status block in which the following information is
    returned:

    o  The completion status of the service. This is returned as a
       condition value. See the Condition Values Returned section for
       more information.

    o  The outcome of the transaction. If the service completes
       successfully, the outcome of the transaction is commit. If
       it returns SS$_ABORT, the outcome of the transaction is abort.

    o  An abort reason code that gives one reason why the transaction
       aborted, if the completion status of the service is SS$_ABORT.
       The $DDTMMSGDEF macro defines symbolic names for these abort
       reason codes. See $ACK_EVENT for a list of the codes that are
       currently defined.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the I/O status block diagram.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    The AST routine 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 $END_BRANCH
    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 the transaction from which the branch is
    to be removed.

 bid

    OpenVMS usage:branch_id
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    The identifier (BID) of the branch to be removed from the
    transaction.

106  –  $END BRANCHW

    Removes a branch from a transaction and returns the outcome of
    the transaction. $END_BRANCHW always waits for the request to
    complete before returning to the caller. Other than this, it is
    identical to $END_BRANCH.

    Format

      SYS$END_BRANCHW  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,tid

                       ,bid

    C Prototype

      int sys$end_branchw  (unsigned int efn, unsigned int

                           flags, struct _iosb *iosb, void

                           (*astadr)(__unknown_params), int astprm,

                           unsigned int tid [4], unsigned int bid

                           [4]);

107  –  $END TRANS

    Ends a transaction by attempting to commit it, and returns the
    outcome of the transaction.

    Format

      SYS$END_TRANS  [efn] ,[flags] ,iosb [,[astadr] ,[astprm]

                     ,[tid]]

    C Prototype

      int sys$end_trans  (unsigned int efn, unsigned int flags,

                         struct _iosb *iosb,...);

107.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for these option
    flags, which are defined in $END_TRANS Option Flags.

    All undefined bits must be 0. If this argument is omitted, no
    flag is set.

    Table SYS-15 $END_TRANS Option Flags

    Flag           Description

    DDTM$M_SYNC    Set this flag to specify that successful
                   synchronous completion is to be indicated by
                   returning SS$_SYNCH. When SS$_SYNCH is returned,
                   the asynchronous system trap (AST) routine is not
                   called, the event flag is not set, and the I/O
                   status block is not filled in.
    DDTM$M_        Indicates that the service should return to the
    NOWAIT         caller without waiting for final cleanup. Note
                   that $END_TRANSW with the DDTM$M_NOWAIT flag set
                   is not equivalent to $END_TRANS. The former does
                   not return until the operation has been initiated,
                   while $END_TRANS returns when the operation has
                   been queued.

                   The full range of status values may be returned
                   from a nowait call.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block in which the following information is returned
    contains:

    o  The completion status of the service. This is returned as a
       condition value.

    o  The outcome of the transaction. If the service returns SS$_
       NORMAL, the outcome of the transaction is commit. If the
       service returns SS$_ABORT, the outcome of the transaction
       is abort.

    o  An abort reason code that gives one reason why the transaction
       aborted, if the completion status of the service is SS$_ABORT.

    The $DDTMMSGDEF macro defines symbolic names for these abort
    reason codes, which are described in Abort Reason Codes:

    Table SYS-16 Abort Reason Codes

    Symbolic Name        Description

    DDTM$_ABORTED        The application aborted the transaction.
    DDTM$_COMM_FAIL      A communications link failed.
    DDTM$_INTEGRITY      A resource manager integrity constraint
                         check failed.
    DDTM$_LOG_FAIL       A write operation to the transaction log
                         failed.
    DDTM$_ORPHAN_        Unauthorized branch caused failure.
    BRANCH
    DDTM$_PART_SERIAL    A resource manager serialization check
                         failed.
    DDTM$_PART_TIMEOUT   The timeout specified by a resource manager
                         expired.
    DDTM$_SEG_FAIL       A process or image terminated.
    DDTM$_               A DECdtm transaction manager serialization
    SERIALIZATION        check failed.
    DDTM$_SYNC_FAIL      The transaction was not globally
                         synchronized (an authorized branch had not
                         been added).
    DDTM$_TIMEOUT        The timeout specified on $START_TRANS
                         expired.
    DDTM$_UNKNOWN        The reason is unknown.
    DDTM$_VETOED         A resource manager was unable to commit the
                         transaction.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    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
    AST routine that is executed when the service completes if SS$_
    NORMAL is returned in R0. The astadr argument is the address of
    this routine. The routine is executed in the access mode of the
    caller.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter that is passed to the AST routine specified by the
    astadr argument.

 tid

    OpenVMS usage:trans_id
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    Identifier (TID) of the transaction to be ended.

    If this argument is omitted, $END_TRANS ends the default
    transaction of the calling process.

108  –  $END TRANSW

    Ends a transaction by attempting to commit it, and returns the
    outcome of the transaction.

    $END_TRANSW always waits for the request to complete before
    returning to the caller. Other than this, it is identical to
    $END_TRANS.

    Format

      SYS$END_TRANSW  [efn] ,[flags] ,iosb [,[astadr] ,[astprm]

                      ,[tid]]

    C Prototype

      int sys$end_transw  (unsigned int efn, unsigned int flags,

                          struct _iosb *iosb,...);

109  –  $ENQ

    Queues a new lock or lock conversion on a resource.

    The $ENQ, $ENQW, $DEQ (Dequeue Lock Request), and $GETLKI (Get
    Lock Information) services together provide the user interface to
    the Lock Management facility.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    For additional information about system service completion, see
    the Synchronize ($SYNCH) service.

    Format

      SYS$ENQ  [efn] ,lkmode ,lksb ,[flags] ,[resnam] ,[parid]

               ,[astadr] ,[astprm] ,[blkast] ,[acmode] ,[rsdm_id]

               ,[nullarg]

    C Prototype

      int sys$enq  (unsigned int efn, unsigned int lkmode,

                   struct _lksb *lksb, unsigned int flags,

                   void *resnam, unsigned int parid, void

                   (*astadr)(__unknown_params), unsigned int acmode,

                   unsigned int rsdm_id,...);

109.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when the request has been
    granted or canceled. Cancellation occurs if you use $DEQ with the
    cancel modifier or if the waiting request is chosen to break a
    deadlock. The efn argument is a longword containing this number;
    however, $ENQ uses only the low-order byte.

    Upon request initiation, $ENQ clears the specified event flag
    (or event flag 0 if efn was not specified). Then, when the lock
    request is granted, the specified event flag (or event flag 0)
    is set unless you specified the LCK$M_SYNCSTS flag in the flags
    argument.

 lkmode

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Lock mode requested. The lkmode argument is a longword specifying
    this lock mode.

    Each lock mode has a symbolic name. The $LCKDEF macro defines
    these symbolic names. The following table gives the symbolic name
    and description for each lock mode:

    Lock Mode     Description

    LCK$K_NLMODE  Null mode. This mode grants no access to the
                  resource but serves as a placeholder and indicator
                  of future interest in the resource. The null mode
                  does not inhibit locking at other lock modes;
                  further, it prevents the deletion of the resource
                  and lock value block, which would otherwise occur
                  if the locks held at the other lock modes were
                  dequeued.

    LCK$K_CRMODE  Concurrent read. This mode grants the caller read
                  access to the resource while permitting write
                  access to the resource by other users. This mode is
                  used to read data from a resource in an unprotected
                  manner, because other users can modify that data as
                  it is being read. This mode is typically used when
                  additional locking is being performed at a finer
                  granularity with sublocks.

    LCK$K_CWMODE  Concurrent write. This mode grants the caller
                  write access to the resource while permitting write
                  access to the resource by other users. This mode is
                  used to write data to a resource in an unprotected
                  fashion, because other users can simultaneously
                  write data to the resource. This mode is typically
                  used when additional locking is being performed at
                  a finer granularity with sublocks.

    LCK$K_PRMODE  Protected read. This mode grants the caller read
                  access to the resource while permitting only read
                  access to the resource by other users. Write access
                  is not allowed. This is the traditional share lock.

    LCK$K_PWMODE  Protected write. This mode grants the caller write
                  access to the resource while permitting only read
                  access to the resource by other users; the other
                  users must have specified concurrent read mode
                  access. No other writers are allowed access to the
                  resource. This is the traditional update lock.

    LCK$K_EXMODE  Exclusive. The exclusive mode grants the caller
                  write access to the resource and allows no access
                  to the resource by other users. This is the
                  traditional exclusive lock.

    The following table shows the compatibility of lock modes:

    Table SYS-17 Compatibility of Lock Modes

    Mode of                Mode of Currently Granted Locks

    Requested

    Lock       NL    CR    CW    PR     PW    EX

    NL         Yes   Yes   Yes   Yes    Yes   Yes
    CR         Yes   Yes   Yes   Yes    Yes   No
    CW         Yes   Yes   Yes   No     No    No
    PR         Yes   Yes   No    Yes    No    No
    PW         Yes   Yes   No    No     No    No
    EX         Yes   No    No    No     No    No
    __________________________________________________________________
    Key to Lock Modes:

     NL-Null
     CR-Concurrent read
     CW-Concurrent write
     PR-Protected read
     PW-Protected write
     EX-Exclusive

 lksb

    OpenVMS usage:lock_status_block
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Lock status block in which $ENQ writes the final completion
    status of the operation. The lksb argument is the 32- or 64-bit
    address of the 8-byte lock status block.

    The lock status block can optionally contain a 16-byte or a 64-
    byte lock value block. The initial value of the lock value block
    is zero (0).

    o  When you specify the LCK$M_VALBLK flag in the flags argument,
       the lock status block contains a lock value block. In this
       case, the 16-byte lock value block appears at the beginning
       of the first byte following the eighth byte of the lock status
       block, bringing the total length of the lock status block to
       24 bytes.

    o  When you specify the LCK$M_XVALBLK flag together with the
       LCK$M_VALBLK flag in the flags argument, the lock status
       block contains an extended lock value block. In this case,
       the 64-byte lock value block appears at the beginning of
       the first byte following the eighth byte of the lock status
       block, bringing the total length of the lock status block to
       72 bytes.

       The LCK$M_XVALBLK flag is valid only on Alpha and Integrity
       server systems.

    To view the lock status block format diagram and status block
    fields table, see the VSI OpenVMS System Services Reference
    Manual.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flags specifying options for the $ENQ operation. The flags
    argument is a longword bit mask that is the logical OR of each
    bit set, where each bit corresponds to an option.

    The $LCKDEF macro defines a symbolic name for each flag bit.

    To view the table describing each flag, see the VSI OpenVMS System
    Services Reference Manual.

 resnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the resource to be locked by this lock. The resnam
    argument is the 32- or 64-bit address of a character string
    descriptor pointing to this name. The name string can be from
    1 to 31 bytes in length.

    If you are creating a new lock, the resnam argument should be
    specified because the default value for the resnam argument
    produces an error when it is used to create a lock. The resnam
    argument is ignored for lock conversions.

 parid

    OpenVMS usage:lock_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Lock identification of the parent lock. The parid argument is a
    longword containing this identification value.

    If you do not specify this argument or specify it as 0, $ENQ
    assumes that the lock does not have a parent lock. This argument
    is optional for new locks and is ignored for lock conversions.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference
    AST service routine to be executed when the lock is either
    granted or converted. The astadr argument is the 32- or 64-bit
    address of this routine. The AST is also delivered when the lock
    or conversion request is canceled. Cancellation occurs if you use
    $DEQ with the cancel modifier or if the waiting request is chosen
    to break a deadlock.

    If you specify the astadr argument, the AST routine executes at
    the same access mode as the caller of $ENQ.

 astprm

    OpenVMS usage:user_arg
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST routine specified by the
    astadr argument. The astprm argument specifies this quadword
    parameter.

 blkast

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference
    Blocking AST routine to be called whenever this lock is granted
    and is blocking any other lock requests. The blkast argument
    is the 32- or 64-bit address of this routine. Locks that are
    converting to a new mode, but that are not yet granted in the new
    mode, do not receive blocking ASTs.

    You can pass a parameter to this routine by using the astprm
    argument.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be associated with the resource name. The acmode
    argument indicates the least privileged access mode from which
    locks can be queued on the resource.

    This argument does not affect the access mode associated with the
    lock or its blocking and completion ASTs. The acmode argument is
    a longword containing the access mode. The $PSLDEF macro defines
    the following symbols for the four access modes:

    Symbol        Access Mode

    PSL$C_KERNEL  Kernel
    PSL$C_EXEC    Executive
    PSL$C_SUPER   Supervisor
    PSL$C_USER    User

    The $ENQ service associates an access mode with the lock in the
    following way:

    o  If you specified a parent lock (with the parid argument),
       $ENQ uses the access mode associated with the parent lock and
       ignores both the acmode argument and the caller's access mode.

    o  If the lock has no parent lock (you did not specify the parid
       argument or specified it as 0), $ENQ uses the least privileged
       of the caller's access mode and the access mode specified
       by the acmode argument. If you do not specify the acmode
       argument, $ENQ uses the caller's access mode.

 rsdm_id

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Resource domain identification. The rsdm_id argument is a
    longword specifying the resource domain association through
    which a new lock is to be taken. This argument is ignored for
    lock conversions and sublocks (parid is nonzero). Valid resource
    domain identifiers are returned from the $SET_RESOURCE_DOMAIN
    service, or by the constants RSDM$K_SYSTEM_RSDM_ID or RSDM$K_
    PROCESS_RSDM_ID, which are defined by the $RSDMDEF macro in
    STARLET.

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument reserved by VSI.

110  –  $ENQW

    Queues a lock on a resource. The $ENQW service completes
    synchronously; that is, it returns to the caller when the
    lock has been either granted or converted. For asynchronous
    completion, use the Enqueue Lock Request ($ENQ) service; $ENQ
    returns to the caller after queuing the lock request, without
    waiting for the lock to be either granted or converted. In
    all other respects, $ENQW is identical to $ENQ. See the $ENQ
    description for all other information about the $ENQW service.

    The $ENQ, $ENQW, $DEQ, and $GETLKI services together provide the
    user interface to the Lock Management facility.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ENQW  [efn] ,lkmode ,lksb ,[flags] ,[resnam] ,[parid]

                ,[astadr] ,[astprm] ,[blkast] ,[acmode] ,[rsdm_id]

    C Prototype

      int sys$enqw  (unsigned int efn, unsigned int lkmode,

                    struct _lksb *lksb, unsigned int flags,

                    void *resnam, unsigned int parid, void

                    (*astadr)(__unknown_params), unsigned __int64

                    astprm, void (*blkast)(__unknown_params),

                    unsigned int acmode, unsigned int rsdm_id,...);

111  –  $ENTER

    The Enter service inserts a file name in a directory.

    For additional information about this service, see to the OpenVMS
    Record Management Services Reference Manual.

112  –  $ERAPAT

    Generates a security erase pattern.

    Format

      SYS$ERAPAT  [type] ,[count] ,[patadr]

    C Prototype

      int sys$erapat  (int type, unsigned int count, unsigned int

                      *patadr);

112.1  –  Arguments

 type

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Type of storage to be written over with the erase pattern. The
    type argument is a longword containing the type of storage.

    The three storage types, together with their symbolic names,
    are defined by the $ERADEF macro and are listed in the following
    table:

    Storage Type   Symbolic Name

    Main memory    ERA$K_MEMORY
    Disk           ERA$K_DISK
    Tape           ERA$K_TAPE

 count

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of times that $ERAPAT has been called in a single security
    erase operation. The count argument is a longword containing the
    iteration count.

    You should call the $ERAPAT service initially with the count
    argument set to 1, the second time with the count argument set to
    2, and so on, until the status code SS$_NOTRAN is returned.

 patadr

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Security erase pattern to be written. The patadr argument is the
    address of a longword into which the security erase pattern is to
    be written.

113  –  $ERASE

    The Erase service deletes a disk file and removes the file's
    directory entry specified in the path to the file. If additional
    directory entries have been created for this file by the Enter
    service, you must use the Remove service to delete them.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

114  –  $EXIT

    Initiates image rundown when the current image in a process
    completes execution. Control normally returns to the command
    interpreter.

    Format

      SYS$EXIT  [code]

    C Prototype

      int sys$exit  (unsigned int code);

114.1  –  Argument

 code

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Longword value to be saved in the process header as the
    completion status of the current image. If you do not specify
    this argument in a macro call, a value of 1 is passed as the
    completion code for VAX MACRO and VAX BLISS-32, and a value of
    0 is passed for other languages. You can test this value at the
    command level to provide conditional command execution.

115  –  $EXPREG

    Adds a specified number of new virtual pages to a process's
    program region or control region for the execution of the current
    image. Expansion occurs at the current end of that region's
    virtual address space.

    Format

      SYS$EXPREG  pagcnt ,[retadr] ,[acmode] ,[region]

    C Prototype

      int sys$expreg  (unsigned int pagcnt, struct _va_range *retadr,

                      unsigned int acmode, char region);

115.1  –  Arguments

 pagcnt

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of pagelets to add to the current end of the program
    or control region. The pagcnt argument is a longword value
    containing this number.

    On Alpha and Integrity server systems, the specified value is
    rounded up to an even multiple of the CPU-specific page size.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Starting and ending process virtual addresses of the pages that
    $EXPREG has actually added. The retadr argument is the address of
    a 2-longword array containing, in order, the starting and ending
    process virtual addresses.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be associated with the newly added pages. The
    acmode argument is a longword containing the access mode.

    The most privileged access mode used is the access mode of the
    caller.

    The newly added pages are given the following protection:
    (1)  read and write access for access modes equal to or more
    privileged than the access mode used in the call, and (2)  no
    access for access modes less privileged than that used in the
    call.

 region

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number specifying which program region is to be expanded. The
    region argument is a longword value. A value of 0 (the default)
    specifies that the program region (P0 region) is to be expanded.
    A value of 1 specifies that the control region (P1 region) is to
    be expanded.

116  –  $EXPREG 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, adds a specified number of
    demand-zero allocation pages to a process's virtual address space
    for the execution of the current image. Expansion occurs at the
    next free available address within the specified region.

    This service accepts 64-bit addresses.

    Format

      SYS$EXPREG_64  region_id_64 ,length_64 ,acmode ,flags

                     ,return_va_64 ,return_length_64

    C Prototype

      int sys$expreg_64  (struct _generic_64 *region_id_64, unsigned

                         __int64 length_64, unsigned int acmode,

                         unsigned int flags, void *(*(return_va_64)),

                         unsigned __int64 *return_length_64);

116.1  –  Arguments

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the virtual address range to be
    expanded. The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF
    macro in STARLET.MLB define a symbolic name for each of the three
    default regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be created. The length
    specified must be a multiple of CPU-specific pages.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $EXPREG_64. The access
    mode determines the owner mode of the pages as well as the read
    and write protection on the pages. The acmode argument is a
    longword containing the access mode. The $PSLDEF macro defines
    symbols for the four access modes.

    The $EXPREG_64 service uses whichever of the following two access
    modes is least privileged:

    o  The access mode specified by the acmode argument.

    o  The access mode of the caller. The protection of the pages
       is read/write for the resultant access mode and those more
       privileged.

    Address space cannot be created within a region that has a create
    mode associated with it that is more privileged than the caller's
    mode. The condition value SS$_IVACMODE is returned if the caller
    is less privileged than the create mode for the region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask controlling the characteristics of the demand-zero
    pages created. The flags argument is a longword bit vector in
    which each bit corresponds to a flag. The $VADEF macro and the
    VADEF.H file define a symbolic name for each flag. You construct
    the flags argument by performing a logical OR operation on the
    symbol names for all desired flags.

    All bits in the flags argument are reserved for future use by VSI
    and should be specified as 0. The condition value SS$_IVVAFLG is
    returned if any bits are set.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of a created virtual address
    range. The return_va_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword into which the service
    returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length in bytes of the virtual
    address range created.

117  –  $EXTEND

    The Extend service increases the amount of space allocated to
    a disk file. This service is most useful for extending relative
    files and indexed files when you are doing block I/O transfers
    using the Write service.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

118  –  $FAO

    Converts a binary value into an ASCII character string in
    decimal, hexadecimal, or octal notation; returns the character
    string in an output string; and inserts variable character-string
    data into an output string.

    The Formatted ASCII Output with List Parameter ($FAOL) service
    provides an alternate method for specifying input parameters when
    calling the $FAO system service.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$FAO  ctrstr ,[outlen] ,outbuf ,[p1]...[pn]

      SYS$FAOL  ctrstr ,[outlen] ,outbuf ,[prmlst]

    C Prototype

      int sys$fao  (void *ctrstr, unsigned short int *outlen, void

                   *outbuf,...);

      int sys$faol  (void *ctrstr, unsigned short int *outlen, void

                    *outbuf, void *prmlst);

118.1  –  Arguments

 ctrstr

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Control string passed to $FAO that contains the text to be output
    together with one or more $FAO directives. $FAO directives are
    used to specify repeat counts or the output field length, or
    both, and they are preceded by an exclamation point (!).  The
    ctrstr argument is the 32- or 64-bit address of a character
    string descriptor pointing to the control string.

    There is no restriction on the length of the control string or
    on the number of $FAO directives it can contain; however, if an
    exclamation point must appear in the output string, it must be
    represented in the control string by a double exclamation point
    (!!).  A single exclamation point in the control string indicates
    to $FAO that the next characters are to be interpreted as FAO
    directives.

    When $FAO processes the control string, it writes to the output
    buffer each character that is not part of an $FAO directive.

    If the $FAO directive is valid, $FAO processes it. If the
    directive requires a parameter, $FAO processes the next
    consecutive parameter in the specified parameter list. If the
    $FAO directive is not valid, $FAO terminates and returns a
    condition value in R0.

    The $FAO service reads parameters from the argument list
    specified in the call; these arguments have the names p1, p2,
    p3, and so on, up to p17. Each argument specifies one parameter.
    Because $FAO accepts a maximum of 17 parameters in a single call,
    you must use $FAOL if the number of parameters exceeds 17. The
    $FAOL service accepts any number of parameters used with the
    prmlst argument.

 outlen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Length in bytes of the fully formatted output string returned by
    $FAO. The outlen argument is the 32- or 64-bit address of a word
    containing this value.

 outbuf

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Output buffer into which $FAO writes the fully formatted output
    string. The outbuf argument is the 32- or 64-bit address of a
    character string descriptor pointing to the output buffer. The
    maximum number of bytes written is limited to 64K.

 p1 to pn

    OpenVMS usage:varying_arg
    type:         quadword (signed)
    access:       read only
    mechanism:    by value
    $FAO directive parameters. The p1 argument is a quadword
    containing the parameter needed by the first $FAO directive
    encountered in the control string, the p2 argument is a quadword
    containing the parameter needed for the second $FAO directive,
    and so on for the remaining arguments up to p17. If an $FAO
    directive does not require a parameter, that $FAO directive is
    processed without reading a parameter from the argument list.

    Depending on the directive, a parameter can be a value to be
    converted, a 32- or 64-bit address of a string to be inserted
    into the output string, or a length or argument count. Each
    directive in the control string might require a corresponding
    parameter or parameters.

 prmlst

    OpenVMS usage:vector_longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    List of $FAO directive parameters to be passed to $FAOL. The
    prmlst argument is the 32- or 64-bit address of a list of
    longwords wherein each longword is a parameter. The $FAOL service
    processes these parameters sequentially as it encounters, in the
    control string, $FAO directives that require parameters.

    The parameter list can be a data structure that already exists in
    a program and from which certain values are to be extracted.

119  –  $FAOL 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, converts a binary value
    into an ASCII character string in decimal, hexadecimal, or octal
    notation; returns the character string in an output string; and
    inserts variable character-string data into an output string.

    $FAOL_64 interprets the parameter list as a list of quadwords
    rather than a list of longwords. In all other respects, $FAOL_64
    is identical to $FAOL. For all other information about the $FAOL_
    64 service, see the help for $FAO/$FAOL.

    This service accepts 64-bit addresses.

    Format

      SYS$FAOL_64  ctrstr_64 [,outlen_64 [,outbuf_64

                   [,quad_prmlst_64]]]

    C Prototype

      int sys$faol_64  (void *ctrstr_64, unsigned short int

                       *outlen_64, void *outbuf_64, void

                       *quad_prmlst_64);

119.1  –  Arguments

 ctrstr_64

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    The 32- or 64-bit address of the control string (64-bit or 32-bit
    string descriptor).

 outlen_64

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit address of the quadword that contains the
    output length, in bytes, of the fully formatted output string.

 outbuf_64

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    The 32- or 64-bit address of a character string descriptor that
    points to the output buffer into which $FAOL_64 writes the fully
    formatted output string.

 quad_prmlst_64

    OpenVMS usage:vector_quadword_unsigned
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit address of a quadword-aligned array of quadword
    FAO arguments.

120  –  $FILESCAN

    Searches a string for a file specification and parses the
    components of that file specification.

    Format

      SYS$FILESCAN  srcstr ,valuelst ,[fldflags] ,[auxout] ,[retlen]

    C Prototype

      int sys$filescan  (void *srcstr, void *valuelst, unsigned int

                        *fldflags, void *auxout, unsigned short int

                        *retlen);

120.1  –  Arguments

 srcstr

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    String to be searched for the file specification. The srcstr
    argument is the address of a descriptor pointing to this string.

 valuelst

    OpenVMS usage:item_list_2
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Item list specifying which components of the file specification
    are to be returned by $FILESCAN. The components are the full node
    specification, primary node name, primary node's access control,
    secondary node information, device, directory, file name, file
    type, and version number. The itmlst argument is the address of a
    list of item descriptors wherein each item descriptor specifies
    one component. The list of item descriptors is terminated by a
    longword of 0.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

 fldflags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Longword flag mask in which $FILESCAN sets a bit for each file
    specification component found in the input string. The fldflags
    argument is the address of this longword flag mask.

    The $FSCNDEF macro defines a symbolic name for each significant
    flag bit. The following table shows the file specification
    component that corresponds to the symbolic name of each flag
    bit:

    Symbolic Name    Corresponding Component

    FSCN$V_DEVICE    Device name
    FSCN$V_          Directory name
    DIRECTORY
    FSCN$V_NAME      File name
    FSCN$V_NODE      Node name
    FSCN$V_NODE_ACS  Access control string of primary node
    FSCN$V_NODE_     Primary (first) node name
    PRIMARY
    FSCN$V_NODE_     Secondary (additional) node information
    SECONDARY
    FSCN$V_ROOT      Root directory name string
    FSCN$V_TYPE      File type
    FSCN$V_VERSION   Version number

    The fldflags argument is optional. When you want to know which
    components of a file specification are present in a string but
    do not need to know the contents or length of these components,
    specify fldflags instead of valuelst.

 auxout

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    Auxiliary output buffer. The auxout argument is the address of a
    character-string descriptor pointing to the auxiliary buffer.

    When you specify an auxiliary output buffer, $FILESCAN copies
    the entire source string, with quotation information reduced and
    simplified for only the primary node, into the auxiliary output
    buffer.

    When the auxiliary output buffer is provided, all addresses
    returned in the item list point to locations in the auxiliary
    output buffer.

 retlen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by reference
    Length of the auxiliary buffer. The retlen argument is the
    address of a word into which $FILESCAN writes the length of the
    auxiliary buffer name string.

121  –  $FIND

    The Find service locates a specified record in a file and returns
    its record file address in the RAB$W_RFA field of the RAB. The
    Find service can be used with all file organizations.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

122  –  $FIND HELD

    Returns the identifiers held by a specified holder.

    Format

      SYS$FIND_HELD  holder ,[id] ,[attrib] ,[contxt]

    C Prototype

      int sys$find_held  (struct _generic_64 *holder, unsigned int

                         *id, unsigned int *attrib, unsigned int

                         *contxt);

122.1  –  Arguments

 holder

    OpenVMS usage:rights_holder
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Holder whose identifiers are to be found when $FIND_HELD
    completes execution. The holder argument is the address of a
    quadword data structure containing the holder identifier. This
    quadword data structure consists of a longword containing the
    holder UIC, followed by a longword containing the value 0.

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Identifier value found when $FIND_HELD completes execution.
    The id argument is the address of a longword containing the
    identifier value with which the holder is associated.

 attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Attributes associated with the holder returned in id when $FIND_
    HELD completes execution. The attrib argument is the address of a
    longword containing a bit mask specifying the attributes.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The symbols are defined
    in the system macro library ($KGBDEF). The following are the
    symbols for each bit position:

    Bit Position    Meaning When Set

    KGB$V_DYNAMIC   Allows holders of the identifier to remove it
                    from or add it to the process rights list by
                    using the DCL command SET RIGHTS_LIST.

    KGB$V_          Makes any access rights of the identifier
    NOACCESS        null and void. This attribute is intended as
                    a modifier for a resource identifier or the
                    Subsystem attribute.

    KGB$V_          Allows the holder to charge resources, such as
    RESOURCE        disk blocks, to the identifier.

    KGB$V_          Allows holders of the identifier to create and
    SUBSYSTEM       maintain protected subsystems by assigning the
                    Subsystem ACE to the application images in the
                    subsystem.

 contxt

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Context value used when repeatedly calling $FIND_HELD. The contxt
    argument is the address of a longword used while searching for
    all identifiers. The context value must be initialized to 0,
    and the resulting context of each call to $FIND_HELD must be
    presented to each subsequent call. After contxt is passed to
    $FIND_HELD, you must not modify its value.

123  –  $FIND HOLDER

    Returns the holder of a specified identifier.

    Format

      SYS$FIND_HOLDER  id ,[holder] ,[attrib] ,[contxt]

    C Prototype

      int sys$find_holder  (unsigned int id, struct _generic_64

                           *holder, unsigned int *attrib, unsigned

                           int *contxt);

123.1  –  Arguments

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Binary identifier value whose holders are found by $FIND_HOLDER.
    The id argument is a longword containing the binary identifier
    value.

 holder

    OpenVMS usage:rights_holder
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    Holder identifier returned when $FIND_HOLDER completes execution.
    The holder argument is the address of a quadword containing
    the holder identifier. The first longword contains the UIC of
    the holder with the high-order word containing the group number
    and the low-order word containing the member number. The second
    longword contains the value 0.

 attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Mask of attributes associated with the holder record specified
    by holder. The attrib argument is the address of a longword
    containing the attribute mask.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The symbols are defined
    in the system macro library ($KGBDEF). The following are the
    symbols for each bit position:

    Bit Position    Meaning When Set

    KGB$V_DYNAMIC   Allows holders of the identifier to remove it
                    from or add it to the process rights list by
                    using the DCL command SET RIGHTS_LIST. For more
                    information about SET RIGHTS_LIST, see the VSI
                    OpenVMS DCL Dictionary.

    KGB$V_          Makes any rights of the identifier null and void.
    NOACCESS        This attribute is intended as a modifier for a
                    resource identifier or the Subsystem attribute.

    KGB$V_          Allows the holder of an identifier to charge disk
    RESOURCE        space to the identifier. It is used only for file
                    objects.

    KGB$V_          Allows holders of an identifier to create and
    SUBSYSTEM       maintain protected subsystems by assigning the
                    Subsystem ACE to the application images in the
                    subsystem.

 contxt

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Context value used while searching for all the holders of the
    specified identifier when executing $FIND_HOLDER. The contxt
    argument is the address of a longword containing the context
    value. When calling $FIND_HOLDER repeatedly, contxt must be
    set initially to 0 and the resulting context of each call to
    $FIND_HOLDER must be presented to each subsequent call. After
    the argument is passed to $FIND_HOLDER, you must not modify its
    value.

124  –  $FINISH RDB

    Deallocates the record stream and clears the context value used
    with $FIND_HELD, $FIND_HOLDER, or $IDTOASC.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$FINISH_RDB  contxt

    C Prototype

      int sys$finish_rdb  (unsigned int *contxt);

124.1  –  Argument

 contxt

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       modify
    mechanism:    by 32- or 64-bit reference
    Context value to be cleared when $FINISH_RDB completes execution.
    The contxt argument is a longword containing the address of the
    context value.

125  –  $FLUSH

    The Flush service writes out all modified I/O buffers and file
    attributes associated with the file. This ensures that all record
    activity up to the point at which the Flush service executes is
    actually reflected in the file.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

126  –  $FORCEX

    Causes an Exit ($EXIT) service call to be issued on behalf of a
    specified process.

    Format

      SYS$FORCEX  [pidadr] ,[prcnam] ,[code]

    C Prototype

      int sys$forcex  (unsigned int *pidadr, void *prcnam, unsigned

                      int code);

126.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) of the process to be forced to exit.
    The pidadr argument is the address of a longword containing the
    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.

    The pidadr argument is optional but must be specified if the
    process that is to be forced to exit is not in the same UIC group
    as the calling process.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Process name of the process that is to be forced to exit. The
    prcnam argument is the address of a character string descriptor
    pointing to the process name string. 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 in 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.

    The prcnam argument can be used only on behalf of processes in
    the same UIC group as the calling process. To force processes in
    other groups to exit, you must specify the pidadr argument. This
    restriction exists because the operating system interprets the
    UIC group number of the calling process as part of the specified
    process name; the names of processes are unique to UIC groups.

 code

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Completion code value to be used as the exit parameter. The
    code argument is a longword containing this value. If you do
    not specify the code argument, the value 0 is passed as the
    completion code.

127  –  $FORGET RM

    Deletes a Resource Manager instance (RMI) from the calling
    process.

    Format

      SYS$FORGET_RM  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,rm_id

    C Prototype

      int sys$forget_rm  (unsigned int efn, unsigned int

                         flags, struct _iosb *iosb, void

                         (*astadr)(__unknown_params), int astprm,

                         unsigned int rm_id);

127.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for the option
    flag listed in $FORGET_RM Option Flag. All undefined bits must be
    0. If this argument is omitted, no flags are used.

    Table SYS-18 $FORGET_RM Option Flag

    Flag Name      Description

    DDTM$M_SYNC    Specifies successful synchronous completion by
                   returning SS$_SYNCH. When SS$_SYNCH is returned,
                   the AST routine is not called, the event flag is
                   not set, and the I/O status block is not filled
                   in.

 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.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the I/O status block diagram.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    The AST routine 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 $FORGET_RM service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The AST parameter that is passed to the AST routine specified by
    the astadr argument.

 rm_id

    OpenVMS usage:identifier
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The identifier of the RMI to be deleted from the calling process.

128  –  $FORGET RMW

    Deletes a Resource Manager instance (RMI) from the calling
    process.

    $FORGET_RMW always waits for the request to complete before
    returning to the caller. Other than this, it is identical to
    $FORGET_RM.

    Format

      SYS$FORGET_RMW  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,rm_id

    C Prototype

      int sys$forget_rmw  (unsigned int efn, unsigned int

                          flags, struct _iosb *iosb, void

                          (*astadr)(__unknown_params), int astprm,

                          unsigned int rm_id);

129  –  $FORMAT ACL

    Formats the specified access control entry (ACE) into a text
    string.

    Format

      SYS$FORMAT_ACL  aclent ,[acllen] ,aclstr ,[width] ,[trmdsc]

                      ,[indent] ,[accnam] ,[nullarg]

    C Prototype

      int sys$format_acl  (void *aclent, unsigned short int

                          *acllen, void *aclstr, unsigned short

                          int *width, void *trmdsc, unsigned short

                          int *indent, unsigned int *accnam, int

                          (*routin)(__unknown_params));

129.1  –  Arguments

 aclent

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Description of the ACE formatted when $FORMAT_ACL completes
    execution. The aclent argument is the address of a descriptor
    pointing to a buffer containing the description of the input ACE.
    The first byte of the buffer contains the length of the ACE; the
    second byte contains a value that identifies the type of ACE,
    which in turn determines the ACE format.

    See the $FORMAT_ACL Description section in the VSI OpenVMS System
    Services Reference Manual for more information about the ACE
    format.

 acllen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by reference
    Length of the output string resulting when $FORMAT_ACL completes
    execution. The acllen argument is the address of a word
    containing the number of characters written to aclstr.

 aclstr

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    Formatted ACE resulting when $FORMAT_ACL completes its execution.
    The aclstr argument is the address of a string descriptor
    pointing to a buffer containing the output string.

 width

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       read only
    mechanism:    by reference
    Maximum width of the formatted ACE resulting when $FORMAT_ACL
    completes its execution. The width argument is the address of
    a word containing the maximum width of the formatted ACE. If
    this argument is omitted or contains the value 0, an infinite
    length display line is assumed. When the width is exceeded, the
    character specified by trmdsc is inserted.

 trmdsc

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Line termination characters used in the formatted ACE. The trmdsc
    argument is the address of a descriptor pointing to a character
    string containing the termination characters that are inserted
    for each formatted ACE when the width has been exceeded.

 indent

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       read only
    mechanism:    by reference
    Number of blank characters beginning each line of the formatted
    ACE. The indent argument is the address of a word containing
    the number of blank characters that you want inserted at the
    beginning of each formatted ACE.

 accnam

    OpenVMS usage:access_bit_names
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Names of the bits in the access mask when executing the $FORMAT_
    ACL. The accnam argument is the address of an array of 32
    quadword descriptors that define the names of the bits in the
    access mask. Each element points to the name of a bit. The first
    element names bit 0, the second element names bit 1, and so on.

    You can call LIB$GET_ACCNAM to retrieve the access name table for
    the class of object whose ACL is to be formatted.

    If you omit accnam, the following names are used:

    Bit    Name

    Bit 0  READ
    Bit 1  WRITE
    Bit 2  EXECUTE
    Bit 3  DELETE
    Bit 4  CONTROL
    Bit 5  BIT_5
    Bit 6  BIT_6
    .
    .
    .
    Bit    BIT_31
    31

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

130  –  $FORMAT AUDIT

    Converts a security auditing event message from binary format to
    ASCII text.

    Format

      SYS$FORMAT_AUDIT  fmttyp ,audmsg ,[outlen] ,outbuf ,[width]

                        ,[trmdsc] ,[routin] ,[fmtflg]

    C Prototype

      int sys$format_audit  (unsigned int fmttyp, void *audmsg,

                            unsigned short int *outlen, void *outbuf,

                            unsigned short int *width, void *trmdsc,

                            int (*routin)(__unknown_params), unsigned

                            int fmtflg);

130.1  –  Arguments

 fmttyp

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Format for the message. The fmttyp argument is a value indicating
    whether the security audit message should be in brief format,
    which is one line of information, or full format. The default is
    full format. Refer to the VSI OpenVMS System Manager's Manual for
    examples of formatted output.

    The following table defines the brief and full formats:

    Value                  Meaning

    NSA$C_FORMAT_STYLE_    Use a brief format for the message.
    BRIEF
    NSA$C_FORMAT_STYLE_    Use a full format for the message.
    FULL

 audmsg

    OpenVMS usage:char_string
    type:         byte stream (unsigned)
    access:       read only
    mechanism:    by reference
    Security auditing message to format. The audmsg argument is
    the address of a buffer containing the message that requires
    formatting.

 outlen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by reference
    Length of the formatted security audit message. The outlen
    argument is the address of the word receiving the final length
    of the ASCII message.

 outbuf

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor
    Buffer holding the formatted message. The outbuf argument is
    the address of a descriptor pointing to the buffer receiving the
    message.

 width

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       read only
    mechanism:    by reference
    Maximum width of the formatted message. The width argument is the
    address of a word containing the line width value. The default is
    80 columns.

    The width argument does not work consistently. In most cases, if
    you specify both the width argument and the full format style
    (NSA$C_FORMAT_STYLE_FULL), $FORMAT_AUDIT ignores the width
    argument. The minimum width is 80 columns; lower values do not
    limit the width to less than 80. If you specify a width greater
    than 80 columns, most lines are not joined to use the full width.

    In most cases, you should avoid using the width argument.

 trmdsc

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor
    Line termination characters used in a full format message. The
    trmdsc argument is the address of a descriptor pointing to the
    line termination characters to insert within a line segment
    whenever the width is reached.

 routin

    OpenVMS usage:procedure
    type:         procedure value
    access:       read only
    mechanism:    by reference
    Routine that writes a formatted line to the output buffer. The
    routin argument is the address of a routine called each time a
    line segment is formatted. The argument passed to the routine
    is the address of a character string descriptor for the line
    segment.

    When an application wants event messages in the brief format,
    $FORMAT_AUDIT calls the routine twice to format the first event
    message. The first time it is called, the routine passes a string
    containing the column titles for the message. The second and
    subsequent calls to the routine pass the formatted event message.
    By using this routine argument, a caller can gain control at
    various points in the processing of an audit event message.

 fmtflg

    OpenVMS usage:longword (unsigned)
    type:         mask_longword
    access:       read only
    mechanism:    by value
    Determines the formatting of certain kinds of audit messages.
    The fmtflg argument is a mask specifying whether sensitive
    information should be displayed or column titles built for
    messages in brief format. For example, the operating system
    uses bit 0 to suppress plain-text passwords from security alarm
    messages.

    The following table describes the significant bits:

    Bit  Value   Description

    0    1       Do not format sensitive information.
         0       Format sensitive information.
    1    1       Build a column title for messages in brief format.
                 (You must specify a fmttyp of brief and a routin
                 argument.)
         0       Do not build column titles.

131  –  $FREE

    The Free service unlocks all records that were previously locked
    for the record stream.

    Refer to the OpenVMS Record Management Services Reference Manual
    for additional information about this service.

132  –  $FREE USER CAPABILITY (Alpha and Integrity servers)

    On Alpha and Integrity server systems, releases a user
    capability, indicating to other processes that the resource is
    now available.

    This service accepts 64-bit addresses.

    Format

      SYS$FREE_USER_CAPABILITY   cap_num [,prev_num] [,flags]

    C Prototype

      int sys$free_user_capability  (int *cap_num, struct _generic_64

                                    *prev_mask, struct _generic_64

                                    *flags);

132.1  –  Arguments

 cap_num

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Capability number to be released by the calling Kernel thread.
    This number can range from 1 to 16. The cap_num argument is
    the 32- or 64-bit address of the longword containing the user
    capability number.

 prev_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The previous user capability reservation mask before execution
    of this service call. The prev_mask argument is the 32- or 64-bit
    address of a quadword into which the service writes a quadword
    bit mask specifying the previously reserved user capabilities.

 flags

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Options selected for the user capability reservation. The flags
    argument is a quadword bit vector wherein a bit corresponds to an
    option.

    Each option (bit) has a symbolic name, which the $CAPDEF macro
    defines. The flags argument is constructed by performing a
    logical OR operation using the symbolic names of each desired
    option.

    At this time, all bits are Reserved to VSI and must be 0.

133  –  $GET

    The Get service retrieves a record from a file.

    Refer to the OpenVMS Record Management Services Reference Manual
    for additional information about this service.

134  –  $GETDTI

    Returns information about the state of transactions.

    Format

      SYS$GETDTI  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,[log_id]

                  ,[contxt] ,search ,itmlst

    C Prototype

      int sys$getdti  (unsigned int efn, unsigned int flags, struct

                      _iosb *iosb, void (*astadr)(__unknown_params),

                      int astprm, unsigned int log_id [4], unsigned

                      int *contxt, void *search, void *itmlst);

134.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for these option
    flags described in $GETDTI Option Flags. All undefined bits must
    be 0. If this argument is omitted, no flags are used.

    Table SYS-19 $GETDTI Option Flags

    Flag Name        Description

    DDTM$M_FULL_     Indicates that the $GETDTI call for a specified
    STATE            TID is not to complete until the ABORTED
                     or COMMITTED state can be returned. Thus,
                     if another node or coordinating resource
                     manager must be contacted and it is currently
                     unreachable, this service does not return
                     until the node can be contacted. Indicates on
                     a wildcard search that only transactions known
                     to be in the ABORTED or COMMITTED states are to
                     be returned.
    DDTM$M_SYNC      Specifies successful synchronous completion by
                     returning SS$_SYNCH. When SS$_SYNCH is returned,
                     the AST routine is not called, the event flag is
                     not set, and the I/O status block is not filled
                     in.

 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.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the I/O status block diagram.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    The AST routine 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 $GETDTI 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.

 log_id

    OpenVMS usage:uid
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    The log id of the transaction manager that is coordinating the
    transaction, returned as the log_id argument on a $DECLARE_RM
    operation. The log_id argument verifies that the recovery log
    returning transaction information is the same one used to record
    transaction state information.

    If you do not specify the same log id used by the transaction
    manager to write transaction information, then $GETDTI will
    return an error.

    If the log_id argument is specified as a zero UID, then $GETDTI
    will use the current active log for this node. If the specified
    transaction cannot be found in this log, then the returned state
    will be aborted. The log identifier can only be specified as
    zero when the DTI$_SEARCH_AS_NODE item is absent or results in
    a search that specifies the local node. Note that the log_id
    argument cannot be specified as a zero address.

    To ensure smooth operation in a mixed-network environment,
    refer to the chapter entitled Managing DECdtm Services in the
    VSI OpenVMS System Manager's Manual, for information on defining
    node names.

 contxt

    OpenVMS usage:contxt
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    The address of a longword used to maintain a context between
    sequential calls to $GETDTI. A call to $GETDTI will start a new
    search if the context value is zero or continue the existing
    search if the context is valid.

    The search context is valid only after a successful call to
    $GETDTI and is invalidated by a subsequent call to $GETDTI.

    The context is also used as input to $SETDTI after a successful
    call to $GETDTI. Calls to $SETDTI do not modify or invalidate the
    context.

 search

    OpenVMS usage:item_list_3
    type:         descriptor list
    access:       read only
    mechanism:    by reference
    Item list specifying how the search for transaction information
    is to be bounded.

    The search argument is the address of a list of item descriptors,
    each of which describes a search item. The list of item
    descriptors is terminated by a longword of 0. Each item
    descriptor in the search item list acts as an input argument
    to $GETDTI and as such is only required to be read only.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the single item descriptor format.

    The following table describes the search item descriptor fields:

    Field          Description

    Buffer         A word containing a user-supplied integer
    length         specifying the length (in bytes) of a buffer from
                   which $GETDTI is to read the information. The
                   length of the buffer needed depends on the item
                   code field of the search item descriptor. If the
                   value of buffer length is too small, $GETDTI will
                   return an error status.
    Item code      A word containing a user-supplied symbolic code
                   specifying the search item that $GETDTI is to use.
                   The $DTIDEF macro defines these codes. Each item
                   code is described in the Search Item Codes section
                   below.
    Buffer         A longword containing the user-supplied address
    address        of the buffer from which $GETDTI reads the search
                   information.
    Return         This longword is not used in the search item list,
    length         because all search items are read-only.
    address

 itmlst

    OpenVMS usage:item_list_3
    type:         descriptor list
    access:       read only
    mechanism:    by reference
    Item list specifying the transaction information that $GETDTI
    is to return. The itmlst argument is the address of a list of
    item descriptors, containing a single entry that describes an
    item of information. The list of item descriptors is terminated
    by a longword of 0. The item descriptor in the item list acts
    as an output argument to $GETDTI and as such is required to be
    writeable in caller's mode.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the single item descriptor format.

    The following table describes the itmlst item descriptor fields:

    Field          Description

    Buffer         A word containing a user-supplied integer
    length         specifying the length (in bytes) of the buffer
                   where $GETDTI is to write the information. The
                   length of the buffer needed depends on the item
                   code field of the search item descriptor. If
                   the value of buffer length is too small, $GETDTI
                   truncates the data and returns the condition code
                   value SS$_BUFFEROVF.
    Item code      A word containing a user-supplied symbolic code
                   specifying the search item that $GETDTI is to
                   use. The $DTIDEF macro defines these codes. Each
                   item code is described in the Itmlst Item Codes
                   section.
    Buffer         A longword containing the user-supplied address
    address        of the buffer where $GETDTI is to write the
                   information.
    return         A longword containing the user-supplied address
    length         of a word where $GETDTI writes return length
    address        information.

135  –  $GETDTIW

    Returns information about the resolved state of transactions and
    the process default transaction identifier.

    $GETDTIW always waits for the request to complete before
    returning to the caller. Other than this, it is identical to
    $GETDTI.

    Format

      SYS$GETDTIW  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,[contxt]

                   ,[log_id] ,search ,itmlst

    C Prototype

      int sys$getdtiw  (unsigned int efn, unsigned int flags, struct

                       _iosb *iosb, void (*astadr)(__unknown_params),

                       int astprm, unsigned int log_id [4], unsigned

                       int *contxt, void *search, void *itmlst);

136  –  $GETDVI

    Returns information related to the primary and secondary device
    characteristics of an I/O device.

                                   NOTE

       All pathname-related information pertains only to Alpha and
       Integrity server systems.

    For synchronous completion, use the Get Device/Volume Information
    and Wait ($GETDVIW) service. The $GETDVIW service is identical to
    the $GETDVI service in every way except that $GETDVIW returns to
    the caller with the requested information.

    For additional information about system service completion, see
    the Synchronize ($SYNCH) service.

                          NOTE ABOUT ITEM CODES

       For item codes that return a string data type, failure to
       pass in a buffer that is large enough to hold the returned
       data results in silent data truncation. When $GETDVI
       completes, VSI recommends that you check the returned length
       field of an item list descriptor for each item code that
       can return a string. If the returned length is equal to the
       size of the buffer allocated to hold the returned data, the
       data might have been truncated. In that case, call $GETDVI
       iteratively with a larger buffer until the length of the
       returned data is less than the size of the buffer allocated.

       Unless the description of an item code specifies otherwise,
       VSI recommends that you use a buffer of 32 bytes to hold
       the returned string. $GETDVI pads the unused portion of the
       buffer with null characters.

    Format

      SYS$GETDVI  [efn] ,[chan] ,[devnam] ,itmlst [,iosb] [,astadr]

                  [,astprm] [,nullarg] [,pathname]

    C Prototype

      int sys$getdvi  (unsigned int efn, unsigned short int chan,

                      void *devnam, void *itmlst, struct _iosb *iosb,

                      void (*astadr)(__unknown_params), int astprm,

                      struct _generic_64 *nullarg,...);

136.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when $GETDVI returns the
    requested information. The efn argument is a longword containing
    this number; however, $GETDVI uses only the low-order byte.

    Upon request initiation, $GETDVI clears the specified event flag
    (or event flag 0 if efn was not specified). Then, when $GETDVI
    returns the requested information, it sets the specified event
    flag (or event flag 0).

    VSI strongly recommends the use of the EFN$C_ENF "no event flag"
    value as the event flag if you are not using an event flag to
    externally synchronize with the completion of this system service
    call. The $EFNDEF macro defines EFN$C_ENF. For more information,
    see the VSI OpenVMS Programming Concepts Manual.

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Number of the I/O channel assigned to the device about which
    information is desired. The chan argument is a word containing
    this number.

    To identify a device to $GETDVI, you can specify either the chan
    or devnam argument, but do not specify both. If you specify both
    arguments, the chan argument is used.

    If you specify neither chan nor devnam, $GETDVI uses a default
    value of 0 for chan.

 devnam

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    The name of the device about which $GETDVI is to return
    information. The devnam argument is the address of a character
    string descriptor pointing to this name string.

    The device name string can be either a physical device name
    or a logical name. If the first character in the string is an
    underscore (_),  the string is considered a physical device name;
    otherwise, the string is considered a logical name and logical
    name translation is performed until either a physical device name
    is found or the system default number of translations has been
    performed.

    If the device name string contains a colon (:),  the colon and
    the characters that follow it are ignored.

    To identify a device to $GETDVI, you can specify either the chan
    or devnam argument, but do not specify both. If both arguments
    are specified, the chan argument is used.

    If you specify neither chan nor devnam, $GETDVI uses a default
    value of 0 for chan.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying which information about the device is to be
    returned. The itmlst argument is the address of a list of item
    descriptors, each of which describes an item of information. The
    list of item descriptors is terminated by a longword of 0.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block that is to receive the final completion status.
    The iosb argument is the address of the quadword I/O status
    block.

    When you specify the iosb argument, $GETDVI sets the quadword to
    0 upon request initiation. Upon request completion, a condition
    value is returned to the first longword; the second longword is
    Reserved to VSI.

    Though this argument is optional, VSI strongly recommends that you
    specify it, for the following reasons:

    o  If you are using an event flag to signal the completion of
       the service, you can test the I/O status block for a condition
       value to be sure that the event flag was not set by an event
       other than service completion.

    o  If you are using the $SYNCH service to synchronize completion
       of the service, the I/O status block is a required argument
       for $SYNCH.

    o  The condition value returned in R0 and the condition value
       returned in the I/O status block provide information about
       different aspects of the call to the $GETDVI service. The
       condition value returned in R0 gives you information about the
       success or failure of the service call itself; the condition
       value returned in the I/O status block gives you information
       about the success or failure of the service operation.
       Therefore, to accurately assess the success or failure of the
       call to $GETDVI, you must check the condition values returned
       in both R0 and the I/O status block.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    AST service routine to be executed when $GETDVI completes. The
    astadr argument is the address of this routine.

    If you specify astadr, the AST routine executes at the same
    access mode as the caller of the $GETDVI service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astadr argument. The astprm argument is the longword
    parameter.

 nullarg

    OpenVMS usage:null_arg
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Placeholding argument Reserved to VSI.

 pathname

    OpenVMS usage:path_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    On Alpha and Integrity server systems, the name of the path about
    which $GETDVI is to return information. The pathname argument
    is the address of a character string descriptor pointing to this
    name string. The pathname can be used with either the chan or the
    devnam argument.

    Check the definitions of the item codes to see if the pathname
    argument is used. In general, item codes that return information
    that can vary by path make use of the pathname argument. Use
    the SHOW DEVICE /FULL command, the SYS$DEVICE_PATH_SCAN system
    service, or the F$MULTIPATH DCL lexical function to see the paths
    for a multipath device.

    If the pathname argument is used, it is validated against the
    existing paths for the device specified. If the path does not
    exist, the error SS$_NOSUCHPATH is returned, even if the item
    code or codes used do not make use of the pathname argument.

137  –  $GETDVIW

    Returns information about an I/O device; this information
    consists of primary and secondary device characteristics.

    The $GETDVIW service completes synchronously; that is, it returns
    to the caller with the requested information. VSI recommends that
    you use an IOSB with this service. An IOSB prevents the service
    from completing prematurely. In addition, the IOSB contains
    additional status information.

    For asynchronous completion, use the Get Device/Volume
    Information ($GETDVI) service; $GETDVI returns to the caller
    after queuing the information request, without waiting for the
    information to be returned. In all other respects, $GETDVIW
    is identical to $GETDVI. For all other information about the
    $GETDVIW service, see the description of $GETDVI.

                                   NOTE

       All pathname-related information pertains only to Alpha and
       Integrity server systems.

    Format

      SYS$GETDVIW  [efn] ,[chan] ,[devnam] ,itmlst [,iosb] [,astadr]

                   [,astprm] [,nullarg,][pathname]

    C Prototype

      int sys$getdviw  (unsigned int efn, unsigned short int chan,

                       void *devnam, void *itmlst, struct _iosb

                       *iosb, void (*astadr)(__unknown_params), int

                       astprm, unsigned __int64 *nullarg,...);

138  –  $GETENV (Alpha Only)

    Returns the value(s) of the specified console environment
    variable(s).

    Format

      SYS$GETENV  itmlst

    C Prototype

      int sys$getenv  (void *itmlst);

138.1  –  Arguments

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    The itmlst argument is the address of a list of item descriptors,
    each of which describes an item of information. The list of item
    descriptors is terminated by a longword of 0.

    The service takes one argument as input, an item list. This item
    list has the following format for a single item descriptor:

    63                31                  0
    +-------------------------------------+
    |  Buffer length   |    Item code     | STENVDEF$L_ITEM_CODE/STENVDEF$L_BUF_LEN
    +-------------------------------------+
    |           Buffer address            | STENVDEF$Q_BUF_ADDR
    +-------------------------------------+
    |       Return length address         | STENVDEF$Q_RET_ADDR
    +-------------------------------------+

    The following table defines the item descriptor fields:

    Descriptor
    Field          Definition

    Item code      A longword indicating which environment variable
                   you want to retrieve. These codes are defined in
                   $STENVDEF.
    Buffer         A longword specifying the length of the buffer
    length         in which GETENV is to write the environment
                   variable's value.
    Buffer         A quadword indicating the address of the buffer
    address        in which GETENV is to write the environment
                   variable's value.
    Return         A quadword indicating the return address in
    length         which to put the length of the value that GETENV
    address        retrieved.

139  –  $GETJPI

    Returns information about one or more processes on the system or
    across the OpenVMS Cluster system.

    The $GETJPI service completes asynchronously. For synchronous
    completion, use the Get Job/Process Information and Wait
    ($GETJPIW) service.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$GETJPI  [efn] ,[pidadr] ,[prcnam] ,itmlst ,[iosb] ,[astadr]

                  ,[astprm]

    C Prototype

      int sys$getjpi  (unsigned int efn, unsigned int *pidadr, void

                      *prcnam, void *itmlst, struct _iosb *iosb, void

                      (*astadr)(__unknown_params), unsigned __int64

                      astprm);

139.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when $GETJPI returns the
    requested information. The efn argument is a quadword containing
    this number; however, $GETJPI uses only the low-order byte.

    Upon request initiation, $GETJPI clears the specified event flag
    (or event flag 0 if efn was not specified). Then, when $GETJPI
    returns the requested information, it sets the specified event
    flag (or event flag 0).

    VSI strongly recommends the use of the EFN$C_ENF "no event flag"
    value as the event flag if you are not using an event flag to
    externally synchronize with the completion of this system service
    call. The $EFNDEF macro defines EFN$C_ENF. For more information,
    see the VSI OpenVMS Programming Concepts Manual.

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by 32- or 64-bit reference
    Process identification (PID) of the process about which $GETJPI
    is to return information. The pidadr argument is the 32- or 64-
    bit address of a longword containing the PID. The pidadr argument
    can refer to a process running on the local node or a process
    running on another node in the cluster.

    If you give pidadr the value -1, $GETJPI assumes a wildcard
    operation and returns the requested information for each process
    on the system that it has the privilege to access, one process
    per call. To perform a wildcard operation, you must call $GETJPI
    in a loop, testing for the condition value SS$_NOMOREPROC after
    each call and exiting from the loop when SS$_NOMOREPROC is
    returned.

    If you use $GETJPI with $PROCESS_SCAN, you can perform wildcard
    searches across the cluster. In addition, with $PROCESS_SCAN
    you can search for specific processes based on many different
    selection criteria.

    You cannot abbreviate a PID. All significant digits of a PID must
    be specified; only leading zeros can be omitted.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the process about which $GETJPI is to return information.
    The prcnam argument is the 32- or 64-bit address of a character
    string descriptor pointing to this name string.

    A process running on the local node can be identified with a 1-
    to 15-character string. To identify a process on a cluster, you
    must 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 local process name can look like a remote process name;
    therefore, if you specify ATHENS::SMITH, the system checks for
    a process named ATHENS::SMITH on the local node before checking
    node ATHENS for a process named SMITH.

    You can use the prcnam argument only if the process identified
    by prcnam has the same UIC group number as the calling process.
    If the process has a different group number, $GETJPI returns
    no information. To obtain information about processes in other
    groups, you must use the pidadr argument.

 itmlst

    OpenVMS usage:32-bit item_list_3 or 64-bit item_list_64b
    type:         longword (unsigned) for 32-bit; quadword (unsigned)
                  for 64-bit
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Item list specifying which information about the process or
    processes is to be returned. The itmlst argument is the 32-
    or 64-bit address of a list of item descriptors, each of which
    describes an item of information. An item list in 32-bit format
    is terminated by a longword of 0; an item list in 64-bit format
    is terminated by a quadword of 0. All items in an item list must
    be of the same format-either 32-bit or 64-bit.

    To view the item code diagrams and descriptor fields tables, see
    the VSI OpenVMS System Services Reference Manual.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    I/O status block that is to receive the final completion status.
    The iosb argument is the 32- or 64-bit address of the quadword
    I/O status block.

    When you specify the iosb argument, $GETJPI sets the quadword to
    0 upon request initiation. Upon request completion, a condition
    value is returned to the first longword; the second longword is
    reserved for future use.

    Though this argument is optional, VSI strongly recommends that you
    specify it, for the following reasons:

    o  If you are using an event flag to signal the completion of
       the service, you can test the I/O status block for a condition
       value to be sure that the event flag was not set by an event
       other than service completion.

    o  If you are using the $SYNCH service to synchronize completion
       of the service, the I/O status block is a required argument
       for $SYNCH.

    o  The condition value returned in R0 and the condition value
       returned in the I/O status block provide information about
       different aspects of the call to the $GETJPI service. The
       condition value returned in R0 gives you information about the
       success or failure of the service call itself; the condition
       value returned in the I/O status block gives you information
       about the success or failure of the service operation.
       Therefore, to accurately assess the success or failure of the
       call to $GETJPI, you must check the condition values returned
       in both R0 and the I/O status block.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference
    AST service routine to be executed when $GETJPI completes. The
    astadr argument is the 32- or 64-bit address of this routine.

    If you specify astadr, the AST routine executes at the same
    access mode as the caller of the $GETJPI service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astadr argument. The astprm argument is the longword
    parameter.

140  –  $GETJPIW

    Returns information about one or more processes on the system.

    The $GETJPIW service completes synchronously; that is, it returns
    to the caller with the requested information. VSI recommends that
    you use an IOSB with this service. An IOSB prevents the service
    from completing prematurely. In addition, the IOSB contains
    status information.

    For asynchronous completion, use the Get Job/Process Information
    ($GETJPI) service; $GETJPI returns to the caller after queuing
    the information request, without waiting for the information to
    be returned.

    In all other respects, $GETJPIW is identical to $GETJPI. For all
    other information about the $GETJPIW service, see the description
    of $GETJPI in this manual.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$GETJPIW  [efn] ,[pidadr] ,[prcnam] ,itmlst ,[iosb]

                   ,[astadr] ,[astprm]

    C Prototype

      int sys$getjpiw  (unsigned int efn, unsigned int *pidadr, void

                       *prcnam, void *itmlst, struct _iosb *iosb,

                       void (*astadr)(__unknown_params), int astprm);

141  –  $GETLKI

    Returns information about the lock database on a system.

    The $GETLKI service completes asynchronously; for synchronous
    completion, use the Get Lock Information and Wait ($GETLKIW)
    service.

    The $GETLKI, $GETLKIW, $ENQ, $ENQW, and $DEQ services together
    provide the user interface to the Lock Management facility.

    Format

      SYS$GETLKI  [efn] ,lkidadr ,itmlst [,iosb] [,astadr] [,astprm]

                  [,nullarg]

    C Prototype

      int sys$getlki  (unsigned int efn, unsigned int *lkidadr,

                      void *itmlst, struct _iosb *iosb, void

                      (*astadr)(__unknown_params), int astprm,

                      unsigned int reserved);

141.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when $GETLKI completes. The
    efn argument is a longword containing this number; however,
    $GETLKI uses only the low-order byte. If you do not specify efn,
    $GETLKI sets event flag 0.

    VSI strongly recommends the use of the EFN$C_ENF "no event flag"
    value as the event flag if you are not using an event flag to
    externally synchronize with the completion of this system service
    call. The $EFNDEF macro defines EFN$C_ENF. For more information,
    see the VSI OpenVMS Programming Concepts Manual.

 lkidadr

    OpenVMS usage:lock_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Lock identification (lock ID) for the lock about which
    information is to be returned. The lock ID is the second longword
    in the lock status block, which was created when the lock was
    granted. The lkidadr argument is the address of this longword.

    If the value specified by lkidadr is 0 or -1, $GETLKI assumes
    a wildcard operation and returns information about each lock to
    which the calling process has access, one lock per call.

    To use the $GETLKI service, you must have read/write access to
    the lock ID.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying the lock information that $GETLKI is to
    return. The itmlst argument is the address of a list of item
    descriptors, each of which describes an item of information. The
    list of item descriptors is terminated by a longword of 0.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block that is to receive the final completion status.
    The iosb argument is the address of a quadword.

    When $GETLKI is called, it sets the I/O status block to 0. When
    $GETLKI completes, it writes a condition value to the first
    longword in the quadword. The remaining two words in the quadword
    are unused.

    Although this argument is optional, VSI strongly recommends that
    you specify it, for the following reasons:

    o  If you are using an event flag to signal the completion of
       the service, you can test the I/O status block for a condition
       value to be sure that the event flag was not set by an event
       other than service completion.

    o  If you are using the $SYNCH service to synchronize completion
       of the service, the I/O status block is a required argument
       for $SYNCH.

    o  The condition value returned in R0 and the condition value
       returned in the I/O status block provide information about
       different aspects of the call to the $GETLKI service. The
       condition value returned in R0 gives you information about the
       success or failure of the service call itself; the condition
       value returned in the I/O status block gives you information
       about the success or failure of the service operation.
       Therefore, to accurately assess the success or failure of the
       call to $GETLKI, you must check the condition values returned
       in both R0 and the I/O status block.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    AST service routine to be executed when the service completes.
    The astadr argument is the address of this routine.

    If you specify this argument, the AST routine executes at the
    same access mode as the caller of the $GETLKI service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astadr argument. The astprm argument is the longword
    parameter.

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument reserved by VSI.

142  –  $GETLKIW

    Returns information about the lock database on a system.

    The $GETLKIW service completes synchronously; that is, it returns
    to the caller with the requested information.

    For asynchronous completion, use the Get Lock Information
    ($GETLKI) service; $GETLKI returns to the caller after queuing
    the information request, without waiting for the information to
    be returned.

    In all other respects, $GETLKIW is identical to $GETLKI. For all
    other information about the $GETLKIW service, see the description
    of $GETLKI in this manual.

    The $GETLKI, $GETLKIW, $ENQ, $ENQW, and $DEQ services together
    provide the user interface to the Lock Management facility.

    Format

      SYS$GETLKIW  [efn] ,lkidadr ,itmlst [,iosb] [,astadr] [,astprm]

                   [,nullarg]

    C Prototype

      int sys$getlkiw  (unsigned int efn, unsigned int *lkidadr,

                       void *itmlst, struct _iosb *iosb, void

                       (*astadr)(__unknown_params), int astprm,

                       unsigned int reserved);

143  –  $GETMSG

    Returns message text associated with a given message
    identification code into the caller's buffer. The message can
    be from the system message file or a user-defined message.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$GETMSG  msgid ,msglen ,bufadr ,[flags] ,[outadr]

    C Prototype

      int sys$getmsg  (unsigned int msgid, unsigned short int

                      *msglen, void *bufadr, unsigned int flags,

                      unsigned char outadr [4]);

143.1  –  Arguments

 msgid

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Identification of the message to be retrieved. The msgid argument
    is a longword value containing the message identification. Each
    message has a unique identification, contained in bits 3 through
    27 of system longword condition values.

 msglen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Length of the message string returned by $GETMSG. The msglen
    argument is the 32- or 64-bit address of a word into which
    $GETMSG writes this length.

 bufadr

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Buffer to receive the message string. The bufadr argument is the
    32- or 64-bit address of a character string descriptor pointing
    to the buffer into which $GETMSG writes the message string. The
    maximum size of any message string is 256 bytes.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Message components to be returned. The flags argument is a
    longword bit vector wherein a bit, when set, specifies that the
    message component is to be returned.

    The following table describes the significant bits:

    Bit  Value   Description

    0    1       Include text of message
         0       Do not include text of message
    1    1       Include message identifier
         0       Do not include message identifier
    2    1       Include severity indicator
         0       Do not include severity indicator
    3    1       Include facility name
         0       Do not include facility name

    If you omit this argument in a VAX MACRO or BLISS-32 service
    call, it defaults to a value of 15; that is, all flags are set
    and all components of the message are returned. If you omit this
    argument in a Fortran service call, it defaults to a value of 0;
    the value 0 causes $GETMSG to use the process default flags.

 outadr

    OpenVMS usage:vector_byte_unsigned
    type:         byte (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Optional information to be returned by $GETMSG. The outadr
    argument is the 32- or 64-bit address of a 4-byte array into
    which $GETMSG writes the following information:

    Byte   Contents

    0      Reserved
    1      Count of FAO arguments associated with message
    2      User-specified value in message, if any
    3      Reserved

144  –  $GETQUI

    Returns information about queues and the jobs initiated from
    those queues.

    The $GETQUI service completes asynchronously; for synchronous
    completion, use the Get Queue Information and Wait ($GETQUIW)
    service.

    For additional information about system service completion, see
    the Synchronize ($SYNCH) service.

    Format

      SYS$GETQUI  [efn] ,func [,context] [,itmlst] [,iosb] [,astadr]

                  [,astprm]

    C Prototype

      int sys$getqui  (unsigned int efn, unsigned short int func,

                      unsigned int *context, void *itmlst, struct

                      _iosb *iosb, void (*astadr)(__unknown_params),

                      int astprm);

144.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when $GETQUI completes. The
    efn argument is a longword containing this number; however,
    $GETQUI uses only the low-order byte. The efn argument is
    optional.

    When the request is queued, $GETQUI clears the specified event
    flag (or event flag 0 if efn was not specified). Then, when the
    operation completes, $GETQUI sets the specified event flag (or
    event flag 0).

    VSI strongly recommends the use of the EFN$C_ENF "no event flag"
    value as the event flag if you are not using an event flag to
    externally synchronize with the completion of this system service
    call. The $EFNDEF macro defines EFN$C_ENF. For more information,
    see the VSI OpenVMS Programming Concepts Manual.

 func

    OpenVMS usage:function_code
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Function code specifying the function that $GETQUI is to perform.
    The func argument is a word containing this function code. The
    $QUIDEF macro defines the names of each function code.

    You can specify only one function code in a single call to
    $GETQUI. Most function codes require or allow for additional
    information to be passed in the call. You pass this information
    by using the itmlst argument, which specifies a list of one or
    more item descriptors. Each item descriptor in turn specifies an
    item code, which either describes the specific information to be
    returned by $GETQUI, or otherwise affects the action designated
    by the function code.

    You can use wildcard mode to make a sequence of calls to $GETQUI
    to get information about all characteristics, form definitions,
    queues, or jobs contained in the system job queue file.

    For information on using wildcard mode, see the VSI OpenVMS System
    Services Reference Manual.

 context

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Address of a longword containing the number of a context stream
    for this call to the $GETQUI system service. If the argument is
    unspecified or 0, the service uses the default context stream
    (#0).

    To generate a new context stream, the specified longword must
    contain -1. $GETQUI then modifies the longword to hold the
    context number for that stream of operation. The context is
    marked with the caller's mode (user, supervisor, executive, or
    kernel). Any attempt to use that context in successive calls
    is checked and no call from a mode outside the recorded mode is
    allowed access.

    To clean up a context, make a $GETQUI call using the QUI$_CANCEL_
    OPERATION function code and specify the address of the context
    number as the context argument.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list supplying information to be used in performing the
    function specified by the func argument. The itmlst argument is
    the address of the item list. The item list consists of one or
    more item descriptors, each of which contains an item code. The
    item list is terminated by an item code of 0 or by a longword of
    0.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block into which $GETQUI writes the completion status
    after the requested operation has completed. The iosb argument is
    the address of the I/O status block.

    At request initiation, $GETQUI sets the value of the quadword I/O
    status block to 0. When the requested operation has completed,
    $GETQUI writes a condition value in the first longword of the
    I/O status block. It writes the value 0 into the second longword;
    this longword is unused and reserved for future use.

    The condition values returned by $GETQUI in the I/O status block
    are condition values from the JBC facility, which are defined by
    the $JBCMSGDEF macro. The condition values returned from the JBC
    facility are listed in the section Condition Values Returned in
    the I/O Status Block section.

    Though this argument is optional, VSI strongly recommends that you
    specify it, for the following reasons:

    o  If you are using an event flag to signal the completion of
       the service, you can test the I/O status block for a condition
       value to be sure that the event flag was not set by an event
       other than service completion.

    o  If you are using the $SYNCH service to synchronize completion
       of the service, the I/O status block is a required argument
       for $SYNCH.

    o  The condition value returned in R0 and the condition value
       returned in the I/O status block provide information about
       different aspects of the call to the $GETQUI service. The
       condition value returned in R0 gives you information about the
       success or failure of the service call itself; the condition
       value returned in the I/O status block gives you information
       about the success or failure of the service operation.
       Therefore, to accurately assess the success or failure of the
       call to $GETQUI, you must check the condition values returned
       in both R0 and the I/O status block.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    AST service routine to be executed when $GETQUI completes. The
    astadr argument is the address of this routine.

    If specified, the AST routine executes at the same access mode as
    the caller of $GETQUI.

 astprm

    OpenVMS usage:user_parm
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astadr argument. The astprm argument is this longword
    parameter.

145  –  $GETQUIW

    Returns information about queues and jobs initiated from those
    queues. The $SNDJBC service is the major interface to the Job
    Controller, which is the queue and accounting manager.

    The $GETQUIW service completes synchronously; that is, it returns
    to the caller with the requested information. For asynchronous
    completion, use the Get Queue Information ($GETQUI) service;
    $GETQUI returns to the caller after queuing the information
    request, without waiting for the information to be returned.

    In all other respects, $GETQUIW is identical to $GETQUI.

    For additional information about system service completion, see
    the Synchronize ($SYNCH) service.

    Format

      SYS$GETQUIW  [efn] ,func [,context] [,itmlst] [,iosb] [,astadr]

                   [,astprm]

    C Prototype

      int sys$getquiw  (unsigned int efn, unsigned short int func,

                       unsigned int *context, void *itmlst, struct

                       _iosb *iosb, void (*astadr)(__unknown_params),

                       int astprm);

146  –  $GETRMI

    Returns system performance information about the local system.
    $GETRMI is an asynchronous system service and requires the
    $SYNCH service or another wait-state synchronous mechanism to
    guarantee that the required information is available. There is no
    synchronous wait form for this system service.

    For additional information about system service completion, see
    the Synchronize ($SYNCH) service.

    Format

      SYS$GETRMI  [efn] [,nullarg] [,nullarg] ,itmlst [,iosb]

                  [,astadr] [,astprm]

    C Prototype

      int sys$getrmi  (unsigned int efn, unsigned int nullarg,

                      unsigned int nullarg, void *itmlst, struct

                      _iosb *iosb, void (*astadr)(__unknown_params),

                      int astprm);

146.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of event flag to be set when the $GETRMI request
    completes. The efn argument is a longword containing this number;
    however, $GETRMI uses only the low order byte.

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying which information is to be returned about
    the local node. The itmlst argument is the address of a list of
    item descriptors, each of which describes an item of information.
    The list of descriptors is terminated by a longword of 0.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block to receive the final completion status. The iosb
    argument is the address of the quadword I/O status block.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    AST service routine to be executed when $GETRMI completes. The
    astadr argument is the address of this routine.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astadr argument.

147  –  $GETSYI

    Returns information about the local system or about other
    systems in an OpenVMS Cluster system. The $GETSYI service
    completes asynchronously; for synchronous completion, use the
    Get Systemwide Information and Wait ($GETSYIW) service.

    For additional information about system service completion, see
    the Synchronize ($SYNCH) service.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$GETSYI  [efn] ,[csidadr] ,[nodename] ,itmlst [,iosb]

                  [,astadr] [,astprm]

    C Prototype

      int sys$getsyi  (unsigned int efn, unsigned int *csidadr, void

                      *nodename, void *itmlst, struct _iosb *iosb,

                      void (*astadr)(__unknown_params), unsigned

                      __int64 astprm);

147.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when the $GETSYI request
    completes. The efn argument is a longword containing this number;
    however, $GETSYI uses only the low-order byte.

    Upon request initiation, $GETSYI clears the specified event
    flag (or event flag 0 if efn was not specified). Then, when the
    request completes, the specified event flag (or event flag 0) is
    set.

    VSI strongly recommends the use of the EFN$C_ENF "no event flag"
    value as the event flag if you are not using an event flag to
    externally synchronize with the completion of this system service
    call. The $EFNDEF macro defines EFN$C_ENF. For more information,
    see the VSI OpenVMS Programming Concepts Manual.

 csidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by 32- or 64-bit reference
    OpenVMS Cluster system identification of the node about which
    $GETSYI is to return information. The csidadr argument is the 32-
    or 64-bit address of a longword containing this identification
    value.

    The cluster-connection software assigns the OpenVMS Cluster
    system identification of a node. You can obtain this information
    by using the DCL command SHOW CLUSTER. The value of the cluster
    system identification for a node is not permanent; a new value is
    assigned to a node whenever it joins or rejoins the cluster.

    You can also specify a node to $GETSYI by using the nodename
    argument. If you specify csidadr, you need not specify nodename,
    and vice versa. If you specify both, they must identify the
    same node. If you specify neither argument, $GETSYI returns
    information about the local node; however, for wildcard
    operations, you must use the csidadr argument.

    If you specify csidadr as -1, $GETSYI assumes a wildcard
    operation and returns the requested information for each node in
    the cluster, one node per call. In this case, the program should
    test for the condition value SS$_NOMORENODE after each call to
    $GETSYI and should stop calling $GETSYI when SS$_NOMORENODE is
    returned.

 nodename

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the node about which $GETSYI is to return information.
    The nodename argument is the 32- or 64-bit address of a character
    string descriptor pointing to this name string.

    The node name string must contain from 1 to 15 characters and
    must correspond exactly to the node name; no trailing blanks or
    abbreviations are permitted.

    You can also specify a node to $GETSYI by using the csidadr
    argument. See the description of csidadr.

 itmlst

    OpenVMS usage:32-bit item_list_3 or 64-bit item_list_64b
    type:         longword (unsigned) for 32-bit; quadword (unsigned)
                  for 64-bit
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Item list specifying which information is to be returned about
    the node or nodes. The itmlst argument is the 32- or 64-bit
    address of a list of item descriptors, each of which describes an
    item of information. An item list in 32-bit format is terminated
    by a longword of 0; an item list in 64-bit format is terminated
    by a quadword of 0. All items in an item list must be of the same
    format-either 32-bit or 64-bit.

    To view the item code diagrams and descriptor fields tables, see
    the VSI OpenVMS System Services Reference Manual.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    I/O status block to receive the final completion status. The
    iosb argument is or the 32- or 64-bit address of the quadword I/O
    status block.

    When you specify the iosb argument, $GETSYI sets the quadword to
    0 upon request initiation. Upon request completion, a condition
    value is returned to the first longword; the second longword is
    reserved for future use.

    Though this argument is optional, VSI strongly recommends that you
    specify it, for the following reasons:

    o  If you are using an event flag to signal the completion of
       the service, you can test the I/O status block for a condition
       value to be sure that the event flag was not set by an event
       other than service completion.

    o  If you are using the $SYNCH service to synchronize completion
       of the service, the I/O status block is a required argument
       for $SYNCH.

    o  The condition value returned in R0 and the condition value
       returned in the I/O status block provide information about
       different aspects of the call to the $GETSYI service. The
       condition value returned in R0 gives you information about the
       success or failure of the service call itself; the condition
       value returned in the I/O status block gives you information
       about the success or failure of the service operation.
       Therefore, to accurately assess the success or failure of the
       call to $GETSYI, you must check the condition values returned
       in both R0 and the I/O status block.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference
    AST service routine to be executed when $GETSYI completes. The
    astadr argument is the 32- or 64-bit address of this routine.

    If you specify astadr, the AST routine executes at the same
    access mode as the caller of the $GETSYI service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astadr argument. The astprm argument is the longword
    parameter.

148  –  $GETSYIW

    Returns information about the local system or about other systems
    in a cluster.

    The $GETSYIW service completes synchronously; that is, it returns
    to the caller with the requested information. For asynchronous
    completion, use the Get Systemwide Information ($GETSYI) service;
    $GETSYI returns to the caller after queuing the information
    request, without waiting for the information to be returned. In
    all other respects, these services are identical; For information
    about the $GETSYIW service, see the documentation about $GETSYI.

    Format

      SYS$GETSYIW  [efn] ,[csidadr] ,[nodename] ,itmlst [,iosb]

                   [,astadr] [,astprm]

    C Prototype

      int sys$getsyiw  (unsigned int efn, unsigned int *csidadr, void

                       *nodename, void *itmlst, struct _iosb *iosb,

                       void (*astadr)(__unknown_params), int astprm);
    You must specify either the csidadr or the nodename argument,
    but not both. For wildcard operations, however, you must use the
    csidadr argument.

149  –  $GETTIM

    Returns the current system time in a 64-bit format.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$GETTIM  timadr,[flags]

    C Prototype

      int sys$gettim  (struct _generic_64 *timadr,...);

149.1  –  Arguments

 timadr

    OpenVMS usage:date_time
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit address of a quadword to receive the current
    time in 64-bit format.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value (Alpha and Integrity servers)
    An optional argument that modifies the form of the returned
    time value. If this argument is not specified, it is same as
    specifying an argument of 0.

150  –  $GETTIM PREC

    Returns the current high precision system time in a 64-bit
    format.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$GETTIM_PREC  timadr

    C Prototype

      int sys$gettim_prec  (struct _generic_64 *timadr);

150.1  –  Argument

 timadr

    OpenVMS usage:date_time
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 64-bit reference
    The 64-bit address of a quadword to receive the current time in
    64-bit format.

151  –  $GETUAI

    Returns authorization information about a specified user.

    Format

      SYS$GETUAI  [nullarg] ,[contxt] ,usrnam ,itmlst ,[nullarg]

                  ,[nullarg] ,[nullarg]

    C Prototype

      int sys$getuai  (unsigned int efn, unsigned int *contxt, void

                      *usrnam, void *itmlst, struct _iosb *iosb, void

                      (*astadr)(__unknown_params), int astprm);

151.1  –  Arguments

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

 contxt

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    An optional longword used to maintain an open channel to the
    authorization file. The contxt argument is the address of a
    longword to receive a $GETUAI context value. If the contxt
    argument is specified on the initial call, this longword should
    contain the value -1, and on subsequent calls, the value of the
    contxt argument from the previous call should be passed back in.

 usrnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the user about whom $GETUAI returns authorization
    information. The usrnam argument is the address of a descriptor
    pointing to a character text string containing the user name.
    The user name string can contain a maximum of 12 alphanumeric
    characters.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying which information from the specified user's
    user authorization file (UAF) record is to be returned. The
    itmlst argument is the address of a list of one or more item
    descriptors, each of which specifies an item code. The item list
    is terminated by an item code value of 0 or by a longword value
    of 0.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

 nullarg

    OpenVMS usage:nullarg
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    Placeholding argument Reserved to VSI.

 nullarg

    OpenVMS usage:nullarg
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    Placeholding argument Reserved to VSI.

 nullarg

    OpenVMS usage:nullarg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

152  –  $GETUTC

    Returns the current time in 128-bit UTC format.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$GETUTC  utcadr

    C Prototype

      int sys$getutc  (unsigned int *utcadr [4]);

152.1  –  Arguments

 utcadr

    OpenVMS usage:coordinated universal time
    type:         utc_date_time
    access:       write only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers);
    The 128-bit time value to be returned.

153  –  $GET ALIGN FAULT DATA (Alpha and Integrity servers)

    On Alpha and Integrity server systems, obtains data from the user
    image alignment fault buffer if buffered user alignment fault
    data reporting has been enabled.

    This service accepts 64-bit addresses.

    Format

      SYS$GET_ALIGN_FAULT_DATA  buffer ,buffer_size ,return_size

    C Prototype

      int sys$get_align_fault_data  (void *buffer, int buffer_size,

                                    int *return_size);

153.1  –  Arguments

 buffer

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       read/write
    mechanism:    by 32- or 64-bit reference
    The user buffer in which the alignment fault data is to be
    stored. The buffer is the 32- or 64-bit address of this user
    buffer.

 buffer_size

    OpenVMS usage:byte count
    type:         longword (signed)
    access:       read
    mechanism:    by value
    The size, in bytes, of the buffer specified by the buffer
    argument.

 return_size

    OpenVMS usage:longword_signed
    type:         longword (signed)
    access:       write
    mechanism:    by 32- or 64-bit reference
    The amount of data, in bytes, stored in the buffer. The return_
    size argument is the 32- or 64-bit address of a naturally aligned
    longword into which the service returns the size of the buffer.
    The return_size is set to 0 if there is no data in the buffer.

154  –  $GET ARITH EXCEPTION (Alpha only)

    On Alpha systems, returns information about the exception context
    for a given arithmetic exception. There are two forms the signal
    argument vectors: one for use with 32-bit addresses and one for
    use with 64-bit addresses.

    For more information, see the section "Signal Argument Vector" in
    the VSI OpenVMS Calling Standard.

    Format

      SYS$GET_ARITH_EXCEPTION  sigarg ,mcharg ,buffer

    C Prototype

      int sys$get_arith_exception  (void *sigarg, void *mcharg, void

                                   *buffer);

154.1  –  Arguments

 sigarg

    OpenVMS usage:signal array
    type:         vector_longword_signed
    access:       read only
    mechanism:    by reference
    Address of the signal array for the given arithmetic exception.

 mcharg

    OpenVMS usage:mech array
    type:         vector_quadword_unsigned
    access:       read only
    mechanism:    by reference
    Address of the mechanism array for the given arithmetic
    exception.

 buffer

    OpenVMS usage:vector_quadword
    type:         vector_quadword_unsigned
    access:       write only
    mechanism:    by descriptor
    Four-quadword buffer to receive additional exception context.
    The buffer argument is the address of a descriptor that points to
    this buffer.

155  –  $GET DEFAULT TRANS

    Returns the default transaction of the calling process.

    Format

      SYS$GET_DEFAULT_TRANS  tid

    C Prototype

      int sys$get_default_trans  (unsigned int tid [4]);

155.1  –  Arguments

 tid

    OpenVMS usage:trans_id
    type:         octaword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of an octaword in which the identifier (TID) of the
    default transaction of the calling process is returned.

156  –  $GET GALAXY LOCK INFO (Alpha Only)

    Returns "interesting" fields from the specified lock.

    Note that this system service is supported only in an OpenVMS
    Alpha Galaxy environment. For more information about programming
    with OpenVMS Galaxy system services, refer to the VSI OpenVMS
    Alpha Partitioning and Galaxy Guide.

    Format

      SYS$GET_GALAXY_LOCK_INFO  handle ,name ,timeout ,size ,ipl

                                ,rank ,flags [,name_length]

    C Prototype

      int sys$get_galaxy_lock_info  (unsigned __int64 lock_handle,

                                    char *name, unsigned int

                                    *timeout, unsigned int *size,

                                    unsigned int *ipl, unsigned int

                                    *rank, unsigned short int *flags

                                    unsigned short int *name_length);

156.1  –  Arguments

 handle

    OpenVMS usage:handle for the galaxy lock
    type:         quadword (unsigned)
    access:       read
    mechanism:    input by value
    The 64-bit lock handle that identifies the lock on which to
    return information. This value is returned by SYS$CREATE_GALAXY_
    LOCK.

 name

    OpenVMS usage:address
    type:         zero-terminated string
    access:       write
    mechanism:    output by reference
    Pointer to a buffer. This buffer must be large enough to receive
    the name of the lock. Locks names are zero-terminated strings
    with a maximum size of 16 bytes.

 timeout

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       write
    mechanism:    output by reference
    Pointer to a longword. The value returned is the timeout value of
    the lock.

 size

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       write
    mechanism:    output by reference
    Pointer to a longword. The value returned is the size of the lock
    in bytes.

 ipl

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       write
    mechanism:    output by reference
    Pointer to a longword. The value returned is the IPL of the lock.

 rank

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       write
    mechanism:    output by reference
    Pointer to a longword. The value returned is the rank of the
    lock.

 flags

    OpenVMS usage:address
    type:         word (unsigned)
    access:       write
    mechanism:    output by reference
    Pointer to a word. The value returned is the word mask of lock
    flags.

 name_length

    OpenVMS usage:address
    type:         word (unsigned)
    access:       write
    mechanism:    output by reference
    Length of the string returned in the name argument.

157  –  $GET GALAXY LOCK SIZE (Alpha Only)

    Returns the minimum and maximum size of an OpenVMS Galaxy lock.

    Note that this system service is supported only in an OpenVMS
    Alpha Galaxy environment.

    For more information about programming with OpenVMS Galaxy system
    services, refer to the VSI OpenVMS Alpha Partitioning and Galaxy
    Guide.

    Format

      SYS$GET_GALAXY_LOCK_SIZE  min_size ,max_size

    C Prototype

      int sys$get_galaxy_lock_size  (unsigned int *min_size, unsigned

                                    int *max_size);

157.1  –  Arguments

 min_size

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       write
    mechanism:    output by reference
    Pointer to a longword. The value returned is minimum legal size
    of a galaxy lock structure.

 max_size

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       write
    mechanism:    output by reference
    Pointer to a longword. The value returned is maximum legal size
    of a galaxy lock structure.

158  –  $GET REGION INFO (Alpha and Integrity servers)

    On Alpha and Integrity server systems, gets information about a
    specified virtual region.

    This service accepts 64-bit addresses.

    Format

      SYS$GET_REGION_INFO  function_code ,region_id_64 ,start_va_64

                           ,nullarg ,buffer_length ,buffer_address_64

                           ,return_length_64

    C Prototype

      int sys$get_region_info  (unsigned int function_code, struct

                               _generic_64 *region_id_64, void

                               *start_va_64, void *reserved,

                               unsigned int buffer_length, void

                               *buffer_address_64, unsigned int

                               *return_length_64);

158.1  –  Arguments

 function_code

    OpenVMS usage:function code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Function code specifying how the information you are requesting
    should be looked up. All function codes return region summary
    information in the return buffer in the format of the Region
    Summary Buffer. The Region Summary Buffer format is shown in the
    table in the buffer_address_64 argument.

    If less buffer space is specified than the length of the Region
    Summary Buffer, only the amount of information requested is
    returned. If more buffer space is specified than the length of
    the Region Summary Buffer, the service will fill in the buffer.
    The return length will reflect the amount of useful information
    written to the buffer, the size of the Region Summary Buffer.

    The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF macro in
    STARLET.MLB define a symbolic name for each function code.

    The following function codes are defined:

    Symbolic Name        Description

    VA$_REGSUM_BY_ID     Return the region summary information for
                         the region whose ID is specified in the
                         region_id_64 argument.
    VA$_REGSUM_BY_VA     Return the region summary information for
                         the region that contains the virtual address
                         specified in the start_va_64 argument.
    VA$_NEXT_REGSUM_     Return the region summary information for
    BY_VA                the region containing the starting address.
                         If the starting address is not in a region,
                         return the region summary information for
                         the next region with a starting address
                         higher than the specified address.

                         Note: For the VA$_NEXT_REGSUM_BY_VA
                         function, OpenVMS checks for a start_va_64
                         argument in the inaccessible address range
                         in P2 space. If it finds one, OpenVMS
                         adjusts the address to account for the
                         discontinuity. For more information about
                         the layout of the 64-bit virtual address
                         space, see the VSI OpenVMS Programming
                         Concepts Manual.

                         This function code can be used for wildcard
                         operations. See the description of the
                         start_va_64 argument for information on how
                         to program a wildcard operation on regions.

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region about which information
    is requested. This argument is read only if the function code
    VA$_REGSUM_BY_ID is specified.

    The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF macro in
    STARLET.MLB define a symbolic name for each of the three default
    regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 start_va_64

    OpenVMS usage:input address
    type:         quadword address
    access:       read only
    mechanism:    by value
    Virtual address associated with region about which information
    is requested. This argument is read only if the function_code
    argument is VA$_REGSUM_BY_VA or VA$_NEXT_REGSUM_BY_VA.

    If the function_code argument is VA$_REGSUM_BY_VA, this argument
    is a virtual address within the region about which you are
    requesting information.

    To perform a wildcard search on all regions, specify VA$_
    NEXT_REGSUM_BY_VA as the function code and begin with the
    start_va_64 argument specified as -1. For subsequent calls,
    specify start_va_64 as the sum of the previous region's start
    address and length. Call the $GET_REGION_INFO service in a loop
    until the condition SS$_NOMOREREG is returned.

                                   NOTE

       Before performing the lookup function, OpenVMS sign-extends
       the 64-bit starting address so that it represents a properly
       formed virtual address for the CPU.

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

 buffer_length

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the buffer into which information is returned.

 buffer_address_64

    OpenVMS usage:varying_arg
    type:         unspecified
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a quadword-aligned buffer
    into which to return information if the buffer_length argument is
    nonzero.

    This argument is ignored if the buffer_length argument is zero.

    The following table shows the format of the Region Summary
    Buffer:

    Table SYS-20 Region Summary Buffer Format

                                               Field
                                               Size    Field Offset
    Field name           Meaning               (Bytes) (Decimal)

    VA$L_FLAGS           Flags used when       4       8
                         region was created
    VA$L_REGION_         Create and owner      4       12
    PROTECT              mode of region
    VA$Q_REGION_ID       Region identifier     8       0
    VA$PQ_START_VA       Starting (lowest)     8       16
                         virtual address of
                         region
    VA$Q_REGION_SIZE     Total length of       8       24
                         region
    VA$PQ_FIRST_FREE_    First free virtual    8       32
    VA                   address in region
    VA$C_REGSUM_LENGTH   Length of Region      constant 40
                         Summary Buffer

    The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF MACRO in
    STARLET.MLB define the REGSUM structure.

 return_length_64

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned longword
    into which the service returns the length of the information in
    bytes.

159  –  $GET SECURITY

    Retrieves the security characteristics of an object.

    Format

      SYS$GET_SECURITY  [clsnam] ,[objnam] ,[objhan] ,[flags]

                        ,[itmlst] ,[contxt] ,[acmode]

    C Prototype

      int sys$get_security  (void *clsnam, void *objnam, unsigned

                            int *objhan, unsigned int flags, void

                            *itmlst, unsigned int *contxt, unsigned

                            int *acmode);

159.1  –  Arguments

 clsnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor
    Name of the object class. The clsnam argument is the address of a
    descriptor pointing to a string containing the name of the object
    class.

    The following is a list of protected object class names:

       CAPABILITY
       COMMON_EVENT_CLUSTER
       DEVICE
       FILE
       GLXSYS_GLOBAL_SECTION
       GLXGRP_GLOBAL_SECTION
       GROUP_GLOBAL_SECTION
       ICC_ASSOCIATION
       LOGICAL_NAME_TABLE
       QUEUE
       RESOURCE_DOMAIN
       SECURITY_CLASS
       SYSTEM_GLOBAL_SECTION
       VOLUME

 objnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor
    Name of the protected object whose associated security profile
    is going to be retrieved. The objnam argument is the address
    of a descriptor pointing to a string containing the name of the
    protected object.

    The format of an object name is class specific. The following
    table lists object names and describes their formats:

    Object Class        Object Name Format

    CAPABILITY          A character string. Currently, the only
                        capability object is VECTOR.
    COMMON_EVENT_       Name of the event flag cluster, as defined
    CLUSTER             in the Associate Common Event Flag Cluster
                        ($ASCEFC) system service.
    DEVICE              Standard device specification, described in
                        the OpenVMS User's Manual.
    FILE                Standard file specification, described in the
                        OpenVMS User's Manual.
    GROUP_GLOBAL_       Section name, as defined in the Create and
    SECTION             Map Section ($CRMPSC) system service.
    ICC_ASSOCIATION     ICC security object name node::association_
                        name. The special node name, ICC$::, refers
                        to entries in the clusterwide registry. For
                        registry entries, the Access Access Type does
                        not apply.
    LOGICAL_NAME_TABLE  Table name, as defined in the Create Logical
                        Name Table ($CRELNT) system service.
    QUEUE               Standard queue name, as described in the Send
                        to Job Controller ($SNDJBC) system service.
    RESOURCE_DOMAIN     An identifier or octal string enclosed in
                        brackets.
    SECURITY_CLASS      Any class name shown in column 1, or a
                        class name followed by a period (.) and
                        the template name. Use the DCL command SHOW
                        SECURITY to display possible template names.
    SYSTEM_GLOBAL_      Section name, as defined in the Create and
    SECTION             Map Section ($CRMPSC) system service.
    VOLUME              Volume name or name of the device on which
                        the volume is mounted.

 objhan

    OpenVMS usage:object_handle
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Data structure identifying the object whose associated
    characteristics are going to be retrieved. The objhan argument
    is an address of a longword containing the object handle. You can
    use the objhan argument as an alternative to the objnam argument;
    for example, channel number clearly specifies the file open on
    the channel and can serve as an object handle.

    The following table shows the format of the object classes:

    Object Class           Object Handle Format

    COMMON_EVENT_CLUSTER   Event flag number
    DEVICE                 Channel number
    FILE                   Channel number
    RESOURCE_DOMAIN        Resource domain identifier
    VOLUME                 Channel number

 flags

    OpenVMS usage:flags
    type:         mask_longword
    access:       read only
    mechanism:    by value
    Mask specifying processing options. The flags argument is a
    longword bit vector wherein a bit, when set, specifies the
    processing option. The flags argument requires the contxt
    argument.

    The following table describes each flag:

    Symbolic Name   Description

    OSS$M_RELCTX    Release the context structure at the completion
                    of this request.

    OSS$M_WLOCK     Maintain a write lock on the security profile
                    at the completion of this request. $GET_SECURITY
                    ignores the flag if the context has already been
                    established.

    These symbolic names are defined in the $OSSDEF macro. You
    construct the flags argument by specifying the symbolic names
    of each flag.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying which information about the process or
    processes is to be returned. The itmlst argument is the address
    of a list of item descriptors, each of which describes an item
    of information. The list of item descriptors is terminated by a
    longword of 0.

    With the item list, the user retrieves the protected object's
    characteristics. The user defines which security characteristics
    to retrieve. If this argument is not present, only the flags
    argument is processed. Without the itmlst argument, you can only
    manipulate the security profile lock or release contxt resources.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

 contxt

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Value used to maintain the processing context when dealing with
    a single protected object across multiple $GET_SECURITY/$SET_
    SECURITY calls. Whenever the context value is nonzero, the class
    name, object name, or object handle arguments are disregarded.
    An input value of 0 indicates that a new context should be
    established.

    Because an active context block consumes process memory, be sure
    to release the context block by setting the RELCTX flag when the
    profile processing is complete. $GET_SECURITY sets the context
    argument to 0 once the context is released.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Access mode to be used in the object protection check. The acmode
    argument is the address of a longword containing the access mode.
    The acmode argument defaults to kernel mode; however, the system
    compares acmode with the caller's access mode and uses the least
    privileged mode. The access modes are defined in the system macro
    $PSLDEF library. VSI recommends that this argument be omitted
    (passed as zero).

160  –  $GET SYS ALIGN FAULT DATA (Alpha and Integrity servers)

    On Alpha and Integrity server systems, obtains data from the
    system alignment fault buffer if buffered system alignment fault
    data reporting has been enabled.

    This service accepts 64-bit addresses.

    Format

      SYS$GET_SYS_ALIGN_FAULT_DATA  buffer ,buffer_size ,return_size

    C Prototype

      int sys$get_sys_align_fault_data  (void *buffer, int

                                        buffer_size, int

                                        *return_size);

160.1  –  Arguments

 buffer

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       read/write
    mechanism:    by 32- or 64-bit reference
    The user buffer in which the alignment fault data is to be
    stored. The buffer argument is the 32- or 64-bit virtual address
    of this buffer.

 buffer_size

    OpenVMS usage:byte count
    type:         longword (signed)
    access:       read
    mechanism:    by value
    The size, in bytes, of the buffer specified by the buffer
    argument.

 return_size

    OpenVMS usage:longword_signed
    type:         longword (signed)
    access:       write
    mechanism:    by 32- or 64-bit reference
    The amount of data, in bytes, stored in the buffer. The return_
    size argument is the 32- or 64-bit virtual address of a naturally
    aligned longword into which the service returns the amount of
    data, in bytes, stored in the buffer. The return_size argument is
    set to 0 if there is no data in the buffer.

161  –  $GET UNWIND ENTRY INFO (Integrity servers Only)

    Gets fixed-up unwind entry information.

    Format

      SYS$GET_UNWIND_ENTRY_INFO  pc, get_ue_block, name

    C Prototype

      int SYS$GET_UNWIND_ENTRY_INFO  (unsigned __int64 pc, void

                                     *get_ue_block, void *name);

161.1  –  Arguments

 pc

    OpenVMS usage: PC value
    type:          quadword (unsigned)
    access:        read only
    mechanism:     by value
    Input quadword, target PC (that is, the PC for a code region the
    user wants unwind information for).

 get_ue_block

    OpenVMS usage: unwind_entry_data_block
    type:          quadword (unsigned)
    access:        write
    mechanism:     by reference
    Address of a 4-quadword block to be filled in. That is, input the
    address of a 4 quadword block and, on successful returned status,
    that block will be updated with the following information:

    o  code_start_va - Output quadword, the process virtual starting
       c unwind region containing the input IP.

    o  code_end_va - Output quadward, the process virtual ending code
       address of the unwind region containing the input IP.

    o  uib_start_va - Output quadword, the process virtual address of
       the UIB for the unwind region containing the input IP.

    o  gp_value - Output quadword, the GP value for this code region.

 name

    OpenVMS usage: pseudo-image-name
    type:          character-code-text-string
    access:        modify
    mechanism:     by descriptor-fixed-length string descriptor
    Optional, that is, may be zero. If the name parameter is
    specified and if a name was registered for the unwind region,
    then the descriptor pointer and length are updated to point to
    that stored name. Note that if the name parameter is specified
    but no name exists in the unwind tables, then the name descriptor
    is updated to zero length.

162  –  $GET USER CAPABILITY (Alpha and Integrity servers)

    On Alpha and Integrity server systems, reserves a user
    capability, indicating to other processes that the resource is
    in use.

    This service accepts 64-bit addresses.

    Format

      SYS$GET_USER_CAPABILITY   cap_num [,select_num] [,select_mask]

                                [,prev_mask] [,flags]

    C Prototype

      int sys$get_user_capability  (*cap_num, int *select_num, struct

                                   _generic_64 *select_mask, struct

                                   _generic_64 *prev_mask, struct

                                   _generic_64 *flags);

162.1  –  Arguments

 cap_num

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Capability number to be reserved by the calling kernel thread.
    This number can range from 1 to 16 for an explicit request, or
    the symbolic constant CAP$K_GET_FREE_CAP can be specified to
    get the next available user capability. The cap_num argument is
    the 32- or 64-bit address of the longword containing the user
    capability number or symbolic constant.

 select_num

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The number of the user capability selected by the service
    call. The select_num argument is the 32- or 64-bit address of
    a longword into which the system writes the user capability
    number. For an explicit numeric request, the value returned in
    this longword will match that specified in cap_num; otherwise,
    this cell contains the next available user capability.

 select_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    A quadword bit mask with a single bit position set, reflecting
    the user capability selected by the service. The select_
    mask argument is the 32- or 64-bit address of a quadword into
    which the system writes the selected user capability bit mask.
    This bit mask is the most efficient method for indicating the
    reserved user capability with the $CPU_CAPABILITIES and $PROCESS_
    CAPABILITIES services.

 prev_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The previous user capability reservation mask before execution
    of this service call. The prev_mask argument is the 32- or 64-bit
    address of a quadword into which the service writes a quadword
    bit mask specifying the previously reserved user capabilities
    taken from the global cell SCH$GQ_RESERVED_USER_CAPS.

 flags

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Options selected for the user capability reservation. The flags
    argument is a quadword bit vector wherein a bit corresponds to an
    option.

    Each option (bit) has a symbolic name, which the $CAPDEF macro
    defines. The flags argument is constructed by performing a
    logical OR operation using the symbolic names of each desired
    option.

    At this time, all bits are Reserved to VSI and must be 0.

163  –  $GOTO UNWIND (Alpha Only)

    On Alpha systems, unwinds the call stack. On Integrity server
    systems, do not use this service; use $GOTO_UNWIND_64 instead.

    Format

      SYS$GOTO_UNWIND  target_invo ,target_pc ,[new_r0] ,[new_r1]

    C Prototype

      int sys$goto_unwind  (void *target_invo, void *(*(target_pc)),

                           unsigned __int64 *new_r0, unsigned

                           __int64 *new_r1);

163.1  –  Arguments

 target_invo

    OpenVMS usage:invo_handle
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    The address of a location that contains a handle for the target
    invocation.

    If you do not specify the target_invo argument, or if the handle
    value is 0, an exit unwind is initiated.

 target_pc

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    The address of a location that contains the address at which
    execution should continue in the target invocation.

    If the target_pc argument is omitted or the value is 0, a system-
    defined target PC is assumed and execution resumes at the
    location specified at the return address for the call frame of
    the target procedure invocation.

 new_r0

    OpenVMS usage:quadword_unsigned
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    The address of a location that contains the value to place in the
    saved R0 location of the mechanism argument vector. The contents
    of this location are then loaded into the processor R0 register
    at the time that execution continues in the target invocation.

    If the new_r0 argument is omitted, the contents of the processor
    R0 register at the time of the call to $GOTO_UNWIND are used.

 new_r1

    OpenVMS usage:quadword_unsigned
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a location that contains the value to place in the
    saved R1 location of the mechanism argument vector. The contents
    of the location are then loaded into the processor R1 register at
    the time that execution continues in the target invocation.

    If the new_r1 argument is omitted, the contents of the processor
    R1 register at the time of the call to $GOTO_UNWIND are used.

164  –  $GOTO UNWIND 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, unwinds the call stack.

    Format

      SYS$GOTO_UNWIND  target_invo ,target_pc ,[NewRetVal] ,

                       [NewRetVal2]

    C Prototype

      int sys$goto_unwind_64  (void *target_invo_64, void

                              *(*(target_pc_64)), unsigned_int64

                              *new_retval, unsigned_int64

                              *newretval2);

164.1  –  Arguments

 target_invo

    OpenVMS usage:invo_handle
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    The address of a location that contains a handle for the target
    invocation.

    If you do not specify the target_invo argument, or if the handle
    value is 0, the effect of the call is undefined.

 target_pc

    OpenVMS usage:address
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    The address of a location that contains the address at which
    execution should continue in the target invocation.

    If the target_pc argument is omitted or the value is 0, execution
    resumes at the location specified at the return address for the
    call frame of the target procedure invocation.

    If the target_invo argument is omitted or the value is 0, the
    target_pc argument is ignored. In this case, a system-defined
    target PC is assumed.

 NewRetVal

    OpenVMS usage:quadword_unsigned
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    The address of a location that contains the value to place in
    the saved RetVal location of the mechanism argument vector. The
    contents of this location are then loaded into RetVal at the time
    that execution continues in the target invocation.

    If the NewRetVal argument is omitted, the contents of RetVal at
    the time of the call to $GOTO_UNWIND_64 are used.

    This argument is called New_R0 in SYS$GOTO_UNWIND for
    compatibility with Alpha.

 NewRet2

    OpenVMS usage:quadword_unsigned
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    The address of a location that contains the value to place in
    the saved RetVal2 location of the mechanism argument vector. The
    contents of the location are then loaded into RetVal2 at the time
    that execution continues in the target invocation.

    If the NewRet2 argument is omitted, the contents of RetVal2 at
    the time of the call to $GOTO_UNWIND_64 are used.

    This argument is called New_R1 in SYS$GOTO_UNWIND for
    compatibility with Alpha.

165  –  $GRANTID

    Adds the specified identifier record to the rights list of the
    process or the system.

    Format

      SYS$GRANTID  [pidadr] ,[prcnam] ,[id] ,[name] ,[prvatr]

    C Prototype

      int sys$grantid  (unsigned int *pidadr, void *prcnam, struct

                       _generic_64 *id, void *name, unsigned int

                       *prvatr, unsigned int segment);

165.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) number of the process affected when
    $GRANTID completes execution. The pidadr argument is the address
    of a longword containing the PID of the process to be affected.
    You use -1 to indicate the system rights list. When pidadr is
    passed, it is also returned; therefore, you must pass it as a
    variable rather than a constant. If you specify neither pidadr
    nor prcnam, your own process is used.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Process name on which $GRANTID operates. The prcnam argument
    is the address of a character string descriptor containing the
    process name. The maximum length of the name is 15 characters.
    Because the UIC group number is interpreted as part of the
    process name, you must use pidadr to specify the rights list
    of a process in a different group. If you specify neither pidadr
    nor prcnam, your own process is used.

 id

    OpenVMS usage:rights_holder
    type:         quadword (unsigned)
    access:       modify
    mechanism:    by reference
    Identifier and attributes to be granted when $GRANTID completes
    execution. The id argument is the address of a quadword
    containing the binary identifier code to be granted in the first
    longword and the attributes in the second longword.

    Use the id argument to modify the attributes of the identifier.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The following symbols
    for each bit position are defined in the macro library ($KGBDEF):

    Bit Position           Meaning When Set

    KGB$V_DYNAMIC          Allows holders of the identifier to remove
                           it from or add it to the process rights
                           database using the DCL command SET RIGHTS_
                           LIST.
    KGB$V_NOACCESS         Makes any access rights of the identifier
                           null and void. This attribute is intended
                           as a modifier for a resource identifier or
                           the Subsystem attribute.
    KGB$V_RESOURCE         Allows holders of an identifier to charge
                           disk space to the identifier. It is used
                           only for file objects.
    KGB$V_SUBSYSTEM        Allows holders of the identifier to
                           create and maintain protected subsystems
                           by assigning the Subsystem ACE to the
                           application images in the subsystem.

    You must specify either id or name. Because the id argument is
    returned as well as passed if you specify name, you must pass it
    as a variable rather than a constant in this case.

 name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the identifier granted when $GRANTID completes execution.
    The name argument is the address of a descriptor pointing to
    the name of the identifier. The identifier is granted as it is
    created. You must specify either id or name.

 prvatr

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Previous attributes of the identifier. The prvatr argument is
    the address of a longword used to store the attributes of the
    identifier if it was previously present in the rights list. If
    you added rather than modified the identifier, prvatr is ignored.

166  –  $HASH PASSWORD

    Applies the hash algorithm you select to an ASCII password string
    and returns a quadword hash value that represents the encrypted
    password.

    Format

      SYS$HASH_PASSWORD  pwd ,alg ,[salt] ,usrnam ,hash

    C Prototype

      int sys$hash_password  (void *pwd, unsigned char alg, unsigned

                             short int salt, void *usrnam, struct

                             _generic_64 *hash);

166.1  –  Arguments

 pwd

    OpenVMS usage: char_string
    type:          character-coded text string
    access:        read only
    mechanism:     by descriptor-fixed-length string descriptor
    ASCII password string to be encrypted. The pwd argument is the
    address of a character string descriptor pointing to the ASCII
    password. The password string can contain between 1 and 32
    characters and use the uppercase characters A through Z, the
    numbers 0 through 9, the dollar sign ($),  and the underscore
    (_).

    The caller must validate the password string before calling
    $HASH_PASSWORD to ensure that only permitted characters are
    included.

 alg

    OpenVMS usage: byte_unsigned
    type:          byte (unsigned)
    access:        read only
    mechanism:     by value
    Algorithm used to hash the ASCII password string. The alg
    argument is an unsigned byte specifying the hash algorithm.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the table of recognized algorithms.

    Values ranging from 128 to 255 are reserved for customer use; the
    constant UAI$K_CUST_ALGORITHM defines the start of this range.

    You can use the UAI$_ENCRYPT and UAI$_ENCRYPT2 item codes with
    the $GETUAI system service to retrieve the primary and secondary
    password hash algorithms for a user.

 salt

    OpenVMS usage: word_unsigned
    type:          word (unsigned)
    access:        read only
    mechanism:     by value
    Value used to increase the effectiveness of the hash. The salt
    argument is an unsigned word containing 16 bits of data that is
    used by the hash algorithms when encrypting a password for the
    associated user name. The $GETUAI item code UAI$_SALT is used to
    retrieve the SALT value for a given user. If you do not specify a
    SALT value, $HASH_PASSWORD uses the value of 0.

 usrnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the user associated with the password. The usrnam
    argument is the address of a descriptor pointing to a character
    text string containing the user name. The current password
    encryption algorithm (UAI$C_PURDY_S) folds the user name into
    the ASCII password string to ensure that different users with the
    same password produce different hash values. This argument must
    be supplied for all calls to $HASH_PASSWORD but is ignored when
    using the CRC algorithm (UAI$C_AD_II).

 hash

    OpenVMS usage:quadword_unsigned
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    Output hash value representing the encrypted password. The hash
    argument is the address of an unsigned quadword to which $HASH_
    PASSWORD writes the output of the hash. If you use the UAI$C_AD_
    II algorithm, the second longword of the hash is always set to 0.

167  –  $HIBER

    Allows a process to make itself inactive but to remain known to
    the system so that it can be interrupted; for example, to receive
    ASTs.

    Format

      SYS$HIBER

    C Prototype

      int sys$hiber  (void);

167.1  –  Arguments

    None.

168  –  $ICC ACCEPT

    Responds to an incoming connection request. This call is used to
    complete an ICC connection from the server side.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_ACCEPT  conn_handle ,[accept_buf] ,[accept_len]

                      ,[user_context] ,[flags]

    C Prototype

      int sys$icc_accept  (unsigned int conn_handle, char *

                          accept_buf, unsigned int accept_len,

                          unsigned int user_context, unsigned int

                          flags);

168.1  –  Arguments

 conn_handle

    OpenVMS usage:connection_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The handle of the requested connection.

 accept_buf

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    A buffer of up to 1000 bytes of accept data that is sent to the
    source of the connection at the completion of the connection
    process.

 accept_len

    OpenVMS usage:buffer_length
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The actual number of bytes in accept_buf to be sent.

 user_context

    OpenVMS usage:user_arg
    type:          quadword (Alpha and Integrity servers)
    access:       read only
    mechanism:    by value
    A user-specified value that is subsequently returned on any
    disconnect or data events on this connection.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    ICC$M_SYNCH_MODE can be specified to indicate that the data
    transmission and reception routines $ICC_TRANSMIT, $ICC_RECEIVE,
    and $ICC_REPLY are allowed to return the status SS$_SYNCH in
    the case of synchronous completion, and that the AST will not be
    called.

169  –  $ICC CLOSE ASSOC

    Closes the application's association with ICC.

    Format

      SYS$ICC_CLOSE_ASSOC  assoc_handle

    C Prototype

      int sys$icc_close_assoc  (unsigned int assoc_handle);

169.1  –  Arguments

 assoc_handle

    OpenVMS usage:association_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The handle of the association to be closed.

170  –  $ICC CONNECT

    Establishes a connection to a remote application over an open
    association.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_CONNECT  ios_icc ,[astadr] ,[astprm] ,assoc_handle

                       ,conn_handle ,remote_assoc ,[remote_node]

                       ,[user_context] ,[conn_buf] ,[conn_buf_len]

                       ,[return_buf] ,[return_buf_len] ,[retlen_addr]

                       ,[flags]

    C Prototype

      int sys$icc_connect  (struct _ios_icc *ios_icc, void

                           (*astadr)(__unknown_params), __int64

                           astprm, unsigned int assoc_handle,

                           unsigned int *conn_handle, void

                           *remote_assoc, void *remote_node, unsigned

                           int user_context, char *conn_buf, unsigned

                           int conn_buf_len, char *return_buf,

                           unsigned int return_buf_len, unsigned int

                           *retlen_addr, unsigned int flags);

170.1  –  Arguments

 ios_icc

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    I/O status block:

                           +2                       0
    -------------------------------------------------
    |       Undefined       |   Completion status   |
    -------------------------------------------------
    |               ios_icc$l_remstat               |
    -------------------------------------------------
                           +6                      +4

    Completion status values:

    SS$_NORMAL, SS$_BUFFEROVF, SS$_EXQUOTA, SS$_INSFMEM,
    SS$_IVBUFLEN, SS$_LINKABORT, SS$_LINKDISCON, SS$_NOLOGNAM,
    SS$_NOSUCHOBJ, SS$_NOSUCHNODE, SS$_PATHLOST, SS$_REJECT,
    SS$_SSFAIL, SS$_UNREACHABLE, SS$_WRONGSTATE

    The second longword is undefined unless the completion code
    is SS$_REJECT. In this case, the application-defined rejection
    reason code is supplied by the server when $ICC_REJECT is called.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure_entry_mask
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit linkage reference (Alpha and
                  Integrity servers)
    The AST routine to be executed when the operation completes.

 astprm

    OpenVMS usage:user_arg
    type:         quadword (unsigned) (Alpha and Integrity servers)
    access:       read only
    mechanism:    by 64-bit value (Alpha and Integrity servers)
    The parameter to be passed to the AST routine.

 assoc_handle

    OpenVMS usage:association_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The handle of the association on which the connection is to be
    opened. The constant ICC$C_DFLT_ASSOC_HANDLE, if used, indicates
    that the default association is to be used (and opened if
    necessary).

 conn_handle

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    The 32-bit or 64-bit address (on Alpha and Integrity server
    systems) of a longword into which $ICC_CONNECT writes the
    connection handle of the created connection on a successful call.

 remote_assoc

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit descriptor (Alpha and Integrity
                  servers)
    An ASCII character string (31 characters maximum) specifying the
    name of the target application to connect to. Association names
    are case sensitive.

 remote_node

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit descriptor (Alpha and Integrity
                  servers)
    The name of the node where the target association resides. A
    null or blank string can be used to indicate the local node.
    If omitted (by passing zero by value), the simple clusterwide
    association registry is to be used. Each node name is a one-to-
    six character SCS node name. A comma-delimited list of nodes may
    be specified, indicating that one is to be chosen at random.

 user_context

    OpenVMS usage:user_arg
    type:          quadword (Alpha and Integrity servers)
    access:       read only
    mechanism:    by value
    A user-specified value to be subsequently returned on any
    disconnect or data events on this connection.

 conn_buf

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    A buffer of up to 1000 bytes of connection data to be sent to the
    target of the connection during the connection process.

 conn_buf_len

    OpenVMS usage:buffer_length
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The number of bytes in conn_buf to be sent.

 return_buf

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    A buffer of up to 1000 bytes in length to receive any incoming
    connection accept or reject data returned.

 return_buf_len

    OpenVMS usage:buffer_length
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The length of the supplied return_buf.

 retlen_addr

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    The 32-bit or 64-bit address (on Alpha and Integrity server
    systems) of a longword into which $ICC_CONNECT writes the actual
    length (in bytes) of any user accept or reject data returned in
    the buffer return_buf.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    ICC$M_SYNCH_MODE can be specified to indicate that the data
    transmission and reception routines $ICC_TRANSMIT, $ICC_RECEIVE,
    and $ICC_REPLY are allowed to return the status SS$_SYNCH in the
    case of synchronous completion, indicating that the AST will not
    be called.

171  –  $ICC CONNECTW

    Establishes a link between two ICC associations.

    The $ICC_CONNECTW service completes synchronously; that is, it
    returns to the caller after the server has either accepted or
    rejected the connection request.

    For asynchronous completion, use the $ICC_CONNECT service; $ICC_
    CONNECT returns to the caller as soon as the connection request
    has been sent to the server, without waiting for a response from
    the server.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_CONNECTW  ios_icc, [astadr], [astprm], assoc_handle,

                        conn_handle, remote_assoc, [remote_node],

                        [user_context], [conn_buf], [conn_buf_len],

                        [return_buf], [return_buf_len],

                        [retlen_addr], [flags]

    C Prototype

      int sys$icc_connectw  (struct _ios_icc *ios_icc, void

                            (*astadr)(__unknown_params), __int64

                            astprm, unsigned int assoc_handle,

                            unsigned int *conn_handle, void

                            *remote_assoc, void *remote_node,

                            unsigned int user_context, char

                            *conn_buf, unsigned int conn_buf_len,

                            char *return_buf, unsigned int

                            return_buf_len, unsigned int

                            *retlen_addr, unsigned int flags);

172  –  $ICC DISCONNECT

    Terminates the specified connection.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_DISCONNECT  conn_handle ,iosb ,[astadr] ,[astprm]

                          ,[disc_buf] ,[disc_buf_len]

    C Prototype

      int sys$icc_disconnect  (unsigned int conn_handle,

                              struct _iosb, *iosb, void

                              (*astadr)(__unknown_params),

                              __int64 astprm, char * disc_buf,

                              unsigned int disc_buf_len);

172.1  –  Arguments

 conn_handle

    OpenVMS usage:connection_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The ID of the connection to be disconnected.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    I/O status block:

                           +2                       0
    -------------------------------------------------
    |       Undefined       |   Completion status   |
    -------------------------------------------------
    |        Unused         |        Unused         |
    -------------------------------------------------
                           +6                      +4

    Completion status values:

    SS$_NORMAL, SS$_EXQUOTA, SS$_LINKDISCON, $ICC_REJECT

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure_entry_mask
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit linkage reference (Alpha and
                  Integrity servers)
    The AST routine to be executed when the operation completes.

 astprm

    OpenVMS usage:user_arg
    type:         quadword (unsigned) (Alpha and Integrity servers)
    access:       read only
    mechanism:    by 64-bit value (Alpha and Integrity servers)
    The parameter to be passed to the AST routine.

 disc_buf

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    A buffer of up to 1000 bytes of disconnect data to be sent to the
    partner in the connection when notifying it that disconnection is
    being initiated. Delivery of this data is not guaranteed.

 disc_buf_len

    OpenVMS usage:buffer_length
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The number of bytes in disc_buf to be sent.

173  –  $ICC DISCONNECTW

    Terminates a link between two ICC associations.

    The $ICC_DISCONNECTW service completes synchronously; that is,
    it returns to the caller after the connection has completely
    finished the disconnection request.

    For asynchronous completion, use the $ICC_DISCONNECT service;
    $ICC_DISCONNECT returns to the caller as soon as the
    disconnection request has been sent to the transport layer,
    without waiting for notification that the disconnection has
    completed.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_DISCONNECTW  conn_handle ,iosb ,[astadr] ,[astprm]

                           ,[disc_buf] ,[disc_buf_len]

    C Prototype

      int sys$icc_disconnectw  (unsigned int conn_handle,

                               struct _iosb, *iosb, void

                               (*astadr)(__unknown_params), __int64

                               astprm, char * disc_buf, unsigned int

                               disc_buf_len);

174  –  $ICC OPEN ASSOC

    Declares an application association with ICC.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_OPEN_ASSOC  assoc_handle ,[assoc_name] ,[logical_name]

                          ,[logical_table] ,[conn_event_rtn]

                          ,[disc_event_rtn] ,[recv_rtn]

                          ,[maxflowbufcnt] ,[prot]

    C Prototype

      int sys$icc_open_assoc  (unsigned int *assoc_handle, void

                              *assoc_name, void *logical_name,

                              void *logical_table, void

                              (*conn_event_rtn)(__unknown_params),

                              void

                              (*disc_event_rtn)(__unknown_params),

                              void (*recv_rtn)(__unknown_params),

                              unsigned int maxflowbufcnt, unsigned

                              int prot);

174.1  –  Arguments

 assoc_handle

    OpenVMS usage:association_id
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    The 32-bit or 64-bit address (on Alpha and Integrity server
    systems) into which $ICC_OPEN_ASSOC writes the handle assigned
    to the opened association.

 assoc_name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit descriptor (Alpha and Integrity
                  servers)
    An ASCII character string of up to 31 characters in length
    specifying the name of the application opening the association.
    Null (0 length), and empty or blank association names are not
    allowed. If this argument is omitted (that is, a zero is passed
    in by value), it signifies that the user wants to open the
    default association. This argument is case sensitive.

 logical_name

    OpenVMS usage:logical name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit descriptor (Alpha and Integrity
                  servers)
    A logical name in a clusterwide logical name table used to
    maintain the simple association registry. The logical name
    represents the name of the service provided by the application.
    Logical names are case sensitive.

 logical_table

    OpenVMS usage:logical name table
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit descriptor (Alpha and Integrity
                  servers)
    The table containing the logical name logical_name. Logical
    name tables are converted to uppercase. Unless your application
    requires an application-specific logical name table,
    this argument should be either the default ICC Registry
    search list (ICC$REGISTRY), or the default registry table
    (ICC$REGISTRY_TABLE).

 conn_event_rtn

    OpenVMS usage:user_routine
    type:         procedure_entry_mask
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit linkage reference (Alpha and
                  Integrity servers)
    The address of the AST routine to be called for incoming connect
    events. This routine will be called in the mode of the caller.
    (No mechanism is provided for the routine to be called at a
    different mode).

    You must have a conn_event_rtn to operate as a server.

 disc_event_rtn

    OpenVMS usage:user_routine
    type:         procedure_entry_mask
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit linkage reference (Alpha and
                  Integrity servers)
    The address of the AST routine to be called for incoming
    disconnect events. This routine will be called in the mode of the
    caller. (No mechanism is provided for the routine to be called at
    a different mode). The arguments, conn_event_rtn, and disc_event_
    rtn, may reference the same routine.

 recv_rtn

    OpenVMS usage:user_routine
    type:         procedure_entry_mask
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit linkage reference (Alpha and
                  Integrity servers)
    The address of the AST routine to be called for incoming new data
    events.

    If the user provides this routine, it indicates that the
    user will supply a buffer of the size required (specified in
    an argument to the recv_rtn at each call) each time one is
    requested. If the user supplies this routine, receive calls
    should only be issued after receive events arrive and sufficient
    buffer space has been allocated to handle the incoming data.

    This routine will be called in the mode of the caller. (No
    mechanism is provided for the routine to be called at a different
    mode).

 maxflowbufcnt

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The maximum number of pending inbound messages (per connection)
    that ICC will allow the user before initiating flow control. A
    message is pending if it is being held within ICC but no receive
    call(s) are outstanding from the user.

    Default = 5 (Pass 0 to get the default)

 prot

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    This argument is ignored for non-server applications.

    The default protection scheme for this association is as follows:

    0 - access for everyone (default)
    1 - stops WORLD access
    2 - stops both WORLD and GROUP access

    Advanced access control is provided by ICC Security objects. For
    information about ICC system management and security, see the VSI
    OpenVMS System Manager's Manual.

175  –  $ICC RECEIVE

    Receives a single message over a connection.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_RECEIVE  conn_handle ,ios_icc ,[astadr] ,[astprm]

                       ,recv_buf ,recv_buf_len

    C Prototype

      sys$icc_receive  (unsigned int conn_handle, struct _ios_icc

                       *ios_icc, void (*astadr)(__unknown_params),

                       __int64 astprm, char *recv_buf, unsigned int

                       recv_buf_len);

175.1  –  Arguments

 conn_handle

    OpenVMS usage:connection_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The handle of the fully established connection.

 ios_icc

    OpenVMS usage:io_status_block
    type:         four longwords (unsigned)
    access:       write only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    I/O status block:

                           +2                       0
    -------------------------------------------------
    |       Undefined       |   Completion status   |
    -------------------------------------------------
    |     ios_icc$l_rcv_len:  recvlen               | +4
    -------------------------------------------------
    |     ios_icc$l_req_handle:  request_handle     | +8
    -------------------------------------------------
    |     ios_icc$l_reply_len:  reply_len           | +12
    -------------------------------------------------

    Completion codes:

    SS$_NORMAL, SS$_EXQUOTA, SS$_INSFMEM, SS$_LINKDISCON, SS$_BUFOVL,
    SS$_ACCVIO

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure_entry_mask
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit linkage reference (Alpha and
                  Integrity servers)
    The AST routine to be executed when the operation completes.

 astprm

    OpenVMS usage:user_arg
    type:         quadword (unsigned) (Alpha and Integrity servers)
    access:       read only
    mechanism:    by 64-bit value (Alpha and Integrity servers)
    The parameter to be passed to the AST routine.

 recv_buf

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    The 32-bit or 64-bit address (on Alpha and Integrity server
    systems) of the buffer to receive the incoming data. The length
    of this buffer is specified by the argument recv_buf_len.

 recv_buf_len

    OpenVMS usage:buffer_length
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The length (in bytes) of the buffer available to hold the
    incoming data. This value specifies the length of the buffer
    recv_buf.

    IOS_ICC Arguments:

 recvlen (output)

    OpenVMS usage:longword unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value
    This parameter is returned in the ios_icc. $ICC_RECEIVE writes
    the actual length of the incoming data message received from the
    target application (in bytes) into offset ios_icc$l_rcv_len of
    the ios_icc.

 request_handle (output)

    OpenVMS usage:request_id
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value
    This parameter is returned in the ios_icc. $ICC_RECEIVE writes
    the Request/Response handle into offset ios_icc$l_req_handle
    of the ios_icc. The request_handle argument is nonzero if the
    application is expected to reply to this message.

 reply_len (output)

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value
    This parameter is returned in the ios_icc. The $ICC_RECEIVE
    service writes the maximum length (in bytes) of the expected
    Reply message into offset ios_icc$l_reply_len of the ios_icc, if
    request_handle is nonzero.

176  –  $ICC RECEIVEW

    The Intra-Cluster Communications Receive and Wait service queues
    a receive request to the specified connection.

    The $ICC_RECEIVEW service completes synchronously; that is, it
    returns to the caller with data.

    For asynchronous completion, use the $ICC_RECEIVE service; $ICC_
    RECEIVE returns to the caller as soon as the receive request is
    queued, without waiting for data on the connection.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_RECEIVEW  conn_handle ,ios_icc ,[astadr] ,[astprm]

                        ,recv_buf ,recv_buf_len

    C Prototype

      sys$icc_receivew  (unsigned int conn_handle, struct _ios_icc

                        *ios_icc, void (*astadr)(__unknown_params),

                        __int64 astprm, char *recv_buf, unsigned int

                        recv_buf_len);

177  –  $ICC REJECT

    Refuses a connection request.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_REJECT  conn_handle, [reject_buf], [reject_buf_len],

                      [reason]

    C Prototype

      int sys$icc_reject  (unsigned int conn_handle, char *

                          reject_buf, unsigned int reject_buf_len,

                          unsigned int reason);

177.1  –  Arguments

 conn_handle

    OpenVMS usage:connection_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The handle of the requested connection.

 reject_buf

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    A buffer of up to 1000 bytes of reject data to be sent to the
    source of the connection at the completion of the rejection
    process.

 reject_buf_len

    OpenVMS usage:buffer_length
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The number of bytes in reject_buf to be sent.

 reason

    OpenVMS usage:cond_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    User-specified reject reason code to be supplied to the remote
    application.

    Default = SS$_REJECT

178  –  $ICC REPLY

    Sends a single message over a connection. This service is used
    in response to the reception of a Request Handle in a previous
    $ICC_RECEIVE system service.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_REPLY  conn_handle ,ios_icc ,[astadr] ,[astprm]

                     ,reply_buf ,reply_len

    C Prototype

      sys$icc_reply  (unsigned int conn_handle, struct _ios_icc

                     *ios_icc, void (*astadr)(__unknown_params),

                     __int64 astprm, char *reply_buf, unsigned int

                     reply_len);

178.1  –  Arguments

 conn_handle

    OpenVMS usage:connection_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The handle of the fully established connection.

 ios_icc

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       modify
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    I/O status block:

                           +2                       0
    -------------------------------------------------
    |       Undefined       |   Completion status   |
    -------------------------------------------------
    | ios_icc$l_replyto_handle:  request_handle     | +4
    -------------------------------------------------

    Completion status values:

    SS$_NORMAL, SS$_EXQUOTA, SS$_INSFMEM, SS$_LINKABORT,
    SS$_LINKDISCON

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure_entry_mask
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit linkage reference (Alpha and
                  Integrity servers)
    The AST routine to be executed when the operation completes.

 astprm

    OpenVMS usage:user_arg
    type:         quadword (unsigned) (Alpha and Integrity servers)
    access:       read only
    mechanism:    by 64-bit value (Alpha and Integrity servers)
    The parameter to be passed to the AST routine.

 reply_buf

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    The 32-bit or 64-bit address (on Alpha and Integrity server
    systems) of the buffer containing the reply data to be sent.
    The length of this buffer is specified by the argument reply_len.

 reply_len

    OpenVMS usage:buffer_length
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The length (in bytes) of the reply data to be sent over the
    connection. This value specifies the length of the buffer reply_
    buf. ICC segments larger buffers internally.

    The maximum Reply length is the smaller of the Reply buffer size
    supplied in the $ICC_RECEIVE call, or 1MB.

    IOS_ICC Argument:

 request_handle (input)

    OpenVMS usage:request_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    This parameter is passed through the ios_icc. The
    Request/Response handle from the received Transceive request
    is placed at offset ios_icc$l_replyto_handle of the ios_icc.

179  –  $ICC REPLYW

    The Intra-Cluster Communications Reply and Wait service transmits
    a single message over a connection in response to a $ICC_
    TRANSCEIVE[W] request.

    The $ICC_REPLYW service completes synchronously; that is, it
    returns to the caller when the underlying transport layer has
    released use of the reply buffer.

    For asynchronous completion, use the $ICC_REPLY service; $ICC_
    REPLY returns to the caller as soon as the transmission request
    has been queued to the transport layer, without waiting for
    notification that the transport layer has released control of
    the data buffer.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_REPLYW  conn_handle, ios_icc, [astadr], [astprm],

                      reply_buf, reply_len

    C Prototype

      sys$icc_replyw  (unsigned int conn_handle, struct _ios_icc

                      *ios_icc, void (*astadr)(__unknown_params),

                      __int64 astprm, char *reply_buf, unsigned int

                      reply_len);

180  –  $ICC TRANSCEIVE

    Sends a single message over a connection and then waits for a
    reply.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_TRANSCEIVE  conn_handle ,ios_icc ,[astadr] ,[astprm]

                          ,send_buf ,send_len

    C Prototype

      sys$icc_transceive  (unsigned int conn_handle, struct _ios_icc

                          *ios_icc, void (*astadr)(__unknown_params),

                          __int64 astprm, char *send_buf, unsigned

                          int send_len);

180.1  –  Arguments

 conn_handle

    OpenVMS usage:connection_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The handle of the fully established (open) connection.

 ios_icc

    OpenVMS usage:io_status_block
    type:         five longwords (unsigned)
    access:       modify
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    I/O status block:

                           +2                       0
    --------------------------------------------------
    |       Undefined        |   Completion status   |
    --------------------------------------------------
    |       ios_icc$l_txrcv_len: returned_data_len   | +4
    --------------------------------------------------
    |       ios_icc$a_reply_buffer: reply_buf        | +8
    |                                                | +12
    --------------------------------------------------
    |       ios_icc$l_txreply_len: reply_buf_len     | +16
    --------------------------------------------------

    Completion status values:

    SS$_NORMAL, SS$_EXQUOTA, SS$_INSFMEM, SS$_BUFOVFL, SS$_LINKABORT,
    SS$_LINKDISCON

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure_entry_mask
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit linkage reference (Alpha and
                  Integrity servers)
    The AST routine to be executed when the operation completes.

 astprm

    OpenVMS usage:user_arg
    type:         quadword (unsigned) (Alpha and Integrity servers)
    access:       read only
    mechanism:    by 64-bit value (Alpha and Integrity servers)
    The parameter to be passed to the AST routine.

 send_buf

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    The 32-bit or 64-bit address (on Alpha and Integrity server
    systems) of the buffer containing the data to be sent. The length
    of this buffer is specified by the argument send_len.

 send_len

    OpenVMS usage:buffer size
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The length (in bytes) of the data to be sent over the connection.
    This value specifies the length of the buffer send_buf.

    IOS_ICC Arguments:

 returned_data_len (output)

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value
    This parameter is passed through the ios_icc. The $ICC_TRANSCEIVE
    service writes the actual length (in bytes) of the reply data
    received into offset ios_icc$l_txrcv_len of the ios_icc. This
    value represents how much data in reply_buf was returned by the
    target application.

 reply_buf (input)

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       write only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    This parameter is passed through the ios_icc. The 32-bit or 64-
    bit address (on Alpha and Integrity server systems) of the buffer
    available to receive the incoming reply message is placed in
    offset ios_icc$a_reply_buffer of the ios_icc.

 reply_buf_len (input)

    OpenVMS usage:buffer_size
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    This parameter is passed through the ios_icc. The length (in
    bytes) of the buffer to receive the reply message. This value
    specifies the length of the buffer reply_buf. This value is
    placed in offset ios_icc$l_txreply_len of the ios_icc.

181  –  $ICC TRANSCEIVEW

    Sends a single message over a connection and waits for a reply.

    The $ICC_TRANSCEIVEW service completes synchronously; that is, it
    returns to the caller when the data from the reply is available.

    For asynchronous completion, use the $ICC_TRANSCEIVE service;
    $ICC_TRANSCEIVE returns to the caller when the transmit portion
    of the tranceive request has been queued to the transport layer,
    but without waiting for notification that the transport layer has
    released control of the data buffer or for the reply data from
    the receiving end of the connection.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_TRANSCEIVEW   conn_handle ,ios_icc ,[astadr] ,[astprm]

                           ,send_buf ,send_len

    C Prototype

      sys$icc_transceivew  (unsigned int conn_handle,

                           struct _ios_icc *ios_icc, void

                           (*astadr)(__unknown_params), __int64

                           astprm, char *send_buf, unsigned int

                           send_len);

182  –  $ICC TRANSMIT

    Sends a single message over a connection.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_TRANSMIT  conn_handle ,ios_icc ,[astadr] ,[astprm]

                        ,send_buf ,send_len

    C Prototype

      sys$icc_transmit  (unsigned int conn_handle, struct _ios_icc

                        *ios_icc, void (*astadr)(__unknown_params),

                        __int64 astprm, char *send_buf, unsigned int

                        send_len);

182.1  –  Arguments

 conn_handle

    OpenVMS usage:connection_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The handle of the fully established (open) connection to send the
    data over.

 ios_icc

    OpenVMS usage:ios_status_block
    type:         structure IOS_ICC
    access:       write only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    I/O status block:

                           +2                       0
    -------------------------------------------------
    |       Undefined       |   Completion status   |
    -------------------------------------------------
    |                    Unused                     |
    -------------------------------------------------
                           +6                      +4

    Completion status values:

    SS$_NORMAL, SS$_EXQUOTA, SS$_INSFMEM, SS$_LINKABORT,
    SS$_LINKDISCON

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure_entry_mask
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit linkage reference (Alpha and
                  Integrity servers)
    The AST routine to be executed when the operation completes.

 astprm

    OpenVMS usage:user_arg
    type:         quadword (unsigned) (Alpha and Integrity servers)
    access:       read only
    mechanism:    by 64-bit value (Alpha and Integrity servers)
    The parameter to be passed to the AST routine.

 send_buf

    OpenVMS usage:byte_stream
    type:         character-coded text string
    access:       read only
    mechanism:    by 32-bit or 64-bit reference (Alpha and Integrity
                  servers)
    The 32-bit or 64-bit address (on Alpha and Integrity server
    systems) of the buffer containing the data to be sent. The length
    of this buffer is specified by the argument send_len.

 send_len

    OpenVMS usage:buffer_length
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The length (in bytes) of the data to be sent over the connection.
    This value specifies the length of the buffer send_buf. The
    maximum transmission size is 1MB.

183  –  $ICC TRANSMITW

    Sends a single message over a connection.

    The $ICC_TRANSMITW service completes synchronously; that is, it
    returns to the caller when the underlying transport layer has
    released use of the Transmit buffer. This does not mean that the
    data has been received by the partner application.

    For asynchronous completion, use the $ICC_TRANSMIT service.
    The $ICC_TRANSMIT service returns to the caller as soon as the
    transmission request has been queued to the transport layer,
    without waiting for notification that the transport layer has
    released control of the data buffer.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$ICC_TRANSMITW  conn_handle ,ios_icc ,[astadr] ,[astprm]

                         ,send_buf ,send_len

    C Prototype

      sys$icc_transmitw  (unsigned int conn_handle, struct _ios_icc

                         *ios_icc, void (*astadr)(__unknown_params),

                         __int64 astprm, char *send_buf, unsigned int

                         send_len);

184  –  $IDTOASC

    Translates the specified identifier value to its identifier name.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$IDTOASC  id ,[namlen] ,[nambuf] ,[resid] ,[attrib]

                   ,[contxt]

    C Prototype

      int sys$idtoasc  (unsigned int id, unsigned short int *namlen,

                       void *nambuf, unsigned int *resid, unsigned

                       int *attrib, unsigned int *contxt);

184.1  –  Arguments

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Binary identifier value translated by $IDTOASC. The id argument
    is a longword containing the binary value of the identifier. To
    determine the identifier names of all identifiers in the rights
    database, you specify id as -1 and call $IDTOASC repeatedly until
    it returns the status code SS$_NOSUCHID. The identifiers are
    returned in alphabetical order.

 namlen

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Number of characters in the identifier name translated by
    $IDTOASC. The namlen argument is the 32- or 64-bit address (on
    Alpha and Integrity server systems) of a word containing the
    length of the identifier name written to nambuf.

 nambuf

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor (Alpha and Integrity servers)
    Identifier name text string returned when $IDTOASC completes the
    translation. The nambuf argument is the 32- or 64-bit address (on
    Alpha and Integrity server systems) of a descriptor pointing to
    the buffer in which the identifier name is written.

 resid

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Identifier value of the identifier name returned in nambuf.
    The resid argument is the 32- or 64-bit address (on Alpha and
    Integrity server systems) of a longword containing the 32-bit
    code of the identifier.

 attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Mask of attributes associated with the identifier returned in
    resid. The attrib argument is the 32- or 64-bit address (on
    Alpha and Integrity server systems) of a longword containing
    the attribute mask.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The following symbols
    for each bit position are defined in the system macro library
    ($KGBDEF):

    Bit Position           Meaning When Set

    KGB$V_DYNAMIC          Allows holders of the identifier to remove
                           it from or add it to the process rights
                           list using the DCL command SET RIGHTS_
                           LIST.
    KGB$V_NAME_HIDDEN      Allows holders of an identifier to have
                           it translated, either from binary to ASCII
                           or vice versa, but prevents unauthorized
                           users from translating the identifier.
    KGB$V_NOACCESS         Makes any access rights of the identifier
                           null and void. This attribute is intended
                           as a modifier for a resource identifier or
                           the Subsystem attribute.
    KGB$V_RESOURCE         Allows holders of an identifier to charge
                           disk space to the identifier. It is used
                           only for file objects.
    KGB$V_SUBSYSTEM        Allows holders of the identifier to
                           create and maintain protected subsystems
                           by assigning the Subsystem ACE to the
                           application images in the subsystem.

 contxt

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       modify
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Context value used when repeatedly calling $IDTOASC. The contxt
    argument is the 32- or 64-bit address (on Alpha and Integrity
    server systems) of a longword used while $IDTOASC searches for
    all identifiers. The context value must be initialized to the
    value 0, and the resulting context of each call to $IDTOASC must
    be presented to each subsequent call. After contxt is passed to
    $IDTOASC, you must not modify its value.

185  –  $IEEE SET FP CONTROL (Alpha and Integrity servers)

    On Alpha and Integrity server systems, modifies IEEE floating-
    point state and, optionally, returns the previous value.

    The service provides the mechanism to set the specified state
    bits, to clear the specified state bits, and to swap one set of
    state bits for another.

    Format

      SYS$IEEE_SET_FP_CONTROL  [clrmsk] ,[setmsk] ,[prvmsk]

    C Prototype

      int sys$ieee_set_fp_control  (struct _ieee *clrmsk, struct

                                   _ieee *setmsk, struct _ieee

                                   *prvmsk);

185.1  –  Arguments

 clrmsk

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a quadword bit mask to be cleared in the IEEE
    floating-point control register.

    The $IEEEDEF macro defines symbols for the floating-point
    control register. The following table shows the symbols, their
    corresponding masks, and their meaning:

    Table SYS-21 Format of the IEEE Floating-Point Control Register
                 (Alpha and Integrity servers)

    Symbol                 Mask    Meaning

    IEEE$M_TRAP_ENABLE_    2       Enable invalid operation exception
    INV
    IEEE$M_TRAP_ENABLE_    4       Enable divide by 0 exception
    DZE
    IEEE$M_TRAP_ENABLE_    8       Enable overflow exception
    OVF
    IEEE$M_TRAP_ENABLE_    10      Enable underflow exception
    UNF
    IEEE$M_TRAP_ENABLE_    20      Enable inexact exception
    INE
    IEEE$M_TRAP_ENABLE_    40      Enable denormal operand exception
    DNOE
    IEEE$M_MAP_DNZ         2000    Denormal operands are mapped to
                                   0.0
    IEEE$M_MAP_UMZ         4000    Underflow results are mapped to
                                   0.0
    IEEE$M_INHERIT         8000    Inherit FP state on thread create
    IEEE$M_STATUS_INV      20000   Invalid operation
    IEEE$M_STATUS_DZE      40000   Divide by 0
    IEEE$M_STATUS_OVF      80000   Overflow
    IEEE$M_STATUS_UNF      100000  Underflow
    IEEE$M_STATUS_INE      200000  Inexact
    IEEE$M_STATUS_DNO      400000  Denormal operand

 setmsk

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a quadword bit mask to be set in the IEEE floating-
    point control register.

    See the clrmsk argument for the format of the IEEE floating-point
    control register.

 prvmsk

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of a quadword to receive the previous value of the IEEE
    floating-point control register.

186  –  $IEEE SET PRECISION MODE (Integrity servers Only)

    On Integrity server systems, modifies the IEEE precision mode
    and, optionally, returns the previous value.

    Format

      SYS$IEEE_SET_PRECISION_MODE  new_value , [*prev_value]

    C Prototype

      int sys$ieee_set_rounding_mode  (int new_value, int

                                      *prev_value);

186.1  –  Arguments

 new_value

    OpenVMS usage:IEEE precision mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The new value can be one of the following:

    Symbol                          ValueMeaning

    IEEE$C_PM_NO_CHANGE             -1   No change. Just get previous
                                         value
    IEEE$C_PM_SINGLE                0    Single Precision
    IEEE$C_PM_DOUBLE                2    Double Precision
    IEEE$C_PM_DOUBLE_EXTENDED       3    Double-Extended Precision

 prev_value

    OpenVMS usage:IEEE precision mode
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    The previous value is a pointer to a return value that can be one
    of the last three items from the table showing new values.

187  –  $IEEE SET ROUNDING MODE (Integrity servers Only)

    On Integrity server systems, modifies the IEEE rounding mode and,
    optionally, returns the previous value.

    Format

      SYS$IEEE_SET_ROUNDING_MODE  new_value , [*prev_value]

    C Prototype

      int sys$ieee_set_rounding_mode  (int new_value, int

                                      *prev_value); ,

187.1  –  Arguments

 new_value

    OpenVMS usage:IEEE rounding mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The new value can be one of the following:

    Symbol              ValueMeaning

    IEEE$C_RM_NO_       -1   No change. Just get previous value
    CHANGE
    IEEE$C_RM_NEAREST   0    Nearest (or even)
    IEEE$C_RM_DOWN      1    -Infinity (down)
    IEEE$C_RM_UP        2    +Infinity (up)
    IEEE$C_RM_TRUNCATE  3    Zero (truncate/chop)

 prev_value

    OpenVMS usage:IEEE rounding mode
    type:         longword (unsigned)
    access:        write only
    mechanism:    by reference
    The previous value is a pointer to a return value that can be one
    of the last four items from the table showing new values.

188  –  $INIT SYS ALIGN FAULT REPORT (Alpha and Integrity servers)

    On Alpha and Integrity server systems, initializes system process
    alignment fault reporting.

    This service accepts 64-bit addresses.

    Format

      SYS$INIT_SYS_ALIGN_FAULT_REPORT  match_table ,buffer_size

                                       ,flags

    C Prototype

      int sys$init_sys_align_fault_report  (void *match_table, int

                                           buffer_size, unsigned int

                                           flags);

188.1  –  Arguments

 match_table

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       read
    mechanism:    by 32-bit or 64-bit reference
    Describes the system fault match table. The match_table argument
    is the 32-bit or 64-bit virtual address of an array of longwords
    describing the system fault match table. The first longword is
    the number of match entries; the remaining longwords are the
    match entries.

    The match table is used to restrict the number of alignment
    faults reported. Each entry in the table is a bit mask divided
    into three groups: mode bits, program counter (PC) space bits,
    and virtual address (VA) space bits.

    The following table lists the symbols that can be used to define
    these bits:

    Bit Type       Symbols

    Mode bits      AME$M_KERNEL_MODE  Kernel mode
                   AME$M_EXEC_MODE    Executive mode
                   AME$M_SUPER_MODE   Supervisor mode
                   AME$M_USER_MODE    User mode
    Program        AME$M_USER_PC      PC in User space
    counter bits
                   AME$M_SYSTEM_PC    PC in System space
    Virtual        AME$M_SYSTEM_VA    VA in System space
    address bits
                   AME$M_USER_VA_P0   VA in User P0 space
                   AME$M_USER_VA_P1   VA in User P1 space
                   AME$M_USER_VA_P2   VA in User P2 space

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the data structure of the match table.

    When an alignment fault occurs, a fault bit mask is created with
    one bit set in each group. The alignment fault handler then
    compares this fault bit mask against each entry in the match
    table. If the fault bit mask is a subset of an entry in the match
    table, the fault is reported.

 buffer_size

    OpenVMS usage:byte count
    type:         longword (signed)
    access:       read
    mechanism:    by value
    The number of bytes to allocate, from nonpaged pool, to save the
    alignment fault data. The buffer you allocate must be sufficient
    to accommodate one data item of the size specified in the flags
    argument.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag bit mask specifying options for the $GET_SYS_ALIGN_FAULT_
    DATA operation.

    If the flags argument is 0, data items of size AFR$K_VMS_LENGTH
    will be returned. If the flags argument is AFR$M_USER_INFO, the
    user name and image name are added to each data item and they
    are returned in a buffer of length AFR$K_EXTENDED_LENGTH. If the
    user name and image name are not available, an empty string is
    returned in the data item.

189  –  $INIT VOL

    Formats a disk or magnetic tape volume and writes a label on the
    volume. At the end of initialization, the disk is empty except
    for the system files containing the structure information. All
    former contents of the volume are lost.

    Format

      SYS$INIT_VOL  devnam, volnam [,itmlst]

    C Prototype

      int sys$init_vol  (void *devnam, void *volnam, void *itmlst);

189.1  –  Arguments

 devnam

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by descriptor
    Name of the device on which the volume is physically mounted. The
    descriptor must point to the device name, a character string of 1
    to 64 characters. The device name can be a physical device name
    or a logical name; if it is a logical name, it must translate to
    a physical name.

    The device does not have to be currently allocated; however,
    allocating the device before initializing it is recommended.

 volnam

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by descriptor
    Identification to be encoded on the volume. The descriptor
    must point to the volume name, a character string of 1 to 12
    characters. For a disk volume name, you can specify a maximum
    of 12 ANSI characters; for a magnetic tape volume name, you can
    specify a maximum of 6 ANSI "a" characters.

    Any valid ANSI "a" characters can be used; these include numbers,
    uppercase letters, and any one of the following nonalphanumeric
    characters:

    ! " % ' ( ) * + , - . / : ; < = >

    VSI strongly recommends that a disk volume name consist of only
    alphanumeric characters, dollar signs ($),  underscores (_), and
    hyphens (-).

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying options that can be used when initializing
    the volume. The itmlst argument is the address of a list of item
    descriptors, each of which describes one option. The list of item
    descriptors is terminated by a longword of 0.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

190  –  $IO CLEANUP (Alpha and Integrity servers)

    On Alpha and Integrity server systems, returns all resources
    allocated by $IO_SETUP.

    This service accepts 64-bit addresses.

    Format

      SYS$IO_CLEANUP  fandle

    C Prototype

      int sys$io_cleanup  (unsigned __int64 fandl);

190.1  –  Arguments

 fandle

    OpenVMS usage:fandle
    type:         64-bit integer (unsigned)
    access:       read only
    mechanism:    by value
    A fandle, passed by value, returned by a previous call to $IO_
    SETUP.

191  –  $IO FASTPATH (Alpha and Integrity servers)

    On Alpha and Integrity server systems, provides the ability to
    control the set of Fast Path devices and their assignment to CPUs
    enabled for Fast Path use.

    Format

      SYS$IO_FASTPATH  efn, cpu_mask,function_code, [iosb], [astadr],

                       [astprm] [,[mask_length]]

    C Prototype

      int sys$io_fastpath  (unsigned int efn, UINT32_PQ cpu_mask,

                           int function_code, struct_iosb *iosb,

                           void (*astadr)(__unknown_params), __int64

                           astprm, ...) ;)

191.1  –  Arguments

 efn

    OpenVMS usage:integer
    type:         longword bit mask (unsigned)
    access:       read
    mechanism:    by value
    Number of the event flag to be set when the IO_FASTPATH(W)
    operation completes. The efn argument is a longword containing
    the number of the event flag.

 cpu_mask

    OpenVMS usage:bitmap
    type:         quadword bitmap
    access:       read
    mechanism:    by 32- or 64-bit reference
    The cpu_mask argument specifies a set of CPUs to be operated
    upon.

 function_code

    OpenVMS usage:integer
    type:         longword (unsigned)
    access:       read
    mechanism:    by value
    The function_code specifies the operation to be performed. Note
    that there is currently only one function code:

    FP$K_BALANCE_PORTS - Distribute Fast Path ports across CPUs.

 mask_length

    OpenVMS usage:integer
    type:         longword length
    access:       read
    mechanism:    by value
    The mask_length specifies the length of the cpu_mask bitmap in
    bytes. If the mask_length is not supplied or is specified as
    zero, a length of 4 bytes is used.

192  –  $IO FASTPATHW

    On Alpha and Integrity server systems, performs operations on the
    set of Fast Path devices and CPUs enabled for Fast Path use.

    The $IO_FASTPATHW system service is functionally equivalent to
    the $IO_FASTPATH service except that it completes synchronously.
    That is, it returns after the operation is complete.

    Format

      SYS$IO_FASTPATHW  efn, cpu_mask, function_code, [iosb],

                        [astadr], [astprm], [,[mask_length]]

    C Prototype

      int sys$io_fastpathw  (unsigned int efn, UINT32_PQ cpu_mask,

                            int function_code, struct_iosb *iosb,

                            void (*astadr)(_ _unknown_params),

                            _ _int64 astprm, ...) ;)

193  –  $IO PERFORM (Alpha and Integrity servers)

    On Alpha and Integrity server systems, starts the Fast I/O
    operation. The $IO_PERFORM service completes asynchronously.
    For synchronous completion, use the Perform Fast I/O and Wait
    ($IO_PERFORMW) service.

    This service accepts 64-bit addresses.

    Format

      SYS$IO_PERFORM  fandle ,chan ,iosadr ,bufadr ,buflen ,devdata

    C Prototype

      int sys$io_perform  (unsigned __int64 fandl, unsigned short int

                          chan, struct _iosa *iosadr, void *bufadr,

                          unsigned __int64 buflen, unsigned __int64

                          devdata);

193.1  –  Arguments

 fandle

    OpenVMS usage:fandle
    type:         64-bit integer (unsigned)
    access:       read only
    mechanism:    by value
    A fandle returned by a previous call to $IO_SETUP.

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read
    mechanism:    by value
    Software I/O channel number.

 iosadr

    OpenVMS usage:address
    type:         address
    access:       read only
    mechanism:    by value
    Address of the I/O Status Area (IOSA). This value cannot be 0;
    that is, an IOSA is required. The iosadr must be aligned to a
    quadword boundary.

 bufadr

    OpenVMS usage:char_string
    type:         address
    access:       read only
    mechanism:    by value
    The process buffer address. Must be aligned on a 512-byte
    boundary.

 buflen

    OpenVMS usage:byte count
    type:         64-bit integer
    access:       read only
    mechanism:    by value
    The byte count for the I/O. The buflen argument must be a
    multiple of 512 bytes. Drivers have further limitations on the
    maximum size of an I/O request.

 devdata

    OpenVMS usage:address
    type:         pointer or integer
    access:       read only
    mechanism:    by value
    A hardware integer passed unchanged to the driver. For disk
    devices, this is the media address for the transfer; that is,
    the virtual block number (VBN) for virtual I/O functions or
    the logical block number (LBN) for logical I/O functions. This
    argument is ignored for tape devices.

    For drivers with complex parameters, devdata would be the address
    of a descriptor or buffer specific to the device and function and
    would be documented with the driver.

194  –  $IO PERFORMW (Alpha and Integrity servers)

    On Alpha and Integrity server systems, starts a Fast I/O
    operation. The $IO_PERFORMW service completes synchronously;
    that is, it returns to the caller after performing the Fast I/O
    operation.

    In all other respects, $IO_PERFORMW is identical to $IO_PERFORM.
    For all other information about the IO_PERFORMW service, see the
    help for $IO_PERFORM.

    Format

      SYS$IO_PERFORMW  fandle ,chan ,iosadr ,bufadr ,buflen ,devdata

    C Prototype

      int sys$io_performw  (unsigned __int64 fandl, unsigned short

                           int chan, struct _iosa *iosadr, void

                           *bufadr, unsigned __int64 buflen, unsigned

                           __int64 devdata);

195  –  $IO SETUP (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allocates resources for
    Fast I/O.

    This service accepts 64-bit addresses.

    Format

      SYS$IO_SETUP  func ,bufobj ,iosobj ,astadr ,flags

                    ,return_fandle

    C Prototype

      int sys$io_setup  (unsigned int func, struct _generic_64

                        *bufobj, struct _generic_64 *iosobj, void

                        (*astadr)(struct _iosa *), unsigned int

                        flags, unsigned __int64 *return_fandle);

195.1  –  Arguments

 func

    OpenVMS usage:function_code
    type:         longword
    access:       read only
    mechanism:    by value
    I/O function code. Must be one of the following:

    o  IO$_READVBLK

    o  IO$_WRITEVBLK

    o  IO$_READLBLK

    o  IO$_WRITELBLK

    Various function modifiers are supported, depending on the
    device and driver. Disk drivers support IO$M_NOVCACHE and
    IO$M_DATACHECK. Some tape devices support IO$M_REVERSE. Illegal
    modifiers are detected by the $IO_PERFORM(W) service.

 bufobj

    OpenVMS usage:buffer object
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Handle describing the buffer object that contains the user's
    buffer. This identifier cannot be 0.

 iosobj

    OpenVMS usage:object handle
    type:         vector longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Buffer object handle describing the buffer object that contains
    the I/O Status Area (IOSA). This might or might not be the same
    identifier as the bufobj argument. This identifier cannot be 0.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Completion AST routine address (0, if none). There is no
    AST parameter argument. When the AST routine is called, the AST
    parameter will be the address of the IOSA for the operation.
    Applications can store data in the IOSA at offset IOSA$IH_
    CONTEXT.

 flags

    OpenVMS usage:mask_longword
    type:         64-bit integer (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask. The flags argument is a bit vector in which each bit
    corresponds to a flag. Flags are defined in the module IOSADEF.

    The following table describes the flags that are valid for the
    $IO_SETUP service:

    Flag            Description

    FIO$M_          This is a high priority I/O; that is, it is
    EXPEDITE        to be given preferential treatment by the I/O
                    subsystem. Use of this bit requires ALTPRI or
                    PHY_IO privilege.

    FIO$M_AST_      The AST procedure does not use, or call any
    NOFLOAT         procedure that uses, any floating-point
                    registers. This is a performance option. If
                    set, AST delivery will neither save nor restore
                    floating-point registers. Caution: Use of
                    floating-point registers when FIO$M_AST_NOFLOAT
                    has been specified can cause unpredictable,
                    difficult to detect, error conditions.

    All other bits in the flags argument are reserved for future use
    by VSI and should be specified as 0.

 return_fandle

    OpenVMS usage:fandle
    type:         64-bit integer (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Address of an aligned quadword to receive the fandle for this I/O
    operation.

196  –  $JOIN RM

    Adds a new Resource Manager (RM) participant to a transaction.

    Format

      SYS$JOIN_RM  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,rm_id

                   [,[tid] ,[part_name] ,[rm_context] ,[timout]

                   ,[bid]]

    C Prototype

      int sys$join_rm  (unsigned int efn, unsigned int flags, struct

                       _iosb *iosb, void (*astadr)(__unknown_params),

                       int astprm, unsigned int rm_id,...);

196.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for these option
    flags described in $JOIN_RM Option Flags. All undefined bits must
    be 0. If this argument is omitted, no flags are used.

    Table SYS-22 $JOIN_RM Option Flags

    Flag Name          Description

    DDTM$M_            Set this flag to specify that the new RM
    COORDINATOR        participant is to be a coordinator of the
                       transaction on this node.
    DDTM$M_SYNC        Specifies successful synchronous completion
                       by returning SS$_SYNCH. When SS$_SYNCH is
                       returned, the AST routine is not called, the
                       event flag is not set, and the I/O status
                       block is not filled in.

 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.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the I/O status block diagram.

 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 $JOIN_RM service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The AST parameter that is passed to the AST routine specified by
    the astadr argument.

 rm_id

    OpenVMS usage:identifier
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The identifier of the RMI with which the new RM participant is
    associated. This identifies:

    o  Types of event that are to be reported to the new RM
       participant.

    o  Event handler to which these event reports are to be
       delivered, and the access mode in which its ASTs are to be
       fired.

    o  Minimum access mode that the new RM participant must be in to
       acknowledge one of these event reports by calling $ACK_EVENT.

    o  Whether or not the DECdtm transaction manager may log
       information about the new RM participant.

 tid

    OpenVMS usage:trans_id
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    The identifier (TID) of the transaction to which the new RM
    participant is to be added.

    If this argument is omitted (the default) or its value is zero,
    $JOIN_RM adds an RM participant to the default transaction of the
    calling process.

 part_name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    The name of the new RM participant.

    Used by recoverable resource managers to specify the RM
    participant to use in a subsequent call to $GETDTI or $SETDTI
    during recovery.

    This argument has no effect if the RMI is volatile. If this
    argument is omitted (the default) or its value is zero, the name
    of the new RM participant is the same as that of the RMI with
    which it is associated.

    The string passed in this argument can be no longer than 32
    characters.

    To ensure smooth operation in a mixed-network environment,
    refer to the chapter entitled Managing DECdtm Services in the
    VSI OpenVMS System Manager's Manual, for information on defining
    node names.

 rm_context

    OpenVMS usage:userarg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The context associated with the new RM participant. This is
    passed in the event reports subsequently delivered to the new
    RM participant.

    If this argument is omitted (the default) or is zero, the context
    associated with the new RM participant is the same as that of the
    RMI with which it is associated.

 timout

    OpenVMS usage:date_time
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Reserved to VSI.

 bid

    OpenVMS usage:branch_id
    type:         octaword (unsigned)
    access:       write only
    mechanism:    by reference
    The identifier of an authorized branch (BID) that may be added
    to the transaction by a subsequent call to $START_BRANCH on the
    same node as that of the RMI. This argument is ignored if the
    DDTM$M_COORDINATOR flag is clear in the flags argument. The call
    to $START_BRANCH should specify the node of the RMI for the tm_
    name argument.

197  –  $JOIN RMW

    Adds a new Resource Manager (RM) participant to a transaction.

    $JOIN_RMW always waits for the request to complete before
    returning to the caller. Other than this, it is identical to
    $JOIN_RM.

    Format

      SYS$JOIN_RMW  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,rm_id

                    [,[tid] ,[part_name] ,[rm_context] ,[timout]

                    ,[bid] ]

    C Prototype

      int sys$join_rmw  (unsigned int efn, unsigned int

                        flags, struct _iosb *iosb, void

                        (*astadr)(__unknown_params), int

                        astprm, unsigned int rm_id,...);

198  –  $LCKPAG

    Locks a page or range of pages in memory. The specified virtual
    pages are forced into the working set and then locked in memory.
    A locked page is not swapped out of memory if the working set of
    the process is swapped out. These pages are not candidates for
    page replacement and in this sense are locked in the working set
    as well.

    Format

      SYS$LCKPAG  inadr ,[retadr] ,[acmode]

    C Prototype

      int sys$lckpag  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode);

198.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Starting and ending virtual addresses of the range of pages to be
    locked. The inadr argument is the address of a 2-longword array
    containing, in order, the starting and ending process virtual
    addresses. Only the virtual page number portion of each virtual
    address is used; the low-order byte-within-page bits are ignored.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Starting and ending process virtual addresses of the pages that
    $LCKPAG actually locked. The retadr argument is the address of
    a 2-longword array containing, in order, the starting and ending
    process virtual addresses.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be associated with the pages to be locked. The
    acmode argument is a longword containing the access mode. The
    $PSLDEF macro defines the four access modes.

    The most privileged access mode used is the access mode of the
    caller. For the $LCKPAG service to complete successfully, the
    resultant access mode must be equal to or more privileged than
    the access mode already associated with the pages to be locked.

199  –  $LCKPAG 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, locks a range of pages in
    memory. The specified virtual pages are forced into the working
    set and then locked in memory. A locked page is not swapped out
    of memory if the working set of the process is swapped out. These
    pages are not candidates for page replacement and, in this sense,
    are locked in the working set as well.

    This service accepts 64-bit addresses.

    Format

      SYS$LCKPAG_64  start_va_64 ,length_64 ,acmode ,return_va_64

                     ,return_length_64

    C Prototype

      int sys$lckpag_64  (void *start_va_64, unsigned __int64

                         length_64, unsigned int acmode, void

                         *(*(return_va_64)), unsigned __int64

                         *return_length_64);

199.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the pages to be locked. The
    specified virtual address will be rounded down to a CPU-specific
    page boundary.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be locked. The specified
    length will be rounded up to a CPU-specific page boundary so that
    it includes all CPU-specific pages in the requested range.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the pages to be locked. The acmode
    argument is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. For the $LCKPAG_64 service to complete successfully, the
    resultant access mode must be equal to or more privileged than
    the access mode already associated with the pages to be locked.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the pages locked in memory.
    The return_va_64 argument is the 32- or 64-bit virtual address of
    a naturally aligned quadword into which the service returns the
    virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length of the virtual address
    range locked in bytes.

200  –  $LKWSET

    Locks a range of pages in the working set; if the pages are not
    already in the working set, it brings them in and locks them. A
    page locked in the working set does not become a candidate for
    replacement.

    Format

      SYS$LKWSET  inadr ,[retadr] ,[acmode]

    C Prototype

      int sys$lkwset  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode);

200.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Starting and ending virtual addresses of the range of pages to be
    locked in the working set. The inadr argument is the address of
    a 2-longword array containing, in order, the starting and ending
    process virtual addresses. Only the virtual page number portion
    of each virtual address is used; the low-order byte-within-page
    bits are ignored.

    On Alpha and Integrity server systems, if the first address in
    the 2-longword array is within an image mapped to your process,
    the entire image specified by the address is locked in the
    working set.

    Be sure to check calls to the SYS$LKWSET and SYS$LKWSET_64 system
    services for correct arguments. This affects only process-based
    code running above IPL2. Compiler and linker differences might
    cause your program layout to change from Alpha, resulting in
    incorrectly calculated starting and ending addresses for calls
    to SYS$LKWSET and SYS$LKWSET_64. Calling these services with
    incorrect arguments and then executing this code above IPL2 could
    cause PGFIPLHI bugchecks. Note that SYS$LKWSET and SYS$LKWSET_
    64 automatically lock linker-generated short data sections
    associated with code sections locked in the working set.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Starting and ending process virtual addresses of the range of
    pages actually locked by $LKWSET. The retadr argument is the
    address of a 2-longword array containing, in order, the starting
    and ending process virtual addresses.

    On Alpha and Integrity server systems, if the inadr argument
    specifies an address within an image mapped to your process,
    retadr specifies only one range of pages locked in the working
    set. Many ranges of pages might be locked.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be associated with the pages to be locked. The
    acmode argument is a longword containing the access mode. The
    $PSLDEF macro defines the four access modes.

    The most privileged access mode used is the access mode of the
    caller. For the $LKWSET service to complete successfully, the
    resultant access mode must be equal to or more privileged than
    the access mode already associated with the pages to be locked.

201  –  $LKWSET 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, locks a range of virtual
    addresses in the working set. If the pages are not already in
    the working set, the service brings them in and locks them. A
    page locked in the working set does not become a candidate for
    replacement.

    This service accepts 64-bit addresses.

    Format

      SYS$LKWSET_64  start_va_64 ,length_64 ,acmode ,return_va_64

                     ,return_length_64

    C Prototype

      int sys$lkwset_64  (void *start_va_64, unsigned __int64

                         length_64, unsigned int acmode, void

                         *(*(return_va_64)), unsigned __int64

                         *return_length_64);

201.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the pages to be locked in the
    working set. The specified virtual address will be rounded down
    to a CPU-specific page boundary.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be locked in the working
    set. The specified length will be rounded up to a CPU-specific
    page boundary so that it includes all CPU-specific pages in the
    requested range.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the pages to be locked. The acmode
    argument is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. For the $LKWSET_64 service to complete successfully, the
    resultant access mode must be equal to or more privileged than
    the access mode already associated with the pages to be locked.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the pages locked in the
    working set. The return_va_64 argument is the 32- or 64-bit
    virtual address of a naturally aligned quadword into which the
    service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the virtual address range locked in the working
    set. The return_length_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword into which the service
    returns the length of the virtual address range in bytes.

202  –  $MGBLSC

    Establishes a correspondence between pages (maps) in the virtual
    address space of the process and physical pages occupied by a
    global section.

    Format

      SYS$MGBLSC  inadr ,[retadr] ,[acmode] ,[flags] ,gsdnam ,[ident]

                  ,[relpag]

    C Prototype

      int sys$mgblsc  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode, unsigned int

                      flags, void *gsdnam, struct _secid *ident,

                      unsigned int relpag);

202.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Starting and ending virtual addresses into which the section is
    to be mapped. The inadr argument is the address of a 2-longword
    array containing, in order, the starting and ending process
    virtual addresses. Only the virtual page number portion of each
    virtual address is used to specify which pages are to be mapped;
    the low-order byte-within-page bits are ignored for this purpose.

    The interpretation of the inadr argument depends on the setting
    of SEC$M_EXPREG in the inadr argument and whether you are
    using an Alpha or an Integrity servers system. For a complete
    description of these differences, see the VSI OpenVMS System
    Services Reference Manual.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Starting and ending process virtual addresses into which the
    section was actually mapped by $MGBLSC. The retadr argument
    is the address of a 2-longword array containing, in order, the
    starting and ending process virtual addresses.

    On Alpha and Integrity server systems, the retadr argument
    returns the starting and ending addresses of the usable range
    of addresses. This might differ from the total amount mapped.
    The retadr argument is required when the relpag argument is
    specified. If the section being mapped does not completely
    fill the last page used to map the section, the retadr argument
    indicates the highest address that actually maps the section.
    If the relpag argument is used to specify an offset into the
    section, the retadr argument reflects the offset.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be associated with the pages mapped into the
    process virtual address space. The acmode argument is a longword
    containing the access mode. The $PSLDEF macro defines symbols for
    the four access modes.

    The most privileged access mode used is the access mode of the
    caller.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying options for the operation. The flags
    argument is a longword bit vector wherein a bit when set
    specifies the corresponding option.

    The $SECDEF macro defines symbolic names for the flag bits. You
    construct the flags argument by specifying the symbolic names of
    each desired option in a logical OR operation.

    The following table describes each flag option:

    Flag Option   Description

    SEC$M_WRT     Map the section with read/write access. By default,
                  the section is mapped with read-only access. If
                  SEC$M_WRT is specified and the section is not copy-
                  on-reference, write access is required.

    SEC$M_SYSGBL  Map a system global section. By default, the
                  section is a group global section.

    SEC$M_EXPREG  Map the section into the first available virtual
                  address range. By default, the section is mapped
                  into the range specified by the inadr argument.

                  See the inadr argument description for a complete
                  explanation of how to set the SEC$M_EXPREG flag.
    SEC$M_        Flag that must be set when a PFN-mapped section
    UNCACHED      is created if this section must be treated as
                  uncached memory. Flag is ignored on Alpha systems;
                  it applies only to Integrity server systems.

 gsdnam

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the global section. The gsdnam argument is the address of
    a character string descriptor pointing to this name string.

    For group global sections, the operating system interprets the
    group UIC as part of the global section name; thus, the names
    of global sections are unique to UIC groups. Further, all global
    section names are implicitly qualified by their identification
    fields.

    You can specify any name from 1 to 43 characters. All processes
    mapping to the same global section must specify the same name.
    Note that the name is case sensitive.

    Use of characters valid in logical names is strongly encouraged.
    Valid values include alphanumeric characters, the dollar sign
    ($), and the underscore (_). If the name string begins with an
    underscore (_), the underscore is stripped and the resultant
    string is considered to be the actual name. Use of the colon (:)
    is not permitted.

    Names are first subject to a logical name translation, after
    the application of the prefix GBL$ to the name. If the result
    translates, it is used as the name of the section. If the
    resulting name does not translate, the name specified by the
    caller is used as the name of the section.

    Additional information on logical name translations and
    on section name processing is available in the VSI OpenVMS
    Programming Concepts Manual.

 ident

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Identification value specifying the version number of a global
    section and, for processes mapping to an existing global section,
    the criteria for matching the identification. The ident argument
    is the address of a quadword structure containing three fields.

    The first longword specifies, in the low-order two bits, the
    matching criteria. Their valid values, the symbolic names by
    which they can be specified, and their meanings are as follows:

    Value/Name      Match Criteria

    0 SEC$K_        Match all versions of the section.
    MATALL
    1 SEC$K_        Match only if major and minor identifications
    MATEQU          match.
    2 SEC$K_        Match if the major identifications are equal and
    MATLEQ          the minor identification of the mapper is less
                    than or equal to the minor identification of the
                    global section.

    The version number is in the second longword and contains two
    fields: a minor identification in the low-order 24 bits and a
    major identification in the high-order 8 bits.

    If you do not specify ident or specify it as the value 0 (the
    default), the version number and match control fields default to
    the value 0.

 relpag

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Relative page number within the section of the first page to be
    mapped. The relpag argument is a longword containing this number.

    On Alpha and Integrity server systems, the relpag argument is
    interpreted as an index into the section file, measured in
    pagelets for a file-backed section or CPU-specific pages for a
    PFN-mapped section.

    On Alpha, Integrity servers systems, if you do not specify relpag
    or specify it as the value 0 (the default), the global section
    is mapped beginning with the first virtual block in a file-backed
    section or the first CPU-specific page in a PFN-mapped section.

203  –  $MGBLSC 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, establishes a
    correspondence between pages in the virtual address space of
    the process and the pages occupied by a global disk file, page
    file, or demand-zero section and can map to a demand-zero section
    with shared page tables.

    This service accepts 64-bit addresses.

    Format

      SYS$MGBLSC_64  gs_name_64 ,ident_64 ,region_id_64

                     ,section_offset_64 ,length_64 ,acmode

                     ,flags ,return_va_64 ,return_length_64

                     [,start_va_64]

    C Prototype

      int sys$mgblsc_64  (void *gsdnam_64, struct _secid *ident_64,

                         struct _generic_64 *region_id_64, unsigned

                         __int64 section_offset_64, unsigned __int64

                         length_64, unsigned int acmode, unsigned int

                         flags, void *(*(return_va_64)), unsigned

                         __int64 *return_length_64,...);

203.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned 32-bit or 64-bit
    string descriptor pointing to this name string.

    You can specify any name from 1 to 43 characters. All processes
    mapping to the same global section must specify the same name.
    Note that the name is case sensitive.

    Use of characters valid in logical names is strongly encouraged.
    Valid values include alphanumeric characters, the dollar sign
    ($), and the underscore (_). If the name string begins with an
    underscore (_), the underscore is stripped and the resultant
    string is considered to be the actual name. Use of the colon (:)
    is not permitted.

    Names are first subject to a logical name translation, after
    the application of the prefix GBL$ to the name. If the result
    translates, it is used as the name of the section. If the
    resulting name does not translate, the name specified by the
    caller is used as the name of the section.

    Additional information on logical name translations and
    on section name processing is available in the VSI OpenVMS
    Programming Concepts Manual.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order two bits.

    The valid values, symbolic names by which they can be specified,
    and their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    If you specify the ident_64 argument as 0, the version number and
    match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region to map the global
    section. The file VADEF.H in SYS$STARLET_C.TLB and the $VADEF
    macro in STARLET.MLB define a symbolic name for each of the three
    default regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 section_offset_64

    OpenVMS usage:byte offset
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Offset into the global section at which to start mapping into the
    process's virtual address space.

    If a map to a global disk file section is being requested, the
    section_offset_64 argument specifies an even multiple of disk
    blocks. If a map to a global page file or demand-zero section is
    being requested, the section_offset_64 argument specifies an even
    multiple of CPU-specific pages. If zero is specified, the global
    section is mapped beginning with the first page of the section.

    If the region_id_64 argument specifies a shared page table
    region, section_offset_64 must be an even multiple of pages
    mapped by a page table page.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length, in bytes, of the desired mapping of the global disk file
    section.

    If a map to a global section is being requested, the length_64
    argument must specify an even multiple of disk blocks. If a map
    to a global page file or demand-zero section is being requested,
    the length_64 argument must specify an even multiple of CPU-
    specific pages. If zero is specified, the size of the disk file
    is used.

    If a shared page-table region is specified by the region_id_64
    argument, length_64 must be an even multiple of the number of
    bytes that can be mapped by a CPU-specific page-table page or
    must include the last page within the memory-resident global
    section.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode that is to be the owner of the pages created during
    the mapping. This is also the read access mode and, if the SEC$M_
    WRT flag is specified, the write access mode. The acmode argument
    is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. Address space cannot be created within a region that has
    a create mode associated with it that is more privileged than
    the caller's mode. The condition value SS$_IVACMODE is returned
    if the caller is less privileged than the create mode for the
    region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying options for the operation. The flags
    argument is a longword bit vector in which each bit corresponds
    to a flag. The $SECDEF macro and the SECDEF.H file define a
    symbolic name for each flag. You construct the flags argument
    by performing a logical OR operation on the symbol names for all
    desired flags.

    The following table describes each flag that is valid for the
    $MGBLSC_64 service:

    Flag          Description

    SEC$M_EXPREG  Pages are mapped into the first available space at
                  the current end of the specified region.

                  If /ALLOCATE was specified when the memory-resident
                  global section was registered in the Reserved
                  Memory Registry, virtually aligned addresses
                  after the first available space are chosen for
                  the mapping.

                  It the region_id_64 argument specifies a shared
                  page-table region, the first available space is
                  round up to the beginning of the next CPU-specific
                  page-table page.
    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.
    SEC$M_NO_     Pages cannot overmap existing address space.
    OVERMAP
    SEC$M_SHMGS   On OpenVMS Galaxy systems, create a shared-memory
                  global section.
    SEC$M_SYSGBL  The global section map is a system global section.
                  By default, the section is a group global section.
    SEC$M_WRT     Map the section with read/write access.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an attempt is made to use the SEC$M_PAGFIL flag, which applies
    only to the creation of a page-file backed section.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The process virtual address into which the global disk or page
    file section was mapped. The return_va_64 argument is the 32- or
    64-bit virtual address of a naturally aligned quadword into which
    the service returns the virtual address.

    Upon successful completion of this service, if the
    section_offset_64 argument was specified, the virtual address
    returned in the return_va_64 argument reflects the offset into
    the global section mapped such that the virtual address returned
    cannot be aligned on a CPU-specific page boundary. The virtual
    address returned will always be on an even virtual disk block
    boundary.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the usable virtual address range mapped. The
    return_length_64 argument is the 32- or 64-bit virtual address
    of a naturally aligned quadword into which the service returns
    the length of the virtual address range mapped in bytes.

    Upon successful completion of this service, the value in the
    return_length_64 argument might differ from the total amount
    of virtual address space mapped. The value in the return_va_64
    argument plus the value in the return_length_64 argument
    indicates the address of the first byte beyond the end of the
    mapping of the global disk file section.

    If the value in the section_offset_64 argument plus the value in
    the length_64 argument did not specify to map the entire global
    section, this byte can be located at an even virtual disk block
    boundary within the last page of the mapping.

    If the section being mapped does not completely fill the last
    page used to represent the global disk file section, this byte
    can be mapped into your address space; however, it is not backed
    up by the disk file.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to which to map the global section.
    The specified virtual address must be a CPU-specific page-aligned
    address. If the flag SEC$M_EXPREG is specified, the start_va_64
    argument must not be specified or must be specified as 0. If
    SEC$M_EXPREG is set and the start_va_64 argument is nonzero, the
    condition value SS$_IVSECFLG is returned.

    If the region_id_64 argument specifies a shared page-table
    region, start_va_64 must be aligned to a CPU-specific page-table
    page boundary.

204  –  $MGBLSC GPFN 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, establishes a
    correspondence between pages in the virtual address space of the
    process and the pages occupied by a global page frame section.

    This service accepts 64-bit addresses.

    Format

      SYS$MGBLSC_GPFN_64  gs_name_64 ,ident_64 ,region_id_64

                          ,relative_page ,page_count ,acmode

                          ,flags ,return_va_64 ,return_length_64

                          [,start_va_64]

    C Prototype

      int sys$mgblsc_gpfn_64  (void *gsdnam_64, struct _secid

                              *ident_64, struct _generic_64

                              *region_id_64, unsigned int

                              relative_page, unsigned int

                              page_count, unsigned int

                              acmode, unsigned int flags, void

                              *(*(return_va_64)), unsigned __int64

                              *return_length_64,...);

204.1  –  Arguments

 gs_name_64

    OpenVMS usage:section_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Name of the global section. The gs_name argument is the 32- or
    64-bit virtual address of a naturally aligned 32-bit or 64-bit
    descriptor pointing to this name string.

    You can specify any name from 1 to 43 characters. All processes
    mapping to the same global section must specify the same name.
    Note that the name is case sensitive.

    Use of characters valid in logical names is strongly encouraged.
    Valid values include alphanumeric characters, the dollar sign
    ($), and the underscore (_). If the name string begins with an
    underscore (_), the underscore is stripped and the resultant
    string is considered to be the actual name. Use of the colon (:)
    is not permitted.

    Names are first subject to a logical name translation, after
    the application of the prefix GBL$ to the name. If the result
    translates, it is used as the name of the section. If the
    resulting name does not translate, the name specified by the
    caller is used as the name of the section.

    Additional information on logical name translations and
    on section name processing is available in the VSI OpenVMS
    Programming Concepts Manual.

 ident_64

    OpenVMS usage:section_id
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Identification value specifying the version number of a global
    section. The ident_64 argument is a quadword containing three
    fields. The ident_64 argument is the 32- or 64-bit virtual
    address of a naturally aligned quadword that contains the
    identification value.

    The first longword specifies the matching criteria in its low-
    order two bits. The valid values, symbolic names by which they
    can be specified, and their meanings are as follows:

           Symbolic
    Value  Name           Match Criteria

    0      SEC$K_MATALL   Match all versions of the section.
    1      SEC$K_MATEQU   Match only if major and minor
                          identifications match.
    2      SEC$K_MATLEQ   Match if the major identifications are
                          equal and the minor identification of the
                          mapper is less than or equal to the minor
                          identification of the global section.

    If you specify the ident_64 argument as 0, the version number and
    match control fields default to 0.

    The version number is in the second longword. The version number
    contains two fields: a minor identification in the low-order 24
    bits and a major identification in the high-order 8 bits. You
    can assign values for these fields by installation convention to
    differentiate versions of global sections. If no version number
    is specified when a section is created, processes that specify a
    version number when mapping cannot access the global section.

 region_id_64

    OpenVMS usage:region identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The region ID associated with the region to map the private page
    frame section. The file VADEF.H in SYS$STARLET_C.TLB and the
    $VADEF macro in STARLET.MLB define a symbolic name for each of
    the three default regions in P0, P1, and P2 space.

    The following region IDs are defined:

    Symbol     Region

    VA$C_P0    Program region
    VA$C_P1    Control region
    VA$C_P2    64-bit program region

    Other region IDs, as returned by the $CREATE_REGION_64 service,
    can be specified.

 relative_page

    OpenVMS usage:CPU-specific page count
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Relative CPU-specific page number within the global section to
    start mapping.

 page_count

    OpenVMS usage:CPU-specific page count
    type:         longword (unsigned) on Alpha, quadword (unsigned)
                  on Integrity servers
    access:       read only
    mechanism:    by value
    Length of mapping in CPU-specific pages. If zero is specified,
    the global page frame section is mapped to the end of the
    section.

 acmode

    OpenVMS usage:access-mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be associated with the pages mapped into the
    process virtual address space. The acmode argument is a longword
    containing the access mode. The $PSLDEF macro defines symbols for
    the four access modes.

    The most privileged access mode used is the access mode of the
    caller. Address space cannot be created within a region that has
    a create mode associated with it that is more privileged than
    the caller's mode. The condition value SS$_IVACMODE is returned
    if the caller is less privileged than the create mode for the
    region.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying options for the operation. The flags
    argument is a longword bit vector in which each bit corresponds
    to a flag. The $SECDEF macro and the SECDEF.H file define a
    symbolic name for each flag. You construct the flags argument
    by performing a logical OR operation on the symbol names for all
    desired flags.

    The following table describes each flag that is valid for the
    $MGBLSC_GPFN_64 service:

    Flag          Description

    SEC$M_ARGS64  Indicates that all parameters, specifically start_
                  pfn and page_count, are passed as 64-bit numbers.
                  This flag is ignored on OpenVMS Alpha but must be
                  set on Integrity server systems. If the flag is
                  not set on Integrity servers, the error code SS$_
                  IVSECFLG is returned.

    SEC$M_GBL     Pages form a global section. By default, this flag
                  is always present in this service and cannot be
                  disabled.

    SEC$M_EXPREG  Map the section into the first available space at
                  the current end of the specified region. If this
                  flag is specified, the start_va_64 argument is not
                  used.

    SEC$M_PERM    Pages are permanent. By default, this flag is
                  always present in this service and cannot be
                  disabled.

    SEC$M_PFNMAP  Pages form a page frame section. By default, this
                  flag is always present in this service and cannot
                  be disabled.

    SEC$M_PAGFIL  Pages form a global page-file section. SEC$M_PAGFIL
                  also implies SEC$M_WRT and SEC$M_DZRO.

    SEC$M_SYSGBL  Map a system global section. By default, the
                  section is a group global section.

    SEC$M_        Flag accepted but ignored on Integrity server
    UNCACHED      systems. The cached/uncached characteristic is
                  stored as a section attribute, and the system uses
                  this attribute when the section is mapped. Refer to
                  this flag in the documentation of the SYS$CREATE_
                  GPFN system service.

    SEC$M_WRT     Map the section with read/write access. By default,
                  the section is mapped with read-only access. If
                  SEC$M_WRT is specified, write access is required.

    All other bits in the flags argument are reserved for future
    use by VSI and should be specified as 0. The condition value
    SS$_IVSECFLG is returned if any undefined bits are set or if
    an illegal combination of flags is set.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address into which the global page
    frame section was mapped. The return_va_64 argument is the 32-
    or 64-bit virtual address of a naturally aligned quadword that
    contains the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The 32- or 64-bit virtual address of a naturally aligned quadword
    into which the $MGBLSC_GPFN_64 service returns the length of the
    virtual address range in bytes.

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address to map the global section. The
    specified virtual address must be a CPU-specified page-aligned
    address. If the flag SEC$M_EXPREG is specified, the start_va_64
    argument must not be specified or must be specified as 0. If
    SEC$M_EXPREG is set and the start_va_64 argument is nonzero, the
    condition value SS$_IVSECFLG is returned.

    Always refer to the return_va_64 and return_length_64 arguments
    to determine the range of virtual addresses mapped.

205  –  $MOD HOLDER

    Modifies the specified holder record of the target identifier in
    the rights database.

    Format

      SYS$MOD_HOLDER  id ,holder ,[set_attrib] ,[clr_attrib]

    C Prototype

      int sys$mod_holder  (unsigned int id, struct _generic_64

                          *holder, unsigned int set_attrib, unsigned

                          int clr_attrib);

205.1  –  Arguments

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Binary value of target identifier whose holder record is modified
    when $MOD_HOLDER completes execution. The id argument is a
    longword containing the identifier value.

 holder

    OpenVMS usage:rights_holder
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Identifier of holder being modified when $MOD_HOLDER completes
    execution. The holder argument is the address of a quadword
    containing the UIC identifier of the holder in the first longword
    and the value of 0 in the second longword.

 set_attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Bit mask of attributes to be enabled for the identifier when
    $MOD_HOLDER completes execution. The set_attrib argument is a
    longword containing the attribute mask.

    The attributes actually enabled are the intersection of those
    specified and the attributes of the identifier. If you specify
    the same attribute in set_attrib and clr_attrib, the attribute is
    enabled.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The following symbols
    for each bit position are defined in the system macro library
    ($KGBDEF):

    Bit Position    Meaning When Set

    KGB$V_DYNAMIC   Allows holders of the identifier to remove it
                    from or add it to the process rights list by
                    using the DCL command SET RIGHTS_LIST.

    KGB$V_          Makes any access rights of the identifier
    NOACCESS        null and void. This attribute is intended as
                    a modifier for a resource identifier or the
                    Subsystem attribute.

    KGB$V_          Allows the holder to charge resources, such as
    RESOURCE        disk blocks, to the identifier.

    KGB$V_          Allows holders of the identifier to create and
    SUBSYSTEM       maintain protected subsystems by assigning the
                    Subsystem ACE to the application images in the
                    subsystem.

 clr_attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Bit mask of attributes to be disabled for the identifier when
    $MOD_HOLDER completes execution. The clr_attrib argument is a
    longword containing the attribute mask.

    If you specify the same attribute in set_attrib and clr_attrib,
    the attribute is enabled.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The following symbols
    for each bit position are defined in the system macro library
    ($KGBDEF):

    Bit Position    Meaning When Set

    KGB$V_DYNAMIC   Allows holders of the identifier to remove it
                    from or add it to the process rights list by
                    using the DCL command SET RIGHTS_LIST.
    KGB$V_          Makes any access rights of the identifier
    NOACCESS        null and void. This attribute is intended as
                    a modifier for a resource identifier or the
                    Subsystem attribute.

    KGB$V_          Allows the holder to charge resources, such as
    RESOURCE        disk blocks, to the identifier.

    KGB$V_          Allows holders of the identifier to create and
    SUBSYSTEM       maintain protected subsystems by assigning the
                    Subsystem ACE to the application images in the
                    subsystem.

206  –  $MOD IDENT

    Modifies the specified identifier record in the rights database.

    Format

      SYS$MOD_IDENT  id ,[set_attrib] ,[clr_attrib] ,[new_name]

                     ,[new_value]

    C Prototype

      int sys$mod_ident  (unsigned int id, unsigned int set_attrib,

                         unsigned int clr_attrib, void *new_name,

                         unsigned int new_value);

206.1  –  Arguments

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Binary value of identifier whose identifier record is modified
    when $MOD_IDENT completes execution. The id argument is a
    longword containing the identifier value.

 set_attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Bit mask of attributes to be enabled for the identifier when
    $MOD_IDENT completes execution. The set_attrib argument is a
    longword containing the attribute mask.

    The attributes actually enabled are the intersection of those
    specified and the attributes of the identifier. If you specify
    the same attribute in set_attrib and clr_attrib, the attribute is
    enabled.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The following symbols
    for each bit position are defined in the system macro library
    ($KGBDEF):

    Bit Position           Meaning When Set

    KGB$V_DYNAMIC          Allows holders of the identifier to remove
                           it from or add it to the process rights
                           list by using the DCL command SET_RIGHTS_
                           LIST.
    KGB$V_HOLDER_HIDDEN    Prevents someone from getting a list of
                           users who hold an identifier, unless they
                           own the identifier themselves.
    KGB$V_NAME_HIDDEN      Allows holders of an identifier to have it
                           translated-either from binary to ASCII or
                           vice versa-but prevents unauthorized users
                           from translating the identifier.
    KGB$V_NOACCESS         Makes any access rights of the identifier
                           null and void. This attribute is intended
                           as a modifier for a resource identifier or
                           the Subsystem attribute.
    KGB$V_RESOURCE         Allows holders of an identifier to charge
                           disk space to the identifier. It is used
                           only for file objects.
    KGB$V_SUBSYSTEM        Allows holders of the identifier to
                           create and maintain protected subsystems
                           by assigning the Subsystem ACE to the
                           application images in the subsystem.

 clr_attrib

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Bit mask of attributes to be disabled for the identifier when
    $MOD_IDENT completes execution. The clr_attrib argument is a
    longword containing the attribute mask.

    If you specify the same attribute in set_attrib and clr_attrib,
    the attribute is enabled.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The following symbols
    for each bit position are defined in the system macro library
    ($KGBDEF):

    Bit Position           Meaning When Set

    KGB$V_DYNAMIC          Allows holders of the identifier to remove
                           it from or add it to the process rights
                           list by using the DCL command SET_RIGHTS_
                           LIST.
    KGB$V_HOLDER_HIDDEN    Prevents someone from getting a list of
                           users who hold an identifier, unless they
                           own the identifier themselves.
    KGB$V_NAME_HIDDEN      Allows holders of an identifier to have it
                           translated-either from binary to ASCII or
                           vice versa-but prevents unauthorized users
                           from translating the identifier.
    KGB$V_NOACCESS         Makes any access rights of the identifier
                           null and void. This attribute is intended
                           as a modifier for a resource identifier or
                           the Subsystem attribute.
    KGB$V_RESOURCE         Allows holders of an identifier to charge
                           disk space to the identifier. It is used
                           only for file objects.
    KGB$V_SUBSYSTEM        Allows holders of the identifier to
                           create and maintain protected subsystems
                           by assigning the Subsystem ACE to the
                           application images in the subsystem.

 new_name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    New name to be given to the specified identifier. The new_
    name argument is the address of the descriptor pointing to the
    identifier name string.

    An identifier name consists of 1 to 31 alphanumeric characters,
    including dollar signs ($)  and underscores (_), and must contain
    at least one nonnumeric character. Any lowercase characters
    specified are automatically converted to uppercase.

 new_value

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    New value to be assigned to the specified identifier. The new_
    value argument is a longword containing the binary value of the
    specified identifier. When the identifier value is changed, $MOD_
    IDENT also changes the value of the identifier in all of the
    holder records in which the specified identifier appears.

207  –  $MOUNT

    Mounts a tape, disk volume, or volume set and specifies options
    for the mount operation.

    Format

      SYS$MOUNT  itmlst

    C Prototype

      int sys$mount  (void *itmlst);

207.1  –  Argument

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying options for the mount operation. The itmlst
    argument is the address of a list of item descriptors, each of
    which specifies an option and provides the information needed to
    perform the operation.

    The item list must include at least one device item descriptor
    and is terminated by a longword value of 0.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

208  –  $MTACCESS

    Allows installations to provide their own routine to interpret
    and output the accessibility field in the VOL1 and HDR1 labels of
    an ANSI labeled magnetic tape.

    Format

      SYS$MTACCESS  lblnam ,[uic] ,[std_version] ,[access_char]

                    ,[access_spec] ,type

    C Prototype

      int sys$mtaccess  (unsigned int *lblnam, unsigned int uic,

                        unsigned int std_version, unsigned int

                        access_char, unsigned int access_spec,

                        unsigned int type);

208.1  –  Arguments

 lblnam

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    ANSI label to be processed. The lblnam argument is the address
    of a longword containing the label. On input, the label passed
    is either the VOL1 or HDR1 label read from the magnetic tape; on
    output of labels, the value of this field is 0. The type of label
    passed is determined by type.

 uic

    OpenVMS usage:uic
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    UIC of the user performing the operation. The uic argument is a
    longword containing the UIC.

 std_version

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Decimal equivalent of the ANSI standard version read from the
    VOL1 label. The std_version argument is a longword containing the
    standard version number.

 access_char

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Accessibility character specified by the user. The access_char
    argument is a byte containing the accessibility character used
    for the output of labels.

 access_spec

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Value specifying whether the accessibility character passed in
    access_char was specified by the user.

    The access_spec argument is a byte containing one of the
    following values:

    Value            Meaning

    MTA$K_           Yes
    CHARVALID
    MTA$K_NOCHAR     No

    This argument is used only for the output of labels.

 type

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Type of accessibility field to process.

    The type argument is a byte containing one of the following
    values:

    Value            Meaning

    MTA$K_INVOL1     Input a VOL1 label
    MTA$K_INHDR1     Input a HDR1 label
    MTA$K_OUTVOL1    Output a VOL1 label
    MTA$K_OUTHDR1    Output a HDR1 label

209  –  $NUMTIM

    Converts an absolute or delta time from 64-bit system time format
    to binary integer date and time values.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$NUMTIM  timbuf ,[timadr]

    C Prototype

      int sys$numtim  (unsigned short int timbuf [7], struct

                      _generic_64 *timadr);

209.1  –  Arguments

 timbuf

    OpenVMS usage:vector_word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Buffer into which $NUMTIM writes the converted date and time.
    The timbuf argument is the 32- or 64-bit address (on Alpha and
    Integrity server systems) of a 7-word structure.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the diagram of the fields in this structure.

    If the timadr argument specifies a delta time, $NUMTIM returns
    the value 0 in the year since 0 and month of year fields. It
    returns in the day of month field the number of days specified by
    the delta time.

 timadr

    OpenVMS usage:date_time
    type:         quadword
    access:       read only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    The 64-bit time value to be converted. The timadr argument is the
    32- or 64-bit address (on Alpha and Integrity server systems) of
    a quadword containing this time. A positive-time value represents
    an absolute time, while a negative time value indicates a delta
    time.

    If you do not specify timadr, $NUMTIM returns the current system
    time.

    If timadr specifies the value 0, $NUMTIM returns the base date
    (November 17, 1858).

210  –  $NUMUTC

    Converts an absolute 128-bit binary time into its numeric
    components. The numeric components are returned in local time.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$NUMUTC  timbuf ,[utcadr]

    C Prototype

      int sys$numutc  (unsigned short int timbuf [13], unsigned int

                      *utcadr [4]);

210.1  –  Arguments

 timbuf

    OpenVMS usage:vector_word_unsigned
    type:         word
    access:       write only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Buffer into which $NUMUTC writes the converted date and time.
    The timbuf argument is the 32- or 64-bit address (on Alpha and
    Integrity server systems) of a 13-word structure containing
    time, inaccuracy of time, and time differential factor. The time
    differential factor encoded in the 128-bit buffer is used to
    convert the UTC to its numerical components. Negative values in
    the inaccuracy field indicate an infinite inaccuracy.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the diagram of the fields in this structure.

 utcadr

    OpenVMS usage:coordinated universal time
    type:         utc_date_time
    access:       read only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    The 128-bit UTC time value to be converted.

    The utcadr argument is optional; if it is not used, $NUMUTC will
    use the current time.

211  –  $NXTVOL

    The Next Volume service allows you to process the next tape
    volume in a multiple volume set. This service applies only to
    files on magnetic tape volumes.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

212  –  $OPEN

    The Open service makes an existing file available for processing
    by your program. The Open service specifies the type of record
    access to be used and determines whether the file can be shared.
    The Open service also performs an implicit Display service.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

213  –  $PARSE

    The Parse service analyzes the file specification string and
    fills in various NAM block fields.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

214  –  $PARSE ACL

    Parses the specified text string and converts it to the binary
    representation for an access control entry (ACE).

    Format

      SYS$PARSE_ACL  aclstr ,aclent ,[errpos] ,[accnam] ,[nullarg]

    C Prototype

      int sys$parse_acl  (void *aclstr, void *aclent, unsigned

                         short int *errpos, void *accnam, int

                         (*routin)(void));

214.1  –  Arguments

 aclstr

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Formatted ACE that is parsed when $PARSE_ACL completes execution.
    The aclstr argument is the address of a string descriptor
    pointing to the text string to be parsed.

 aclent

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    Description of the ACE that is parsed when $PARSE_ACL completes
    execution. The aclent argument is the address of a descriptor
    pointing to the buffer in which the ACE is written. The first
    byte of the buffer contains the length of the ACE; the second
    byte contains a value that identifies the type of ACE, which in
    turn defines the format of the ACE.

    For information about the ACE types and their associated formats,
    see $FORMAT_ACL system service documentation.

 errpos

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by reference
    Number of characters from aclstr processed by $PARSE_ACL. The
    errpos argument is the address of a word that receives the number
    of characters actually processed by the service. If the service
    fails, this count points to the failing point in the string.

 accnam

    OpenVMS usage:access_bit_names
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Names of the bits in the access mask when $PARSE_ACL is
    executing. The accnam argument is the address of an array of
    32 quadword descriptors that define the names of the bits in the
    access mask. Each element points to the name of a bit. The first
    element names bit 0, the second element names bit 1, and so on.

    You can call LIB$GET_ACCNAM to retrieve the access name table
    for the class of object whose ACL is to be formatted. If you omit
    accnam, the following names are used:

    Bit    Name

    Bit 0  READ
    Bit 1  WRITE
    Bit 2  EXECUTE
    Bit 3  DELETE
    Bit 4  CONTROL
    Bit 5  BIT_5
    Bit 6  BIT_6
    .
    .
    .
    Bit    BIT_31
    31

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

215  –  $PERM DIS ALIGN FAULT REPORT (Alpha and Integrity servers)

    On Alpha and Integrity server systems, disables user process
    alignment fault reporting.

    Format

      SYS$PERM_DIS_ALIGN_FAULT_REPORT

    C Prototype

      int sys$perm_dis_align_fault_report  (void);

215.1  –  Arguments

    None.

216  –  $PERM REPORT ALIGN FAULT (Alpha and Integrity servers)

    On Alpha and Integrity server systems, initializes user process
    alignment fault reporting.

    Format

      SYS$PERM_REPORT_ALIGN_FAULT

    C Prototype

      int sys$perm_report_align_fault  (void);

216.1  –  Arguments

    None.

217  –  $PERSONA ASSUME (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows an OpenVMS thread
    to assume the identity of another persona.

    Format

      SYS$PERSONA_ASSUME  persona ,[flags], [previous], [acmode]

    C Prototype

      int sys$persona_assume  (unsigned int *persona, unsigned int

                              flags, unsigned int *previous, unsigned

                              int acmode);

217.1  –  Arguments

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword in which the persona identification handle
    is expected.

    If the value passed is ISS$C_ID_NATURAL, then the state of the
    calling thread is returned to the natural persona.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Ignored.

 previous

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of a longword into which the persona identification
    handle of the currently active persona being replaced is written.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode to be considered when assuming a persona. The acmode
    argument is a longword containing the access mode.

    The most privileged access mode used is the access mode of the
    caller. Only equal or more privileged access modes can use this
    persona.

218  –  $PERSONA CLONE (Alpha and Integrity servers)

    On Alpha and Integrity server systems, creates a copy of an
    existing persona within the context of the current process. The
    service returns the assigned persona identification for the new
    persona in the persona argument. This persona can be assumed
    using the $PERSONA_ASSUME service.

    Format

      SYS$PERSONA_CLONE  persona ,[input]

    C Prototype

      int sys$persona_clone  (unsigned int *persona, unsigned int

                             *input);

218.1  –  Arguments

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of a longword into which the persona identification
    handle is written.

 input

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of a longword containing the persona identification of
    the persona to be cloned. If this argument is 0, null, or absent,
    the currently active persona is cloned.

219  –  $PERSONA CREATE (Alpha and Integrity servers)

    On Alpha and Integrity server systems, creates a persona that can
    be assumed using the $PERSONA_ASSUME service.

    Format

      SYS$PERSONA_CREATE  persona ,[usrnam] ,[flags], [usrpro],

                          [itmlst]

    C Prototype

      int sys$persona_create  (unsigned int *persona, void *usrnam,

                              unsigned int flags, unsigned int

                              *usrpro, unsigned int *itmlst);

219.1  –  Arguments

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of a longword into which the persona identification
    handle is written.

 usrnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length descriptor
    Name of the user to be impersonated. The usrnam argument is
    the address of a descriptor pointing to a character string
    containing the user name. The string can contain a maximum of
    32 alphanumeric characters.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The $ISSDEF macro defines these codes:

    o  ISS$V_CREATE_AUTHPRIV - This bit is used to create a persona
       with the privilege fields set to the authorized privileges of
       the specified user.

    o  ISS$V_CREATE_DEFPRIV - This bit is used for backward
       compatibility with the previous implementation of personae.
       This bit is accepted but not processed, as it describes the
       default behavior of the service.

    o  ISS$V_NOACCESS - Tells $PERSONA_CREATE not to access the
       SYSUAF file. Only valid in exec or kernel mode.

 usrpro

    OpenVMS usage:char_string
    type:         opaque byte stream
    access:       read only
    mechanism:    by descriptor
    Buffer containing an encoded security profile. The usrpro
    argument is the address of a descriptor pointing to a buffer
    that contains encoded security profile data. This profile can be
    created by calling the SYS$CREATE_USER_PROFILE system service.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword
    access:       read only
    mechanism:    by reference
    Attributes describing modifications to the security profile. The
    itmlst argument is the address of an item_list defining changes
    to be made to the specified user profile.

220  –  $PERSONA CREATE EXTENSION (Alpha and Integrity servers)

    On Alpha and Integrity server systems, creates an extension on
    the current persona. A persona extension is a mechanism to attach
    support for additional security credentials.

    Format

      SYS$PERSONA_CREATE_EXTENSION  persona ,extensionID ,buffer

                                    ,length ,flags

    C Prototype

      int sys$persona_create_extension  (unsigned int *persona,

                                        unsigned int *extensionID,

                                        void *buffer, unsigned

                                        int *length, unsigned int

                                        *flags);

220.1  –  Arguments

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the persona identification to
    which $PERSONA_CREATE_EXTENSION attaches a new persona extension.

    Two special values for persona are also permitted: 0, which means
    the current persona, and -1, which means the process' natural
    persona is used.

 extensionID

    OpenVMS usage:extension_ID
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the extension identification
    (EID) for which the registered CREATE routine will be called to
    create a new persona extension block.

 buffer

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a buffer containing data to be used in creating the
    persona extension data structure. The interpretation of the
    data within this buffer is the responsibility of the extension
    create routine. For example, this data could be a Type-Length-
    Value (TLV) structure containing fields in the extension data
    structure. Specifying this buffer is optional; a caller who does
    not want to supply a buffer should specify an address of zero
    (0).

 length

    OpenVMS usage:size
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the size, in bytes, of the
    buffer argument. Specifying length is optional; a caller who
    does not want to supply a length should specify an address of
    zero (0). Specifying a buffer without a length is the same as not
    specifying a buffer.

 flags

    OpenVMS usage:flags
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Flag mask specifying the options to be employed when the persona
    extension is created. Specifying flags is optional; a caller who
    does not want to supply flags should specify an address of zero
    (0).

    Flag       Description

    PXB$V_     This extension is recorded as the persona's primary
    PRIMARY_   extension. If a persona already has a primary
    EXTENSION  extension, the error SS$_UNSUPPORTED is returned and
               the extension is not created. The primary extension is
               returned when the persona is queried for its "Primary
               Extension." There is no other meaning for this value.

221  –  $PERSONA DELEGATE (Alpha and Integrity servers)

    On Alpha and Integrity server systems, delegates or assigns the
    currently active persona to another process.

    Format

      SYS$PERSONA_DELEGATE  serverPID ,persona ,input

    C Prototype

      int sys$persona_delegate  (unsigned int *serverPID, unsigned

                                int *persona, unsigned int *input);

221.1  –  Arguments

 serverPID

    OpenVMS usage:process_ID
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the extended process
    identification (PID) of the server process to which $PERSONA_
    DELEGATE grants the current persona.

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the identification that the
    $PERSONA_RESERVE service reserved in the server's process for
    this client's persona.

 input

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the persona identification that
    describes which persona is delegated to the server. If the input
    argument is zero (0) or null, or if the input value is zero (0),
    the current persona is delegated. If the input value is -1, then
    the natural persona of the process is delegated.

222  –  $PERSONA DELETE

    Deletes a persona created using the $PERSONA_CREATE, the
    $PERSONA_CLONE, or the $PERSONA_RESERVE service.

    Format

      SYS$PERSONA_DELETE  persona

    C Prototype

      int sys$persona_delete  (unsigned int *persona);

222.1  –  Arguments

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword in which the persona identification handle
    is expected.

223  –  $PERSONA DELETE EXTENSION (Alpha and Integrity servers)

    On Alpha and Integrity server systems, deletes an extension
    attached to a persona.

    Format

      SYS$PERSONA_DELETE_EXTENSION  persona ,extensionID

    C Prototype

      int sys$persona_delete_extension  (unsigned int *persona,

                                        unsigned int *extensionID);

223.1  –  Arguments

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the persona identification for
    which $PERSONA_DELETE_EXTENSION calls the registered Extension
    Delete function.

 extensionID

    OpenVMS usage:extension_ID
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the extension identification
    (EID) for which the registered DELETE routine is called in order
    to delete a persona extension block from the specified persona.

224  –  $PERSONA EXTENSION LOOKUP (Alpha and Integrity servers)

    On Alpha and Integrity server systems, translates a text name
    of an extension (for example, VMS or NT) into an extension
    identification (EID) that can be used in other persona-related
    system services.

    Format

      SYS$PERSONA_EXTENSION_LOOKUP  extensionName ,extensionID

    C Prototype

      int sys$persona_extension_lookup  (void *extensionName,

                                        unsigned int *extensionID);

224.1  –  Arguments

 extensionName

    OpenVMS usage:extension_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length descriptor
    Address of a character string descriptor pointing to the name of
    the extension being looked up.

 extensionID

    OpenVMS usage:extension_ID
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of a longword into which the value of the extension
    identification (EID) returned by the service is written.

225  –  $PERSONA FIND (Alpha and Integrity servers)

    On Alpha and Integrity server systems, enables the caller to find
    the personae within a process that have certain attributes or
    settings.

    Format

      SYS$PERSONA_FIND  persona ,itmlst ,contxt

    C Prototype

      int sys$persona_find  (unsigned int *persona, void *itmlst,

                            unsigned int *contxt);

225.1  –  Arguments

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of a longword into which the persona identification that
    matches all of the items present in the item list is written.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Attributes specifying which information about the persona is
    to be compared. The itmlst argument is the address of a list of
    item descriptors, each describing an item of information or an
    item list processing directive. The list of item descriptors is
    terminated by a longword value of 0.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

 contxt

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Context value used when repeatedly calling $PERSONA_FIND. The
    contxt argument is the address of a longword used while $PERSONA_
    FIND searches for all personae that match the criteria. The
    context value must be initialized to zero, and the resulting
    context of each call to $PERSONA_FIND must be presented to each
    subsequent call. After contxt is passed to $PERSONA_FIND, you
    must not modify its value.

226  –  $PERSONA MODIFY (Alpha and Integrity servers)

    On Alpha and Integrity server systems, sets attribute values for
    a persona.

    Format

      SYS$PERSONA_MODIFY  persona ,itmlst

    C Prototype

      int sys$persona_modify  (unsigned int *persona, void *itmlst);

226.1  –  Arguments

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the persona identification for
    which this service is to set information.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Attributes specifying which information in the persona is to
    be modified. The itmlst argument is the address of a list of
    item descriptors, each describing an item of information or an
    item list processing directive. The list of item descriptors is
    terminated by a longword value of 0.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

227  –  $PERSONA QUERY (Alpha and Integrity servers)

    On Alpha and Integrity server systems, retrieves attribute values
    from a persona (and accompanying extensions).

    Format

      SYS$PERSONA_QUERY  persona ,itmlst

    C Prototype

      int sys$persona_query  (unsigned int *persona, void *itmlst);

227.1  –  Arguments

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword into which the persona identification
    handle is written.

    Two special values for persona are also permitted: 0, which means
    use the current persona, and -1, which means use the process'
    natural persona.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Attributes describing which information about the persona is to
    be returned. The itmlst argument is the address of a list of item
    descriptors, each of which describes an item of information or an
    item list processing directive. The list of item descriptors is
    terminated by a longword value of 0.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

228  –  $PERSONA RESERVE (Alpha and Integrity servers)

    On Alpha and Integrity server systems, reserves a persona ID
    in the server's persona table to be filled in by the $PERSONA_
    DELEGATE system service.

    Format

      SYS$PERSONA_RESERVE  clientPID ,persona

    C Prototype

      int sys$persona_reserve  (unsigned int *clientPID, unsigned int

                               *persona);

228.1  –  Arguments

 clientPID

    OpenVMS usage:process_ID
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Address of a longword containing the External Process
    Identification (EPID) of the client process for which the server
    is reserving the slot.

 persona

    OpenVMS usage:persona
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of a longword into which the persona identification
    is written. This service sets aside the identification for the
    client's to-be-delegated persona.

229  –  $POWER CONTROL

    Manipulates the platform's power and performance settings to the
    value specified in the power_setting parameter. This applies to
    the entire system just as though commanded through the Integrated
    Lights-Out (iLO) web interface.

    Format

      SYS$POWER_CONTROL  power_setting, current_value

    C Prototype

      int sys$power_control  unsigned __int64 power_setting, unsigned

                             __int64 *current_value;

229.1  –  Arguments

 power_setting

    OpenVMS usage:quadword_unsigned
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 64-bit value
    A quadword value to specify the new power or performance setting.

 current_value

    OpenVMS usage:quadword_unsigned
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 64-bit value
    The address of a quadword for the service to return the current
    setting (optional).

230  –  $PROCESS AFFINITY (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows modification of the
    CPU affinity set for a specified kernel thread.

    This service accepts 64-bit addresses.

    Format

      SYS$PROCESS_AFFINITY  [pidadr], [prcnam], [select_mask],

                            [modify_mask], [prev_mask], [flags]

                            [,[mask_length]]

    C Prototype

      int sys$process_affinity  (unsigned int *pidadr, void *prcnam,

                                struct _generic_64 *select_mask,

                                struct _generic_64 *modify_mask,

                                struct _generic_64 *prev_mask, struct

                                _generic_64 *flags,...);

230.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Process identification (PID) of a kernel thread whose affinity
    mask is to be modified or returned. The pidadr argument is the
    32- or 64-bit address of a longword that contains the PID.

    Process selection is made through a combination of the pidadr
    and prcnam arguments. If neither are specified or if both have a
    zero value, the service operations are made to the user affinity
    mask of the current kernel thread of the calling process. The
    pidadr argument takes precedence over the prcnam argument in any
    circumstances where both are supplied in the service call.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Process name of the process whose affinity mask is to be modified
    or returned. The prcnam argument is the 32- or 64-bit address
    of a character string descriptor pointing to the process name
    string. A process can be identified with a 1- to 15-character
    string. The service operations are made to the user affinity mask
    of the initial thread of the specified process.

    If pidadr and prcnam are both specified, then pidadr is modified
    or returned and prcnam is ignored. If neither argument is
    specified, then the context of the current kernel thread of the
    calling process is modified or returned.

 select_mask

    OpenVMS usage:bitmap
    type:         quadword bitmap
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The select-mask argument specifies which bits of the specified
    process's affinity mask are to be modified. The select_mask
    argument is the 32- or 64-bit address of a quadword bit vector
    wherein a bit, when set, specifies that the corresponding CPU
    position in the mask is to be modified.

 modify_mask

    OpenVMS usage:bitmap
    type:         quadword bitmap
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Mask specifying the settings for those explicit affinities
    selected in the select_mask argument. The modify_mask argument is
    the 32- or 64-bit address of a quadword bit vector wherein a bit,
    when set, specifies that the corresponding CPU is to be added to
    the specified process affinity set; when clear, the corresponding
    CPU is to be removed from the specified process affinity set.

    To add a specific CPU to the affinity mask set, that bit position
    must be set in both select_mask and modify_mask. To remove a
    specific CPU from the affinity mask set, that bit position must
    be set in select_mask and clear in modify_mask.

    The constant CAP$K_ALL_CPU_ADD, when specified in modify_mask,
    indicates that all CPUs specified in select_mask are to be added
    to the affinity mask set. The constant CAP$K_ALL_CPU_REMOVE
    indicates that all CPUs in select_mask are to be removed from
    the affinity mask set.

 prev_mask

    OpenVMS usage:bitmap
    type:         quadword bitmap
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Previous CPU affinity mask for the specified kernel thread before
    execution of this call to $PROCESS_AFFINITY. The prev_mask
    argument is the 32- or 64-bit address of a quadword into which
    $PROCESS_AFFINITY writes the previous explicit affinity bitmap.

 flags

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Options selected for affinity modification. The flags argument
    is a quadword bit vector wherein a bit corresponds to an option.
    Only the bits specified below are used; the remainder of the
    quadword bits are reserved and must be 0.

    Each option (bit) has a symbolic name, which the $CAPDEF macro
    defines. The flags argument is constructed by performing a
    logical OR operation using the symbolic names of each desired
    option.

    The following table describes the symbolic name of each option:

    Symbolic Name          Description

    CAP$M_FLAG_PERMANENT   Indicates whether to modify the permanent
                           process affinities in addition to the
                           current image copy. If CAP$M_FLAG_
                           PERMANENT is set, then both the permanent
                           and current affinities are modified.
                           If the flag bit is clear or flags is
                           unspecified, then just the current image
                           process affinities are modified.

                           This bit also determines which of the
                           affinity masks are returned in prev_
                           mask. If set, the permanent mask, used
                           to reinitialize the current set at image
                           rundown, is returned. If the bit is clear
                           or the flags argument is not specified,
                           the current running mask is returned.

    CAP$M_FLAG_CHECK_CPU   Determines whether the kernel thread
                           can be left in a nonrunnable state under
                           some circumstances. No operation of this
                           service will allow a transition from a
                           runnable to blocked state; however, if
                           the kernel thread is already at a blocked
                           state, this bit determines whether the
                           result of the operation must leave it
                           runnable. If CAP$M_FLAG_CHECK_CPU is set
                           or flags is unspecified, the kernel thread
                           will be checked to ensure it can safely
                           run on one of the CPUs in the active set;
                           otherwise, any valid state operations on
                           kernel threads already in a blocked state
                           will be allowed.

    CAP$M_FLAG_CHECK_CPU_  Indicates whether a check is made to
    ACTIVE                 verify that all CPUs in the select mask
                           that are about to be selected for affinity
                           binding are in the active set. This does
                           not apply to CPUs that are about to be
                           cleared from the current affinity set.
                           Unlike CAP$M_FLAG_CHECK_CPU where only
                           a single CPU has to be valid for the
                           condition to pass, CAP$M_FLAG_CHECK_
                           CPU_ACTIVE requires that all CPUs in the
                           selected set must pass the criteria.

    CAP$M_PURGE_WS_IF_     Causes the working set of the process
    NEW_RAD                to be purged if the choice of affinity
                           results in a change to the home RAD of the
                           process.

 mask_length

    OpenVMS usage:bitmap
    type:         quadword bitmap
    access:       read only
    mechanism:    by 32- or 64-bit reference
    The mask_length specifies the length in bytes of each of the
    three bitmaps: select_mask, modify_mask, prev_mask. If mask_
    length is not supplied or specified as zero, a length of 8 bytes
    is used.

    The correct value for mask_length is determined by the number of
    supported CPUs on the system. You can compute the number of bytes
    needed for the bitmap as follows: Use the $GETSYI system service
    with an item code of SYI$_MAX_CPUS to find the minimum number of
    bits needed, round this number up to a multiple of 64, and divide
    the result by 8.

231  –  $PROCESS CAPABILITIES (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows modification of
    the user capability set for a specified kernel thread, or for the
    global user capability process default.

    This service accepts 64-bit addresses.

    Format

      SYS$PROCESS_CAPABILITIES  [pidadr] [,prcnam] [,select_mask]

                                [,modify_mask] [,prev_mask] [,flags]

    C Prototype

      int sys$process_capabilities  (unsigned int *pidadr, void

                                    *prcnam, struct _generic_64

                                    *select_mask, struct _generic_64

                                    *modify_mask, struct _generic_64

                                    *prev_mask, struct _generic_64

                                    *flags);

231.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Process identification (PID) of a kernel thread whose user
    capability mask is to be modified or returned. The pidadr
    argument is the 32- or 64-bit address of a longword that contains
    the PID.

    Process selection is made through a combination of the pidadr and
    prcnam arguments. If neither are specified or if both have a zero
    value, the service operations are made to the user capability
    mask of the current kernel thread of the calling process. The
    pidadr argument takes precedence over the prcnam argument where
    both are supplied in the service call.

    If the constant CAP$M_FLAG_DEFAULT_ONLY is specified in flags,
    then the user portion of the default process user capability
    mask is modified or returned instead, regardless of the values
    specified in pidadr.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Process name of the process whose user capability mask is to
    be modified or returned. The prcnam argument is the 32- or 64-
    bit address of a character string descriptor pointing to the
    process name string. A process can be identified with a 1- to
    15-character string. The service operations are made to the user
    capability mask of the initial thread of the specified process.

    You can use the prcnam argument only if the process identified
    by the descriptor has the same UIC group number as the calling
    process. To obtain information about processes in other groups,
    the pidadr argument must be used.

    If pidadr and prcnam are both specified, then prcnam is ignored.
    If neither argument is specified, then the context of the current
    kernel thread of the calling process is modified or returned.

 select_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Mask specifying which bits of the specified process' user
    capability mask are to be modified. The select_mask argument
    is the 32- or 64-bit address of a quadword bit vector wherein a
    bit, when set, specifies that the corresponding user capability
    is to be modified.

    The individual user capability bits in select_mask can be
    referenced by their symbolic bit constant names, CAP$M_USER1
    through CAP$M_USER16. These constants (not zero-relative) specify
    the position in the mask quadword that corresponds to the bit
    name. Multiple capabilities can be selected by ORing together the
    appropriate bits.

    Alternatively, the constant CAP$K_ALL_USER, when specified as the
    select_mask argument, selects all user capabilities.

 modify_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Mask specifying the settings for those capabilities selected in
    the select_mask argument. The modify_mask argument is the 32- or
    64-bit address of a quadword bit vector wherein a bit, when set,
    specifies that the corresponding user capability is to be added
    to the specified kernel thread; when clear, the corresponding
    user capability is to be removed.

    The symbolic bit constants CAP$M_USER1 through CAP$M_USER16 can
    be used to modify the appropriate bit position in modify_mask.
    Multiple capabilities can be modified by ORing together the
    appropriate bits.

    To add a specific user capability to a kernel thread, that bit
    position must be set in both select_mask and modify_mask. To
    remove a specific user capability from a kernel thread, that bit
    position must be set in select_mask and clear in modify_mask.

    The symbolic constant CAP$K_ALL_USER_ADD, when specified in
    modify_mask, indicates that all capabilities specified in
    select_mask are to be added to the appropriate capability set.
    The symbolic constant CAP$K_ALL_USER_REMOVE indicates that all
    specified capabilities are to be removed from the set.

 prev_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Previous user capability mask for the specified process or thread
    before execution of this call to $PROCESS_CAPABILITIES. The
    prev_mask argument is the 32- or 64-bit address of a quadword
    into which $PROCESS_CAPABILITIES writes the previous bit mask.
    If CAP$M_FLAG_DEFAULT_ONLY is set in the flags argument, then
    prev_mask will contain the user portion of the global default
    capability mask.

 flags

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Options selected for the user capability modification. The flags
    argument is a quadword bit vector wherein a bit corresponds to an
    option. Only the bits specified below are used; the remainder of
    the quadword bits are reserved and must be zero.

    Each option (bit) has a symbolic name, defined by the $CAPDEF
    macro. The flags argument is constructed by performing a logical
    OR operation using the symbolic names of each desired option.

    The following table describes the symbolic name of each option:

    Symbolic Name          Description

    CAP$M_FLAG_DEFAULT_    Indicates that the specified operations
    ONLY                   are to be performed on the global
                           context cell instead of on a specific
                           kernel thread. This bit supersedes any
                           individual kernel thread specified in
                           pidadr or prcnam. Specifying this bit
                           constant applies the service operations
                           to the capabilities for all newly created
                           processes.

    CAP$M_FLAG_PERMANENT   Indicates whether to modify the permanent
                           user process capabilities in addition to
                           the current image copy. If CAP$M_FLAG_
                           PERMANENT is set, then both the permanent
                           and current user process capabilities are
                           modified. If this bit is clear or flags is
                           unspecified, then just the current image
                           process capabilities are modified.

                           This bit also determines which of the
                           capability masks are returned in prev_
                           mask. If set, the permanent mask, used
                           to reinitialize the current set at image
                           rundown, is returned. If the bit is clear
                           or the flags argument is not specified,
                           the current running mask is returned.

    CAP$M_FLAG_CHECK_CPU   Determines whether the kernel thread can
                           be left in a nonrunnable state under some
                           circumstances. No operation of this
                           service will allow a transition from
                           runnable to blocked state; however, if
                           the kernel thread is already at a blocked
                           state, this bit determines whether the
                           result of the operation must leave it
                           runnable. If CAP$M_FLAG_CHECK_CPU is set
                           or flags is unspecified, the kernel thread
                           will be checked to ensure it can safely
                           run on one of the CPUs in the active set;
                           otherwise, any state operations on kernel
                           threads already in a blocked state will be
                           allowed.

    CAP$M_PURGE_WS_IF_     Causes the working set of the process
    NEW_RAD                to be purged if the choice of capability
                           results in a change to the home RAD of the
                           process.

232  –  $PROCESS SCAN

    Creates and initializes a process context that is used by $GETJPI
    to scan processes on the local system or across the nodes in an
    OpenVMS Cluster system.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$PROCESS_SCAN  pidctx [,itmlst]

    C Prototype

      int sys$process_scan  (unsigned int *pidctx, void *itmlst);

232.1  –  Arguments

 pidctx

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Context value supplied by $PROCESS_SCAN to be used as the pidadr
    argument of $GETJPI. The pidctx argument is the 32- or 64-bit
    address (on Alpha and Integrity server systems) of a longword
    that is to receive the process context longword. This longword
    normally contains 0 or a previous context. If it contains a
    previous context, the old context is deleted. If it contains
    a value other than 0 or a previous context, the old value is
    ignored.

 itmlst

    OpenVMS usage:32-bit item_list_3 or 64-bit item_list_64b
    type:         longword (unsigned) for 32-bit; quadword (unsigned)
                  for 64-bit
    access:       read only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Item list specifying selection criteria to be used by the scan or
    to control the scan.

    The itmlst argument is the 32- or 64-bit address (on Alpha and
    Integrity server systems) of a list of item descriptors, each of
    which describes one selection criterion or control option. Within
    each selection criterion you can include several item entries. An
    item list in 32-bit format is terminated by a longword of 0; an
    item list in 64-bit format is terminated by a quadword of 0. All
    items in an item list must be of the same format-either 32-bit or
    64-bit.

    The information in the item list is passed to the item descriptor
    in one of two ways. If the item descriptor can always hold the
    actual value of the selection criterion, the value is placed in
    the second longword of the item descriptor and the buffer length
    is specified as 0. If the item descriptor points to the actual
    value of the selection criterion, the address of the value is
    placed in the second longword of the item descriptor and you must
    specify the buffer length for the selection criterion. Each item
    code description specifies whether the information is passed by
    value or by reference.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagrams and descriptor fields tables.

233  –  $PURGWS

    Removes a specified range of pages from the current working set
    of the calling process to make room for pages required by a new
    program segment.

    Format

      SYS$PURGWS  inadr

    C Prototype

      int sys$purgws  (struct _va_range *inadr);

233.1  –  Argument

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Starting and ending virtual addresses of the range of pages to be
    purged. The inadr argument is the address of a 2-longword array
    containing, in order, the starting and ending process virtual
    addresses. The addresses are adjusted up or down to fall on CPU-
    specific page boundaries. Only the virtual page number portion of
    each virtual address is used; the low-order byte-within-page bits
    are ignored.

234  –  $PURGE WS (Alpha and Integrity servers)

    On Alpha and Integrity server systems, removes a specified range
    of pages from the current working set of the calling process to
    make room for pages required by a new program segment.

    This service accepts 64-bit addresses.

    Format

      SYS$PURGE_WS  start_va_64 ,length_64

    C Prototype

      int sys$purge_ws  (void *start_va_64, unsigned __int64

                        length_64);

234.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the pages to be purged from the
    working set. The specified virtual address will be rounded down
    to a CPU-specific page boundary.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be purged from the working
    set. The specified length will be rounded up to a CPU-specific
    page boundary so that it includes all CPU-specific pages in the
    requested range.

235  –  $PUT

    The Put service inserts a record into a file.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

236  –  $PUTMSG

    Writes informational and error messages to processes.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

                                   NOTE

       The return value from *actrtn is checked to determine
       whether or not the message is output.

    Format

      SYS$PUTMSG  msgvec ,[actrtn] ,[facnam] ,[actprm]

    C Prototype

      int sys$putmsg  (void *msgvec, int (*actrtn)(__unknown_params),

                      void *facnam, unsigned __int64 actprm);

236.1  –  Arguments

 msgvec

    OpenVMS usage:cntrlblk
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Message argument vector specifying the message or messages to be
    written and options that $PUTMSG is to use in writing the message
    or messages. The msgvec argument is the 32- or 64-bit address (on
    Alpha and Integrity server systems) of the message vector.

    The message vector consists of one longword followed by one or
    more message descriptors, one descriptor per message.

    To view the diagram of the contents of the first longword and the
    message vector fields table, see the VSI OpenVMS System Services
    Reference Manual.

 actrtn

    OpenVMS usage:procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    User-supplied action routine to be executed during message
    processing. The actrtn argument is the 32- or 64-bit address
    (on Alpha and Integrity server systems) of this routine.

    Note that the first argument passed to the action routine is the
    address of a character string descriptor pointing to the message
    text; the parameter specified by actprm is the second.

    The action routine receives control after a message is formatted
    but before it is actually written to the user.

    The completion code in general register R0 from the action
    routine indicates whether the message should be written. If the
    low-order bit of R0 is set (1), then the message will be written.
    If the low-order bit is cleared (0), then the message will not be
    written.

    If you do not specify actrtn or specify it as 0 (the default), no
    action routine executes.

    Because $PUTMSG writes messages only to SYS$ERROR and SYS$OUTPUT,
    an action routine is useful when output must be directed to, for
    example, a file.

 facnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor: fixed-length string
                  descriptor (Alpha and Integrity servers)
    Facility prefix to be used in the first or only message written
    by $PUTMSG. The facnam argument is the 32- or 64-bit address
    (on Alpha and Integrity server systems) of a character string
    descriptor pointing to this facility prefix.

    If you do not specify facnam, $PUTMSG uses the default facility
    prefix associated with the message.

 actprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Parameter to be passed to the action routine. The actprm argument
    is a longword value containing this parameter. If you do not
    specify actprm, no parameter is passed.

237  –  $QIO

    Queues an I/O request to a channel associated with a device. This
    service completes asynchronously; for synchronous completion, use
    the Queue I/O Request and Wait ($QIOW) service.

    Format

      SYS$QIO  [efn] ,chan ,func ,[iosb] ,[astadr] ,[astprm] ,[p1]

               ,[p2] ,[p3] ,[p4] ,[p5] ,[p6]

    C Prototype

      int sys$qio  (unsigned int efn, unsigned short int chan,

                   unsigned int func, struct _iosb *iosb, void

                   (*astadr)(__unknown_params), __int64  astprm, void

                   *p1, __int64 p2, __int64  p3, __int64 p4, __int64

                   p5, __int64 p6);

237.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Event flag that $QIO is to set when the I/O operation completes.
    The efn argument is a longword value containing the number of the
    event flag; however, $QIO uses only the low-order byte.

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    I/O channel assigned to the device to which the request is
    directed. The chan argument is a word value containing the number
    of the I/O channel; however, $QIO uses only the low-order word.

    Specifying an invalid value for the chan argument will result in
    either SS$_IVCHAN or SS$_IVIDENT being returned.

 func

    OpenVMS usage:function_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Device-specific function codes and function modifiers specifying
    the operation to be performed. The func argument is a longword
    containing the function code.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    I/O status block to receive the final completion status of the
    I/O operation. The iosb argument is the address of the quadword
    I/O status block.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    AST service routine to be executed when the I/O completes. The
    astadr argument is the address of the AST routine.

    The AST routine executes at the access mode of the caller of
    $QIO.

 astprm

    OpenVMS usage:user_arg
    type:         quadword unsigned (Alpha and Integrity servers)
    access:       read only
    mechanism:    by 64-bit value (Alpha and Integrity servers)
    AST parameter to be passed to the AST service routine. On Alpha
    and Integrity server systems, the astprm argument is a quadword
    value containing the AST parameter.

 p1 to p6

    OpenVMS usage:varying_arg
    type:         quadword (unsigned) (Alpha and Integrity servers)
    access:       read only
    mechanism:    by 32- or 64-bit reference or by 64-bit value,
                  depending on the I/O function (Alpha and Integrity
                  servers)
    Optional device-specific and function-specific I/O request
    parameters.

238  –  $QIOW

    The Queue I/O Request and Wait service queues an I/O request to a
    channel associated with a device.

    The $QIOW service completes synchronously; however, VSI
    recommends that you use an IOSB with this service to avoid
    premature completion.

    For asynchronous completion, use the Queue I/O Request ($QIO)
    service.

    In all other respects, $QIOW is identical to $QIO. For more
    information about $QIOW, refer to the description of $QIO.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$QIOW  [efn] ,chan ,func ,[iosb] ,[astadr]

                ,[astprm] ,[p1] ,[p2] ,[p3]

                ,[p4] ,[p5] ,[p6]

    C Prototype

      int sys$qiow  (unsigned int efn, unsigned short int chan,

                    unsigned int func, struct _iosb *iosb, void

                    (*astadr)(__unknown_params), __int64  astprm,

                    void *p1, __int64 p2, __int64  p3, __int64 p4,

                    __int64 p5, __int64  p6);

239  –  $READ

    The Read service retrieves a specified number of bytes from
    a file (beginning on a block boundary) and transfers them to
    memory. A Read service using block I/O can be performed on any
    file organization.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

240  –  $READEF

    Returns the current status of all 32 event flags in a local or
    common event flag cluster and indicates whether the specified
    event flag is set or clear.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$READEF  efn ,state

    C Prototype

      int sys$readef  (unsigned int efn, unsigned int *state);

240.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of any event flag in the cluster whose status is to be
    returned. The efn argument is a longword containing this number;
    however, $READEF uses only the low-order byte. Specifying an
    event flag within a cluster requests that $READEF return the
    status of all event flags in that cluster.

    There are two local event flag clusters, which are local to the
    process: cluster 0 and cluster 1. Cluster 0 contains event flag
    numbers 0 to 31, and cluster 1 contains event flag numbers 32 to
    63.

    There are two common event flag clusters: cluster 2 and cluster
    3. Cluster 2 contains event flag numbers 64 to 95, and cluster 3
    contains event flag numbers 96 to 127.

 state

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    State of all event flags in the specified cluster. The state
    argument is the 32- or 64-bit address (on Alpha and Integrity
    server systems) of a longword into which $READEF writes the state
    (set or clear) of the 32 event flags in the cluster.

241  –  $REGISTRY (Alpha and Integrity servers)

    On Alpha and Integrity server systems, interface to the OpenVMS
    Registry database server.

    The $REGISTRY service allows you to query, update, and set keys,
    subkeys, and values in the OpenVMS Registry database.

    The $REGISTRY service supports both asynchronous and synchronous
    operations. For asynchronous completion, use the Registry
    ($REGISTRY) system service.

    For synchronous completion, use the Registry and Wait
    ($REGISTRYW) system service. The $REGISTRYW system service is
    identical to the $REGISTRY system service, except that $REGISTRYW
    returns to the caller after the system completes the requested
    operation. For additional information about system service
    completion, see the Synchronize ($SYNCH) system service.

    This system service is 64-bit compatible.

    Format

      SYS$REGISTRY  [efn] ,func ,0 ,itmlst ,[iosb or iosa_64]

                    [,astadr or astadr_64] [,astprm or astprm_64]

                    [,timeout]

    C Prototype

      int sys$registry  (unsigned int efn, unsigned int func, void *,

                        void *itmlst, struct _iosb *iosb, ...);

241.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be used by $REGISTRY. If you do not
    specify the event flag, the system defaults to event flag 0. The
    event flag is initially cleared by $REGISTRY and then set when
    the operation completes.

 func

    OpenVMS usage:function_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Function code specifying the action that $REGISTRY is to perform.
    The func argument is a longword containing this function code.
    The function code can contain function modifiers. For more
    information on function modifiers, see the Function Modifiers
    section.

    A single call to $REGISTRY can specify only one function code.
    All function codes require additional information to be passed in
    the call with the itmlst argument.

 itmlst

    OpenVMS usage:32-bit item_list_3 or 64-bit item_list_64b
    type:         longword (unsigned) for 32-bit; quadword (unsigned)
                  for 64-bit
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Item list supplying information that the system will use to
    perform the function specified by the func argument.

    The itmlst argument is the address of the item list. The item
    list consists of one or more sets of item descriptors. Each
    descriptor is either an item_list_3 or item_list_64b format.

    Some function codes allow you to specify multiple operations in
    a single call. In this case, you must place the REG$_SEPARATOR
    item code between each set of item codes. Each request, separated
    by a REG$_SEPARATOR item code, can contain the item codes in any
    order.

    You can specify item codes as either input or output parameters.
    Input parameters modify functions, set context, or describe
    the information to be returned. Output parameters return the
    requested information.

    For item_list_3 lists, you must terminate the list with a
    longword of 0. For item_list_64b lists, you must terminate the
    list with a quadword of 0.

    To view the item code diagrams and descriptor fields tables, see
    the VSI OpenVMS System Services Reference Manual.

 iosb or iosa_64

    OpenVMS usage:status_block
    type:         buffer
    access:       write only
    mechanism:    by reference
    Status block to receive the final completion status and
    information of the $REGISTRY operation.

    If multiple operations are requested for a function code, the
    value returned in iosb is either SS$_NORMAL or SS$_REGERROR.

    A more specific return status for each operation is returned in
    the REG$_RETURNSTATUS item code (if specified).

    The iosb argument is the address of the $REGISTRY status block.
    To view the diagram, see the VSI OpenVMS System Services Reference
    Manual.

    When $REGISTRY begins execution, it clears the quadword I/O
    status block if you specify the iosb argument.

    Although the iosb argument is optional, VSI strongly recommends
    that you specify it for the following reasons:

    o  If you are using an event flag to signal the completion of
       the service, you can test the I/O status block for a condition
       value to be sure that the event flag was not set by an event
       other than service completion.

    o  If you are using the $SYNCH system service to synchronize
       completion of the service, the I/O status block is a required
       argument for $SYNCH.

    The condition value returned in R0 and the condition value
    returned in the I/O status block provide information about
    different aspects of the call to the $REGISTRY service. The
    condition value returned in R0 provides information about the
    success or failure of the service call itself; the condition
    value returned in the I/O status block provides information about
    the success or failure of the service operation.

    To assess the success or failure of the call to $REGISTRY
    accurately, you must first check the condition value returned
    in R0. If R0 contains a successful value, you must check the
    condition value in the I/O status block.

    The following table defines the item descriptor fields:

    Descriptor
    Field          Definition

    Status         A longword specifying the final status of the
                   $REGISTRY service. If you request multiple
                   operations for a function code, the system returns
                   either SS$_NORMAL or SS$_REGERROR to iosb. This
                   field is set to 0 (zero) when the operation
                   begins.
    Reserved       A reserved longword.

 astadr or astadr_64

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    AST service routine to be executed when $REGISTRY completes. The
    astadr argument is the address of this routine. If you specify
    astadr, the AST routine executes at the same access mode as the
    caller of the $REGISTRY service.

    If the $REGISTRY service is not called successfully (that is,
    if it returns an error immediately), the AST routine is not
    executed.

 astprm or astprm_64

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astadr argument. The astprm argument specifies this
    longword parameter.

 timeout

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Timeout value specifies the number of seconds allotted to
    $REGISTRY to perform the request. If the Registry server does
    not complete the request within the time you allot, $REGISTRY
    returns REG$_NORESPONSE.

242  –  $REGISTRYW (Alpha and Integrity servers)

    On Alpha and Integrity server systems, interface to the OpenVMS
    Registry database server.

    The $REGISTRY service supports both asynchronous and synchronous
    operations. For asynchronous completion, use the Registry
    ($REGISTRY) system service.

    For synchronous completion, use the Registry and Wait
    ($REGISTRYW) system service. The $REGISTRYW system service is
    identical to the $REGISTRY system service, except that $REGISTRYW
    returns to the caller after the system completes the requested
    operation. For additional information about system service
    completion, see the Synchronize ($SYNCH) system service.

    This system service is 64-bit compatible.

    Format

      SYS$REGISTRYW  [efn] ,func ,0 ,itmlst ,[iosb or iosa_64]

                     [,astadr or astadr_64] [,astprm or astprm_64]

                     [,timeout]

    C Prototype

      int sys$registryw  (unsigned int efn, unsigned int func, void

                         *, void *itmlst, struct _iosb *iosb, ...);

243  –  $RELEASE

    The Release service unlocks the record specified by the contents
    of the record file address (RAB$W_RFA) field of the RAB.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

244  –  $RELEASE GALAXY LOCK (Alpha Only)

    Releases ownership of an OpenVMS Galaxy lock.

    Note that this system service is supported only in an OpenVMS
    Alpha Galaxy environment.

    For more information about programming with OpenVMS Galaxy system
    services, see the VSI OpenVMS Alpha Partitioning and Galaxy Guide.

    Format

      SYS$RELEASE_GALAXY_LOCK  handle

    C Prototype

      int sys$release_galaxy_lock  (unsigned __int64 lock_handle);

244.1  –  Arguments

 handle

    OpenVMS usage:galaxy lock handle
    type:         quadword (unsigned)
    access:       read
    mechanism:    input by value
    The 64-bit lock handle that identifies the lock to be released.
    This value is returned by SYS$CREATE_GALAXY_LOCK.

245  –  $REMOVE

    The Remove service deletes a file name from a directory. It is
    the reverse of the Enter service.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

246  –  $REM HOLDER

    Deletes the specified holder record from the target identifier's
    list of holders.

    Format

      SYS$REM_HOLDER  id ,holder

    C Prototype

      int sys$rem_holder  (unsigned int id, struct _generic_64

                          *holder);

246.1  –  Arguments

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Binary value of target identifier whose holder is deleted when
    $REM_HOLDER completes execution. The id argument is a longword
    containing the identifier value.

 holder

    OpenVMS usage:rights_holder
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Identifier of holder being deleted when $REM_HOLDER completes
    execution. The holder argument is the address of a quadword
    containing the UIC identifier of the holder in the first longword
    and the value of 0 in the second longword.

247  –  $REM IDENT

    Removes the specified identifier record and all its holder
    records (if any) from the rights database.

    Format

      SYS$REM_IDENT  id

    C Prototype

      int sys$rem_ident  (unsigned int id);

247.1  –  Argument

 id

    OpenVMS usage:rights_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Binary value of identifier deleted from rights database when
    $REM_IDENT completes execution. The id argument is a longword
    containing the identifier value.

248  –  $RENAME

    You can use the Rename service to change the name, type, or
    version of a file, or to move a file to another directory by
    changing its directory specification. However, you cannot use
    this service to move a file to another device.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

249  –  $RESCHED

    Requests reschedule of a process.

    Format

      SYS$RESCHED

    C Prototype

      int sys$resched  (void);

249.1  –  Arguments

    None.

250  –  $RESUME

    Causes a process previously suspended by the Suspend Process
    ($SUSPND) service to resume execution or cancels the effect of a
    subsequent suspend request.

    Format

      SYS$RESUME  [pidadr] ,[prcnam]

    C Prototype

      int sys$resume  (unsigned int *pidadr, void *prcnam);

250.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) of the process to be resumed. The
    pidadr argument is the address of a longword containing the PID.
    The pidadr argument can refer to a process running on the local
    node or a process running on another node in the cluster.

    You must specify the pidadr argument to delete processes in other
    UIC groups.

 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 resumed. 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.

    You can use the prcnam argument to resume only processes in the
    same UIC group as the calling process, because process names
    are unique to UIC groups, and the operating system uses the UIC
    group number of the calling process to interpret the process
    name specified by the prcnam argument. You must use the pidadr
    argument to delete processes in other UIC groups.

251  –  $REVOKID

    Removes the specified identifier from the rights list of the
    process or the system. If the identifier is listed as a holder
    of any other identifier, the appropriate holder records are also
    deleted.

    Format

      SYS$REVOKID  [pidadr] ,[prcnam] ,[id] ,[name] ,[prvatr]

    C Prototype

      int sys$revokid  (unsigned int *pidadr, void *prcnam, struct

                       _generic_64 *id, void *name, unsigned int

                       *prvatr, unsigned int segment);

251.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) number of the process affected when
    $REVOKID completes execution. The pidadr argument is the address
    of a longword containing the PID of the process to be affected.
    You use -1 to indicate the system rights list. When pidadr is
    passed, it is also returned; therefore, you must pass it as a
    variable rather than a constant.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Process name on which $REVOKID operates. The prcnam argument
    is the address of a character string descriptor containing the
    process name. The maximum length of the name is 15 characters.
    Because the UIC group number is interpreted as part of the
    process name, you must use pidadr to specify the rights list
    of a process in a different group.

 id

    OpenVMS usage:rights_id
    type:         quadword (unsigned)
    access:       modify
    mechanism:    by reference
    Identifier and attributes to be removed when $REVOKID completes
    execution. The id argument is the address of a quadword
    containing the binary identifier code to be removed in the first
    longword and the attributes in the second longword.

    Symbol values are offsets to the bits within the longword. You
    can also obtain the values as masks with the appropriate bit set
    using the prefix KGB$M rather than KGB$V. The following symbols
    for each bit position are defined in the system macro library
    ($KGBDEF):

    Bit Position           Meaning When Set

    KGB$V_DYNAMIC          Allows unprivileged holders of the
                           identifier to remove it from or add it
                           to the process rights database by using
                           the DCL command SET RIGHTS_LIST.

    KGB$V_NOACCESS         Makes any access rights of the identifier
                           null and void. This attribute is intended
                           as a modifier for a resource identifier or
                           the Subsystem attribute.

    KGB$V_RESOURCE         Allows holders of an identifier to charge
                           disk space to the identifier. It is used
                           only for file objects.

    KGB$V_SUBSYSTEM        Allows holders of the identifier to
                           create and maintain protected subsystems
                           by assigning the Subsystem ACE to the
                           application images in the subsystem.

    You must specify either id or name. Because the id argument is
    returned as well as passed if you specify name, you must pass it
    as a variable rather than a constant in this case.

 name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the identifier removed when $REVOKID completes execution.
    The name argument is the address of a descriptor pointing to the
    name of the identifier.

 prvatr

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Attributes of the deleted identifier. The prvatr argument is
    the address of a longword used to store the attributes of the
    identifier.

252  –  $REWIND

    The Rewind service sets the context of a record stream to the
    first record in the file. RMS alters the context of the next
    record to indicate the first record as being the next record.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

253  –  $RMSRUNDWN

    Closes all files opened by OpenVMS RMS for the image or process
    and halts I/O activity. This routine performs a $CLOSE service
    for each file opened for processing.

    Format

      SYS$RMSRUNDWN  buf-addr ,type-value

    C Prototype

      int sys$rmsrundwn  (void *buf-addr, unsigned char *type-value);

253.1  –  Arguments

 buf-addr

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor
    A descriptor pointing to a 22-byte buffer that is to receive the
    device identification (16 bytes) and the file identification (6
    bytes) of an improperly closed output file. The buf-addr argument
    is the address of the descriptor that points to the buffer.

 type-value

    OpenVMS usage:byte_unsigned
    type:         byte (unsigned)
    access:       read only
    mechanism:    by value
    A single byte code that specifies the type of I/O rundown to be
    performed. The type-value argument is the actual value used.

    This type of code has the following values and meanings:

    0     Rundown of image and indirect I/O for process permanent
          files.
    1     Rundown of image and process permanent files. The caller's
          mode must not be user.
    2     Abort RMS I/O. The caller's mode must be either executive
          or kernel (the system calls the I/O rundown control routine
          with this argument for process deletion).

254  –  $RPCC 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, returns a 64-bit, process-
    based, high-resolution time counter.

    Format

      SYS$RPCC_64

    C Prototype

      uint64 sys$rpcc_64  ();

255  –  $SCAN INTRUSION

    Scans the intrusion database for suspects or intruders during a
    login attempt, audits login failures and updates records, or adds
    new records to the intrusion database.

    Format

      SYS$SCAN_INTRUSION  logfail_status ,failed_user ,job_type

                          ,[source_terminal] ,[source_node]

                          ,[source_user] ,[source_address]

                          ,[failed_password] ,[parent_user]

                          ,[parent_id] ,[flags]

    C Prototype

      int sys$scan_intrusion  (unsigned int logfail_status,

                              void *failed_user, unsigned int

                              job_type, void *source_terminal, void

                              *source_node, void *source_user, void

                              *source_address, void *failed_password,

                              void *parent_user, unsigned int

                              parent_id, unsigned int flags);

255.1  –  Arguments

 logfail_status

    OpenVMS usage:status code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Reason why the user's login attempt failed. The logfail_status
    argument is a longword containing the login failure status code.

    The logfail_status argument can contain any valid message code.
    For example, the value of the logfail_status argument is SS$_
    NOSUCHUSER if the user name the user entered does not exist on
    the system.

    If the logfail_status argument contains a failure status, the
    service performs a suspect scan. Here, the service searches the
    intrusion database for intruder suspects as well as intruders.
    If the value of the logfail_status argument is a successful
    message, such as SS$_NORMAL, the service scans the database only
    for intruders. For more information about how the database works,
    see the VSI OpenVMS Guide to System Security.

 failed_user

    OpenVMS usage:char_string or item_list_3
    type:         character-coded text string or longword (unsigned)
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor or by
                  reference
    If the CIA$M_ITEMLIST flag is FALSE:

    This argument is the user name associated with the unsuccessful
    login attempt. The failed_user argument is the address of a
    character-string descriptor pointing to the failed user name.

    A failed user name consists of 1 to 32 alphanumeric characters.

    If the CIA$M_ITEMLIST flag is TRUE:

    The failed_user argument is the address of a 32-bit item list. If
    the item list is used, one item, the CIA$_FAILED_USERNAME item,
    must be present in the item list.

    The following table lists the valid item descriptions for the
    failed_user argument:

    Item               Description

    CIA$_FAILED_       Address of a buffer containing the failed user
    USERNAME           name.
    CIA$_SCSNODE       Address of the 8-character null-padded SCS
                       node name on which the intrusion happened.
    CIA$_USER_DATA     Address of a 256-byte buffer, available for
                       passing third party specified data.

 job_type

    OpenVMS usage:job type
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Type of job that failed. The job_type argument is a longword
    indicating the type of job that failed.

    The $JPIDEF macro defines the following values for the job_type
    argument:

    o  JPI$K_BATCH

    o  JPI$K_DETACHED

    o  JPI$K_DIALUP

    o  JPI$K_LOCAL

    o  JPI$K_NETWORK

    o  JPI$K_REMOTE

 source_terminal

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Source terminal where the login attempt is occurring. The source_
    terminal argument is the address of a character-string descriptor
    pointing to the device name of the terminal from which the login
    attempt originates.

    A source terminal device name consists of 1 to 64 alphanumeric
    characters, including underscores (_)  and colons (:).

 source_node

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the node from which the user's login attempt originates.
    The source_node argument is the address of a character-string
    descriptor pointing to the source node name string.

    A source node name consists of 1 to 1024 characters. No specific
    characters, format, or case is required for a source node name
    string.

 source_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    User name associated with the login attempt. The source_user
    argument is the address of a character-string descriptor pointing
    to the source user name string.

    A source user name consists of 1 to 32 alphanumeric characters,
    including dollar signs ($)  and underscores (_).

 source_addr

    OpenVMS usage:node address
    type:         descriptor
    access:       read only
    mechanism:    by reference
    Source DECnet for OpenVMS address from which the login attempt
    originates. The source_addr argument is the address of a
    descriptor containing the source node address.

 failed_password

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Password the user entered for the login attempt. The failed_
    password argument is the address of a character-string descriptor
    pointing to the plaintext password the user entered to log in.

    A failed password is a password of 0 to 32 characters that did
    not allow the user to log in to the system. This argument is not
    stored in the intrusion database and is only used for auditing
    during break-in attempts.

 parent_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Parent process name of the failed login. The parent_user argument
    is the address of a character-string descriptor pointing to the
    parent process name of the failed login process.

    A parent process name consists of 1 to 15 characters. This
    argument should be specified only for failed spawn commands.

 parent_id

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Process identification of the parent process from which the login
    was attempted. The parent_id argument is a longword containing
    the parent process identification.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Operational instructions for the service. The flags argument is a
    longword bit mask wherein each bit corresponds to an option.

    Each flag option has a symbolic name. The $CIADEF macro defines
    the following valid names for the $SCAN_INTRUSION service:

    Symbolic Name      Description

    CIA$M_NOAUDIT      If set, this flag indicates that the service
                       should instruct the security server to not
                       audit the login failure or the break-in
                       attempt. If the flag is set, you are expected
                       to do your own auditing.
    CIA$M_IGNORE_      Specifies that the service should not wait for
    RETURN             the return status from the security server. No
                       return status from the server's function will
                       be returned to the caller.
    CIA$M_ITEMLIST     If FALSE, the failed_user argument is a
                       character string. If TRUE, this argument is
                       a 32-bit item list.
    CIA$M_REAL_        If set, indicates that the user name passed as
    USERNAME           the failed user name is read and known to the
                       system.
    CIA$M_SECONDARY_   Indicates that the failed password passed to
    PASSWORD           the service was the secondary password. If the
                       flag is clear, the password is assumed to be
                       the primary password.

256  –  $SCHDWK

    Schedules the awakening (restarting) of a process that has placed
    itself in a state of hibernation with the Hibernate ($HIBER)
    service.

    Format

      SYS$SCHDWK  [pidadr] ,[prcnam] ,daytim ,[reptim]

    C Prototype

      int sys$schdwk  (unsigned int *pidadr, void *prcnam, struct

                      _generic_64 *daytim, struct _generic_64

                      *reptim);

256.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) of the process to be awakened. The
    pidadr argument is the address of a longword containing the 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 awaken processes in other
    UIC groups.

 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 awakened. The prcnam 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 string
    of from 1 to 15 characters.

    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.

    You can use the prcnam argument to awaken only processes in the
    same UIC group as the calling process because process names are
    unique to UIC groups, and the operating system uses the UIC
    group number of the calling process to interpret the process
    name specified by the prcnam argument. You must use the pidadr
    argument to awaken processes in other UIC groups.

 daytim

    OpenVMS usage:date_time
    type:         quadword
    access:       read only
    mechanism:    by reference
    Time at which the process is to be awakened. The daytim argument
    is the address of a quadword containing this time in the system
    64-bit time format. A positive time value specifies an absolute
    time at which the specified process is to be awakened. A negative
    time value specifies an offset (delta time) from the current
    time.

 reptim

    OpenVMS usage:date_time
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Time interval at which the wakeup request is to be repeated.
    The reptim argument is the address of a quadword containing this
    time interval. The time interval must be expressed in delta time
    format.

    The time interval specified cannot be less than 10 milliseconds;
    if it is, $SCHDWK automatically increases it to 10 milliseconds.

    If you do not specify reptim, a default value of 0 is used, which
    specifies that the wakeup request is not to be repeated.

257  –  $SCHED

    Affects process scheduling. This service is intended for use by a
    class scheduler process.

    Format

      SYS$SCHED  func ,p1 ,p2 ,p3

    C Prototype

      int sys$sched  (unsigned int func, unsigned int *p1, unsigned

                     int *p2, unsigned int *p3);

257.1  –  Arguments

 func

    OpenVMS usage:function_code
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value
    Function code specifying the action $SCHED is to perform. The
    func argument is a longword containing this code.

    For a list of the valid function codes for $SCHED, see the VSI
    OpenVMS System Services Reference Manual.

 p1, p2, p3

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       varies
    mechanism:    varies
    The meaning of the p1, p2, and p3 arguments depends on the
    function code specified in the func argument, and is defined
    in the Function Codes section.

258  –  $SEARCH

    The Search service scans a directory file and fills in various
    NAM block fields. This service should be preceded by the Parse
    service, in order to initialize the NAM block appropriately.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

259  –  $SETAST

    Enables or disables the delivery of asynchronous system traps
    (ASTs) for the access mode from which the service call was
    issued.

    Format

      SYS$SETAST  enbflg

    C Prototype

      int sys$setast  (char enbflg);

259.1  –  Argument

 enbflg

    OpenVMS usage:boolean
    type:         byte (unsigned)
    access:       read only
    mechanism:    by value
    Value specifying whether ASTs are to be enabled. The enbflg
    argument is a byte containing this value. The value 1 enables
    AST delivery for the calling access mode; the value 0 disables
    AST delivery.

260  –  $SETCLUEVT

    Establishes a request for notification when an OpenVMS Cluster
    configuration event occurs.

    Format

      SYS$SETCLUEVT  event ,astadr ,[astprm] ,[acmode] ,[handle]

    C Prototype

      int sys$setcluevt  (unsigned int event, void

                         (*astadr)(__unknown_params), int

                         astprm, unsigned int acmode, struct

                         _generic_64 *handle);

260.1  –  Arguments

 event

    OpenVMS usage:event_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Event code indicating the type of cluster configuration event for
    which an AST is to be delivered. The event argument is a value
    indicating which type of event is of interest.

    Each event type has a symbolic name. The $CLUEVTDEF macro defines
    the following symbolic names:

    Symbolic Name      Description

    CLUEVT$C_ADD       One or more OpenVMS nodes have been added to
                       the OpenVMS Cluster system.
    CLUEVT$C_REMOVE    One or more OpenVMS nodes have been removed
                       from the OpenVMS Cluster system.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    Notification AST routine to receive control after a change in
    OpenVMS Cluster configuration occurs.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Optional AST parameter to be passed to the AST service routine.
    The astprm argument is a longword value containing the AST
    parameter.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Optional access mode at which the configuration event AST is to
    execute. The acmode argument is a longword containing the access
    mode.

    Each access mode has a symbolic name. The $PSLDEF macro defines
    the following symbols for the four access modes:

    Symbol         Access Mode

    PSL$C_KERNEL   Kernel
    PSL$C_EXEC     Executive
    PSL$C_SUPER    Supervisor
    PSL$C_USER     User

    The value of the access mode must not be more privileged than the
    access mode of the caller.

 handle

    OpenVMS usage:identifier
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    Optional identifier to receive a value that uniquely identifies
    this AST request. $SETCLUEVT sets this handle to a unique value
    so that it can later be used to identify the request in the
    $CLRCLUEVT and $TSTCLUEVT services.

261  –  $SETDDIR

    Allows you to read and change the default directory string for
    the process. Do not include any device or file name strings in
    the default directory string; include only the [DIR] syntax.
    Modify the device portion of the current default directory
    location through the specification of the SYS$DISK logical name.
    Redefine this logical name using either the $CRELNM edtsystem
    service or the LIB$SET_LOGICAL RTL routine.

    Format

      SYS$SETDDIR  [new-dir-addr] ,[length-addr] ,[cur-dir-addr]

    C Prototype

      int sys$setddir  (void *newdiraddr, unsigned short int

                       *lengthaddr, void *curdiraddr);

261.1  –  Arguments

 new-dir-addr

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    A descriptor of the new default directory. The new-dir-addr
    argument is the address of the descriptor that points to the
    buffer containing the new directory specification that RMS will
    use to set the new process-default directory. If the default
    directory is not to be changed, the value of the new-dir-addr
    argument should be 0.

 length-addr

    OpenVMS usage:word_unsigned
    type:         word (unsigned)
    access:       write only
    mechanism:    by reference
    A word that is to receive the length of the current default
    directory. The length-addr argument is the address of the word
    that will receive the length. If you do not want this value
    returned, specify the value 0.

 cur-dir-addr

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    A descriptor of a buffer that is to receive the current default
    directory string. The cur-dir-addr argument is the address of the
    descriptor that points to the buffer area that is to receive the
    current directory string.

262  –  $SETDFPROT

    Allows you to read and write the default file protection for the
    process.

    Format

      SYS$SETDFPROT  [new-def-prot-addr] ,[cur-def-prot-addr]

    C Prototype

      int sys$setdfprot  (unsigned short int *newdefprotaddr,

                         unsigned short int *curdefprotaddr);

262.1  –  Arguments

 new-def-prot-addr

    OpenVMS usage:file_protection
    type:         word (unsigned)
    access:       read only
    mechanism:    by reference
    A word that specifies the new default file protection
    specification. The new-def-prot-addr argument is the address
    of the word that specifies the desired protection. If you do not
    want the process-default file protection to be changed, specify
    the value 0.

 cur-def-prot-addr

    OpenVMS usage:file_protection
    type:         word (unsigned)
    access:       write only
    mechanism:    by reference
    A word that is to receive the current default file protection
    specification. The cur-def-prot-addr argument is the address of
    the word that receives the current process-default protection. If
    you do not want the current default file protection, specify the
    value 0.

263  –  $SETDTI

    The Set Distributed Transaction Information service removes
    resource managers from transactions. It can also be used to
    modify transaction states.

    Format

      SYS$SETDTI  [efn], [flags], iosb, [astadr], [astprm], [contxt],

                  func, itmlst

    C Prototype

      int sys$setdti  (unsigned int efn, unsigned int flags, struct

                      _iosb *iosb, void (*astadr)(__unknown_params),

                      int astprm, unsigned int *contxt, unsigned

                      short int *func, void *itmlst);

263.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for the option
    flag described in $SETDTI Operation Flag. All undefined bits must
    be 0. If this argument is omitted, no flags are used.

    Table SYS-23 $SETDTI Operation Flag

    Flag Name      Description

    DDTM$M_SYNC    Specifies successful synchronous completion by
                   returning SS$_SYNCH. When SS$_SYNCH is returned,
                   the AST routine is not called, the event flag is
                   not set, and the I/O status block is not filled
                   in.

 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.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the I/O status block diagram.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    The AST routine 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 $SETDTI 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.

 contxt

    OpenVMS usage:contxt
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Context value obtained from a call to $GETDTI. It implicitly
    specifies a node and transaction manager log identifier.

 func

    OpenVMS usage:function_code
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Function modifier that specifies the set operation to be
    performed. The func argument is a longword value containing the
    function code.

    $SETDTI Function Codes lists the available function codes:

    Table SYS-24 $SETDTI Function Codes

    Function           Description

    DTI$K_DELETE_RM_   Deletes the resource manager specified in
    NAME               itmlst item DTI$_TRANSACTION_INFORMATION,
                       DTI$T_PART_NAME from the transaction specified
                       by DTI$_TRANSACTION_INFORMATION, DTI$T_TID.
    DTI$K_DELETE_      Deletes the transaction specified by itmlst
    TRANSACTION        item DTI$_TRANSACTION_INFORMATION, DTI$T_TID.
    DTI$K_MODIFY       Modifies the transaction specified by itmlst
    STATE              item DTI$_TRANSACTION_INFORMATION, DTI$T_TID,
                       using the transaction state specified in DTI$_
                       B_STATE.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying the transaction information that $SETDTI
    is to use. The itmlst argument is the address of a list of item
    descriptors, each of which describes an item of information. The
    list of item descriptors is terminated by a longword of 0. Each
    item descriptor in the item list acts as an input argument to
    $SETDTI and as such is only required to be read only.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the single item descriptor format.

    The following table describes the itmlst item descriptor fields:

    Field          Description

    Buffer         A word containing a user-supplied integer
    length         specifying the length (in bytes) of a buffer from
                   which $SETDTI is to read the information. The
                   length of the buffer needed depends on the item
                   code specified in the item code field of the item
                   descriptor. If the value of buffer length is too
                   small, $SETDTI will return an error status.
    Item code      A word containing a user-supplied symbolic code
                   specifying the search item that $SETDTI is to use.
                   The $DTIDEF macro defines these codes. Each item
                   code is described in the Item Codes section.
    Buffer         A longword containing the user-supplied address
    address        of the buffer from which $SETDTI reads the item
                   information.
    Return         This longword that is not used in the item list as
    length         all items are read-only.
    address

263.2  –  Item Codes

 DTI$_TRANSACTION_INFORMATION

    When you specify DTI$_TRANSACTION_INFORMATION, $SETDTI uses the
    fields in the following table to perform the $SETDTI call. Each
    function requires a specific set of fields from the transaction
    record to perform its operation. If one or more of these fields
    is not present or valid, then the $SETDTI call will fail. The
    fields required by each function are listed in the func argument
    description.

    Item               Description

    DTI$B_PART_NAME_   A byte containing the length of the
    LEN                participant name field DTI$T_PART_NAME.
    DTI$B_STATE        A byte containing the state of the
                       transaction. Two states are valid: DTI$K_
                       COMMITTED and DTI$K_ABORTED.
    DTI$T_PART_NAME    A character field containing DTI$B_PART_
                       NAME_LEN characters that specifies a resource
                       manager name.

                       To ensure smooth operation in a mixed-network
                       environment, refer to the chapter entitled
                       Managing DECdtm Services in the VSI OpenVMS
                       System Manager's Manual, for information on
                       defining node names.
    DTI$T_PART_LOG_ID  Reserved by VSI.
    DTI$T_TID          A 16-byte field containing the transaction
                       identifier.

264  –  $SETDTIW

    Sets the process current transaction and removes resource
    managers from transactions.

    $SETDTIW$ always waits for the request to complete before
    returning to the caller. Other than this, it is identical to
    $SETDTI.

    Format

      SYS$SETDTIW  [efn], [flags], iosb, [astadr], [astprm],

                   [contxt], func, itmlst

    C Prototype

      int sys$setdtiw  (unsigned int efn, unsigned int flags, struct

                       _iosb *iosb, void (*astadr)(__unknown_params),

                       int astprm, unsigned int *contxt, unsigned

                       short int *func, void *itmlst);

265  –  $SETEF

    Sets an event flag in a local or common event flag cluster.
    The condition value returned by $SETEF indicates whether the
    specified flag was previously set or clear. After the event flag
    is set, processes waiting for the event flag to be set resume
    execution.

    Format

      SYS$SETEF  efn

    C Prototype

      int sys$setef  (unsigned int efn);

265.1  –  Argument

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set. The efn argument is a
    longword containing this number; however, $SETEF uses only the
    low-order byte.

    Two local event flag clusters are local to the process: cluster 0
    and cluster 1. Cluster 0 contains event flag numbers 0 to 31, and
    cluster 1 contains event flag numbers 32 to 63.

    There are two common event flag clusters: cluster 2 and cluster
    3. Cluster 2 contains event flag numbers 64 to 95, and cluster 3
    contains event flag numbers 96 to 127.

266  –  $SETEXV

    Assigns a condition handler address to the primary, secondary, or
    last chance exception vectors, or removes a previously assigned
    handler address from any of these three vectors.

    Format

      SYS$SETEXV  [vector] ,[addres] ,[acmode] ,[prvhnd]

    C Prototype

      int sys$setexv  (unsigned int vector, int

                      (*addres)(__unknown_params), unsigned

                      int acmode, void *(*(prvhnd)));

266.1  –  Arguments

 vector

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Vector for which a condition handler is to be established or
    removed. The vector argument is a longword value. The value
    0 (the default) specifies the primary exception vector; the
    value 1, the secondary vector; and the value 2, the last chance
    exception vector.

 addres

    OpenVMS usage:procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    Condition handler address to be established for the exception
    vector specified by the vector argument. The addres argument is
    a longword value containing the address of the condition handler
    routine.

    If you do not specify addres or specify it as the value 0, the
    condition handler address already established for the specified
    vector is removed; that is, the contents of the longword vector
    is set to 0.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode for which the exception vector is to be modified.
    The acmode argument is a longword containing the access mode. The
    $PSLDEF macro defines symbols for the four access modes.

    The most privileged access mode used is the access mode of the
    caller. Exception vectors for access modes more privileged than
    the caller's access mode cannot be modified.

 prvhnd

    OpenVMS usage:procedure value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Previous condition handler address contained by the specified
    exception vector. The prvhnd argument is the address of a
    longword into which $SETEXV writes the handler's procedure value.

267  –  $SETFLT

    On Alpha and Integrity server systems, allows a process to change
    the fault characteristic on a page or range of pages.

    Format

      SYS$SETFLT  inadr ,[retadr] ,[acmode] ,fault_flag

    C Prototype

      int sys$setflt  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode, unsigned int

                      fault_flag);

267.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Starting and ending virtual addresses of the range of pages whose
    fault characteristic is to be changed. The inadr argument is the
    address of a 2-longword array containing, in order, the starting
    and ending process virtual addresses.

    Addresses are adjusted up or down to fall on CPU-specific page
    boundaries. Only the virtual page number portion of each virtual
    address is used; the low-order byte-within-page bits are ignored.

    If the starting and ending virtual addresses are the same, the
    fault characteristic is changed for a single page.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference-array reference or descriptor
    Starting and ending virtual addresses of the range of pages whose
    fault characteristic was actually changed by $SETFLT. The retadr
    argument is the address of a 2-longword array containing, in
    order, the starting and ending process virtual addresses.

    If an error occurs while the fault characteristic is being
    changed, $SETFLT writes into retadr the range of pages that were
    successfully changed before the error occurred. If no pages were
    affected before the error occurred, $SETFLT writes the value -1
    into each longword of the 2-longword array.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $SETFLT. The acmode
    argument is a longword containing the access mode. The $PSLDEF
    macro defines symbols for the access modes.

    The $SETFLT service uses whichever of the following two access
    modes is less privileged: (1)  the access mode specified by
    acmode or (2)  the access mode of the caller. To change the fault
    characteristic of any page in the specified range, the resultant
    access mode must be equal to or more privileged than the access
    mode of the owner of that page.

 fault_flag

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the request options. The fault_flag argument
    is a longword bit vector in which each bit corresponds to a flag.
    The $FLTDEF macro and the FLTDEF.H file define a symbolic name
    for each flag.

    The $FLTDEF macro defines the following symbolic names for the
    fault characteristic codes:

    Symbol             Description

    FLT$M_NO_EXECUTE   Fault on execute access attempt
    FLT$M_EXECUTABLE   Allow execute access

    If you specify the fault characteristic as the value 0, the
    characteristic defaults to no execute access.

268  –  $SETFLT 64

    On Alpha and Integrity server systems, allows a process to change
    the fault characteristic (for example, no execute) on a page or
    range of pages.

    Format

      $SETFLT_64  start_va_64 ,length_64 ,acmode ,fault_flag

                  ,return_va_64 ,return_length_64

268.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the range of pages whose fault
    characteristic is to be changed. The specified virtual address
    will be rounded down to a CPU-specifie page boundary.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space whose fault characteristic
    is to be changed. The specified length will be rounded up to a
    CPU-specific page boundary so that it includes all CPU-specific
    pages in the requested range.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $SETFLT_64. The acmode
    argument is a longword containing the access mode. The $PSLDEF
    macro defines symbols for the four access modes.

    The most privileged access mode used is the access mode of the
    caller. The calling process can modify pages only if those pages
    are owned by an access mode equal to or less privileged than the
    access mode of the calling process.

 fault_flag

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:     by value
    Flag mask specifying the request options. The fault_flag argument
    is a longword bit vector in which each bit corresponds to a flag.
    The $FLTDEF macro and the FLTDEF.H file define a symbolic name
    for each flag.

    The $FLTDEF macro defines the following symbolic names for the
    fault characteristic codes:

    Symbol             Description

    FLT$M_NO_EXECUTE   Fault on execute access attempt
    FLT$M_EXECUTABLE   Allow execute access

    If you specify the fault characteristic as the value 0, the
    characteristic defaults to no execute access.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32-bit or 64-bit reference
    The lowest process virtual address of the range of pages whose
    fault characteristics were actually changed.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32-bit or 64-bit reference
    The length of the virtual address range whose fault
    characteristics were actually changed. The return_length_64
    argument is the 32-bit or 64-bit virtual address of a naturally
    aligned quadword into which the service returns the length of the
    virtual address range in bytes.

268.2  –  Description

    The Set Fault Characteristic service sets the fault
    characteristics (for example, no execute) for the specified
    range of pages, checking that the specified mode is at least
    as privileged as the owner of the page.

    If the condition value SS$_ACCVIO is returned by this service, a
    value might not be returned in the memory locations pointed to by
    the return_va_64 and return_length_64 arguments.

    If a condition value other than SS$_ACCVIO is returned, the
    returned address and returned length indicate the pages that were
    successfully changed before the error occurred. If no pages were
    changed, the return_va_64 argument will contain the value -1, and
    a value might not be returned in the memory location pointed to
    by the return_length_64 argument.

    Required Privileges

    None

    Required Quota

    None

    Related Services

    $CRETVA_64, $EXPREG_64, $SETPRT_64

268.3  –  Condition Values Returned

    SS$_NORMAL         The service completed successfully.
    SS$_ACCVIO         The return_va_64 or return_length_64 argument
                       cannot be written by the caller.
    SS$_BADPARAM       A bad fault_flag argument was specified.
    SS$_LENVIO         A page in the specified range is beyond
                       the length of virtual addresses within that
                       region.
    SS$_NOSUCHPAG      An attempt was made to change the fault
                       characteristic on a nonexistent page.
    SS$_PAGNOTINREG    A page in the specified range is not in
                       process private adress space.
    SS$_PAGOWNVIO      The process attempted to change the protection
                       on a page owned by a more privileged access
                       mode.

269  –  $SETIME

    Changes the value of, or recalibrates, the system time.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$SETIME  [timadr]

    C Prototype

      int sys$setime  (struct _generic_64 *timadr);

269.1  –  Argument

 timadr

    OpenVMS usage:date_time
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    New absolute time value for the system time, specifying the
    number of 100-nanosecond intervals since 00:00 o'clock, November
    17, 1858. The timadr argument is the 32- or 64-bit address (on
    Alpha and Integrity server systems) of a quadword containing the
    new system time value. A negative (delta) time value is invalid.

    If you do not specify the value of timadr or specify it as 0,
    $SETIME recalibrates the system time using the time-of-year
    clock.

270  –  $SETIMR

    Sets the timer to expire at a specified time.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$SETIMR  [efn] ,daytim ,[astadr] ,[reqidt] ,[flags]

    C Prototype

      int sys$setimr  (unsigned int efn, struct _generic_64 *daytim,

                      void (*astadr)(__unknown_params), unsigned

                      __int64 reqidt, unsigned int flags);

270.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Event flag to be set when the timer expires. The efn argument
    is a longword value containing the number of the event flag;
    however, $SETIMR uses only the low-order byte.

    If you do not specify efn, event flag 0 is used.

    When $SETIMR first executes, it clears the specified event flag
    or event flag 0.

 daytim

    OpenVMS usage:date_time
    type:         quadword
    access:       read only
    mechanism:    by 64-bit reference (Alpha and Integrity servers)
    Time at which the timer expires. The daytim argument is the 64-
    bit address (on Alpha and Integrity server systems) of a quadword
    time value. A positive time value specifies an absolute time
    at which the timer expires; a negative time value specifies an
    offset (delta time) from the current time.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 64-bit reference (Alpha and Integrity servers)
    AST service routine that is to execute when the timer expires.
    The astadr argument is the 64-bit address (on Alpha and Integrity
    server systems) of the procedure value of this routine. If you do
    not specify the value of astadr or specify it as 0 (the default),
    no AST routine executes.

    The AST routine, if specified, executes at the access mode of the
    caller.

 reqidt

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Identification of the timer request. The reqidt argument is a
    longword value containing a number that uniquely identifies the
    timer request. If you do not specify reqidt, the value 0 is used.

    To cancel a timer request, the identification of the timer
    request (as specified by reqidt in $SETIMR) is passed to the
    Cancel Timer ($CANTIM) service (as the reqidt argument).

    If you want to cancel specific timer requests but not all timer
    requests, be sure to specify a nonzero value for reqidt in the
    $SETIMR call; $CANTIM interprets an identification value of 0 as
    a request to cancel all timer requests.

    You can specify unique values for reqidt for each timer request
    or give the same value to related timer requests. This permits
    selective canceling of a single timer request, a group of related
    timer requests, or all timer requests.

    If you specify the astadr argument in the $SETIMR call, the value
    specified by the reqidt argument is passed as a parameter to the
    AST routine. If the AST routine requires more than one parameter,
    specify an address for the value of reqidt; the AST routine
    can then interpret that address as the beginning of a list of
    parameters.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Longword of bit flags for the set timer operation. Currently,
    only bit 0 is used for the flags argument. When the low bit (bit
    0) is set, it indicates that this timer request should be in
    units of CPU time, rather than elapsed time. When bit 0 is clear
    (the default), the timer request is in units of elapsed time. The
    flags argument is optional.

271  –  $SETPRA

    Establishes a routine to receive control after a power recovery
    is detected.

    Format

      SYS$SETPRA  astadr ,[acmode]

    C Prototype

      int sys$setpra  (int (*astadr)(__unknown_params), unsigned int

                      acmode);

271.1  –  Arguments

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    Power recovery AST routine to receive control when a power
    recovery is detected. The astadr argument is the address of this
    routine.

    If you specify astadr as the value 0, an AST is not delivered to
    the process when a power recovery is detected.

    The system passes one parameter to the specified AST routine.
    This parameter is a longword value containing the length of time
    that the power was off, expressed as the number of 1/100th-of-a-
    second intervals that have elapsed.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode at which the power recovery AST routine is to
    execute. The acmode argument is a longword containing the access
    mode. The $PSLDEF macro defines symbols for the access modes.

    The most privileged access mode used is the access mode of the
    caller.

272  –  $SETPRI

    Changes the base priority of the process. The base priority is
    used to determine the order in which executable processes are to
    run.

    Format

      SYS$SETPRI  [pidadr] ,[prcnam] ,pri ,[prvpri] ,[nullarg]

                  ,[nullarg]

    C Prototype

      int sys$setpri  (unsigned int *pidadr, void *prcnam, unsigned

                      int pri, unsigned int *prvpri, unsigned int

                      *pol, unsigned int *prvpol);

272.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) of the process whose priority is to
    be set. The pidadr argument is the address of the PID. The pidadr
    argument can refer to a process running on the local node or a
    process running on another node in the cluster.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Process name of the process whose priority is to be changed. 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.

    You can use the prcnam argument only on behalf of processes in
    the same UIC group as the calling process. To set the priority
    for processes in other groups, you must specify the pidadr
    argument.

 pri

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    New base priority to be established for the process. The pri
    argument is a longword value containing the new priority.
    Priorities that are not real time are in the range 0 through
    15; real-time priorities are in the range 16 through 31.

    If the specified priority is higher than the base priority of the
    target process, and if the caller does not have ALTPRI privilege,
    then the base priority of the target process is used.

 prvpri

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Base priority of the process before the call to $SETPRI. The
    prvpri argument is the address of a longword into which $SETPRI
    writes the previous base priority of the process.

 policy

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    On Alpha and Integrity server systems, address of a longword
    containing the new scheduling policy for the process.

    The $JPIDEF macro defines the following symbols for the policy
    argument:

    Symbol            Meaning

    JPI$K_DEFAULT_    The normal scheduling policy. The priority
    POLICY            interval for this policy is defined as [0..n],
                      such that priorities [0..15] are interactive
                      and priorities [16..n] are real time.

    JPI$K_PSX_FIFO_   POSIX FIFO scheduling policy. The priority
    POLICY            interval for this policy is defined as [n..m]
                      real-time priorities.

    JPI$K_PSX_RR_     POSIX round-robin policy. The priority interval
    POLICY            for this policy is defined as [n..m] real-time
                      priorities.

 prvpol

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    On Alpha and Integrity server systems, address of a longword into
    which the previous scheduling policy for the process is written.
    If the policy argument is null, no change in policy is requested
    and prvpol returns the current policy.

    The valid priority intervals for specific scheduling policies
    might change in the future. Applications should, therefore,
    not use embedded numeric constants for scheduling priority, but
    should use the appropriate $GETSYI item codes to fetch the legal
    priority intervals. The application can then dynamically select
    a priority value that is within the interval. The $GETSYI item
    codes are:

    o  SYI$_DEF_PRIO_MAX, SYI$_DEF_PRIO_MIN

    o  SYI$_PSXFIFO_PRIO_MAX, SYI$_PSXFIFO_PRIO_MIN

    o  SYI$_PSXRR_PRIO_MAX, SYI$_PSXRR_PRIO_MIN

    For more information about these item codes, see the $GETSYI
    service description in the VSI OpenVMS System Services Reference
    Manual.

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

273  –  $SETPRN

    Allows a process to establish or to change its own process name.

    Format

      SYS$SETPRN  [prcnam]

    C Prototype

      int sys$setprn  (void *prcnam);

273.1  –  Argument

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Process name to be given to the calling process. The prcnam
    argument is the address of a character string descriptor pointing
    to a 1- to 15-character process name string. If you do not
    specify prcnam, the calling process is given no name.

274  –  $SETPRT

    Allows a process to change the protection on a page or range of
    pages.

    Format

      SYS$SETPRT  inadr ,[retadr] ,[acmode] ,prot ,[prvprt]

    C Prototype

      int sys$setprt  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode, unsigned int

                      prot, unsigned char *prvprt);

274.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Starting and ending virtual addresses of the range of pages whose
    protection is to be changed. The inadr argument is the address of
    a 2-longword array containing, in order, the starting and ending
    process virtual addresses.

    Addresses are adjusted up or down to fall on CPU-specific page
    boundaries. Only the virtual page number portion of each virtual
    address is used; the low-order byte-within-page bits are ignored.

    If the starting and ending virtual addresses are the same, the
    protection is changed for a single page.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference-array reference or descriptor
    Starting and ending virtual addresses of the range of pages whose
    protection was actually changed by $SETPRT. The retadr argument
    is the address of a 2-longword array containing, in order, the
    starting and ending process virtual addresses.

    If an error occurs while the protection is being changed, $SETPRT
    writes into retadr the range of pages that were successfully
    changed before the error occurred. If no pages were affected
    before the error occurred, $SETPRT writes the value -1 into each
    longword of the 2-longword array.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $SETPRT. The acmode
    argument is a longword containing the access mode. The $PSLDEF
    macro defines symbols for the access modes.

    The $SETPRT service uses whichever of the following two access
    modes is least privileged: (1)  the access mode specified by
    acmode or (2)  the access mode of the caller. To change the
    protection of any page in the specified range, the resultant
    access mode must be equal to or more privileged than the access
    mode of the owner of that page.

 prot

    OpenVMS usage:page_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Page protection to be assigned to the specified pages. The prot
    argument is a longword value containing the protection code. Only
    bits 0 to 3 are used; bits 4 to 31 are ignored.

    The $PRTDEF macro defines the following symbolic names for the
    protection codes:

    Symbol        Description

    PRT$C_NA      No access
    PRT$C_KR      Kernel read only
    PRT$C_KW      Kernel write
    PRT$C_ER      Executive read only
    PRT$C_EW      Executive write
    PRT$C_SR      Supervisor read only
    PRT$C_SW      Supervisor write
    PRT$C_UR      User read only
    PRT$C_UW      User write
    PRT$C_ERKW    Executive read; kernel write
    PRT$C_SRKW    Supervisor read; kernel write
    PRT$C_SREW    Supervisor read; executive write
    PRT$C_URKW    User read; kernel write
    PRT$C_UREW    User read; executive write
    PRT$C_URSW    User read; supervisor write

    OpenVMS Alpha and Integrity server systems convert PRT$C_NA to
    the next highest protection, kernel-read.

    If you specify the protection as the value 0, the protection
    defaults to kernel read only.

 prvprt

    OpenVMS usage:page_protection
    type:         byte (unsigned)
    access:       write only
    mechanism:    by reference
    Protection previously assigned to the last page in the range.
    The prvprt argument is the address of a byte into which $SETPRT
    writes the protection of this page. The prvprt argument is useful
    only when protection for a single page is being changed.

275  –  $SETPRT 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows a process to change
    the protection on a page or range of pages.

    This service accepts 64-bit addresses.

    Format

      SYS$SETPRT_64  start_va_64 ,length_64 ,acmode ,prot

                     ,return_va_64 ,return_length_64 ,return_prot_64

    C Prototype

      int sys$setprt_64  (void *start_va_64, unsigned __int64

                         length_64, unsigned int acmode, unsigned

                         int prot, void *(*(return_va_64)), unsigned

                         __int64 *return_length_64, unsigned int

                         *return_prot_64);

275.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the range of pages whose
    protection is to be changed. The specified virtual address will
    be rounded down to a CPU-specific boundary.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space whose protection is to
    be changed. The specified length will be rounded up to a CPU-
    specific page boundary so that it includes all CPU-specific pages
    in the requested range.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode associated with the call to $SETPRT_64. The acmode
    argument is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. To change the protection of any page in the specified
    range, the resultant access mode must be equal to or more
    privileged than the access mode of the owner of that page.

 prot

    OpenVMS usage:page_protection
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Page protection to be assigned to the specified pages. The prot
    argument is a longword value containing the protection code. Only
    bits 0 to 3 are used; bits 4 to 31 are ignored.

    The $PRTDEF macro for MACRO-32 and the include file PRTDEF.H for
    C define the symbolic names for the protection codes.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the range of pages whose
    protection was actually changed. The return_va_64 argument is
    the 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the virtual address range whose protection was
    actually changed. The return_length_64 argument is the 32- or
    64-bit virtual address of a naturally aligned quadword into which
    the service returns the length of the virtual address range in
    bytes.

 return_prot_64

    OpenVMS usage:page_protection
    type:         longword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Protection previously assigned to the last page in the range.
    The return_prot_64 argument is the 32- or 64-bit virtual address
    of a naturally aligned longword into which $SETPRT_64 writes the
    protection of this page. The return_prot_64 argument is useful
    only when protection for a single page is being changed.

276  –  $SETPRV

    Enables or disables specified privileges for the calling process.

    Format

      SYS$SETPRV  [enbflg] ,[prvadr] ,[prmflg] ,[prvprv]

    C Prototype

      int sys$setprv  (char enbflg, struct _generic_64 *prvadr, char

                      prmflg, struct _generic_64 *prvprv);

276.1  –  Arguments

 enbflg

    OpenVMS usage:boolean
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Indicator specifying whether the specified privileges are to be
    enabled or disabled. The enbflg argument is a longword value.
    The value 1 indicates that the privileges specified in the prvadr
    argument are to be enabled. The value 0 (the default) indicates
    that the privileges are to be disabled.

 prvadr

    OpenVMS usage:mask_privileges
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Privileges to be enabled or disabled for the calling process. The
    prvadr argument is the address of a quadword bit vector wherein
    each bit corresponds to a privilege that is to be enabled or
    disabled.

    Each bit has a symbolic name. The $PRVDEF macro defines these
    names. You form the bit vector by specifying the symbolic
    name of each desired privilege in a logical OR operation. The
    following table provides the symbolic name and description of
    each privilege:

    User
    Privilege   Symbolic Name      Description

    ACNT        PRV$M_ACNT         Create processes for which no
                                   accounting is done
    ALLSPOOL    PRV$M_ALLSPOOL     Allocate a spooled device
    ALTPRI      PRV$M_ALTPRI       Set (alter) any process priority
    AUDIT       PRV$V_AUDIT        Generate audit records
    BUGCHK      PRV$M_BUGCHK       Make bugcheck error log entries
    BYPASS      PRV$M_BYPASS       Bypass all protection
    CMEXEC      PRV$M_CMEXEC       Change mode to executive
    CMKRNL      PRV$M_CMKRNL       Change mode to kernel
    DIAGNOSE    PRV$M_DIAGNOSE     Can diagnose devices
    DOWNGRADE   PRV$V_DOWNGRADE    Can downgrade classification
    EXQUOTA     PRV$M_EXQUOTA      Can exceed quotas
    GROUP       PRV$M_GROUP        Group process control
    GRPNAM      PRV$M_GRPNAM       Place name in group logical name
                                   table
    GRPPRV      PRV$V_GRPPRV       Group access by means of system
                                   protection field
    IMPERSONATE PRV$M_             Create detached processes under
                IMPERSONATE        another UIC
    IMPORT      PRV$V_IMPORT       Mount a nonlabeled tape volume
    LOG_IO      PRV$M_LOG_IO       Perform logical I/O operations
    MOUNT       PRV$M_MOUNT        Issue mount volume QIO
    NETMBX      PRV$M_NETMBX       Create a network device
    OPER        PRV$M_OPER         All operator privileges
    PFNMAP      PRV$M_PFNMAP       Map to section by physical page
                                   frame number
    PHY_IO      PRV$M_PHY_IO       Perform physical I/O operations
    PRMCEB      PRV$M_PRMCEB       Create permanent common event flag
                                   clusters
    PRMGBL      PRV$M_PRMGBL       Create permanent global sections
    PRMMBX      PRV$M_PRMMBX       Create permanent mailboxes
    PSWAPM      PRV$M_PSWAPM       Change process swap mode
    READALL     PRV$V_READALL      Possess read access to everything
    SECURITY    PRV$V_SECURITY     Can perform security functions
    SETPRV      PRV$M_SETPRV       Set any process privileges
    SHARE       PRV$M_SHARE        Can assign a channel to a
                                   nonshared device
    SHMEM       PRV$M_SHMEM        Allocate structures in memory
                                   shared by multiple processors
    SYSGBL      PRV$M_SYSGBL       Create system global sections
    SYSLCK      PRV$M_SYSLCK       Queue systemwide locks
    SYSNAM      PRV$M_SYSNAM       Place name in system logical name
                                   table
    SYSPRV      PRV$M_SYSPRV       Access files and other resources
                                   as if you have a system UIC
    TMPMBX      PRV$M_TMPMBX       Create temporary mailboxes
    UPGRADE     PRV$V_UPGRADE      Can upgrade classification
    VOLPRO      PRV$M_VOLPRO       Override volume protection
    WORLD       PRV$M_WORLD        World process control

    If you do not specify prvadr or assign it the value 0, the
    privileges are not altered.

 prmflg

    OpenVMS usage:boolean
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Indicator specifying whether the privileges are to be affected
    permanently or temporarily. The prmflg argument is a longword
    value. The value 1 specifies that the privileges are to be
    affected permanently, that is, until you change them again
    by using $SETPRV or until the process is deleted. The value 0
    (the default) specifies that the privileges are to be affected
    temporarily, that is, until the current image exits (at which
    time the permanently enabled privileges of the process will be
    restored).

    Setting the prmflg argument to nonzero changes privilege bits in
    both the CURPRIV mask and the PROCPRIV mask.

 prvprv

    OpenVMS usage:mask_privileges
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    Privileges previously possessed by the calling process. The
    prvprv argument is the address of a quadword bit vector wherein
    each bit corresponds to a privilege that was previously either
    enabled or disabled. If you do not specify prvprv or assign it
    the value 0, the previous privilege mask is not returned.

277  –  $SETRWM

    Allows a process to specify what action system services should
    take when system resources required for their execution are
    unavailable.

                                 CAUTION

       Disabling resource waiting should be performed with caution,
       as doing so can have unexpected effects on constituent
       sharable images and runtime libraries.

    Format

      SYS$SETRWM  [watflg]

    C Prototype

      int sys$setrwm  ( char watflg);

277.1  –  Argument

 watflg

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Indicator specifying whether system services should wait for
    required resources. The watflg argument is a longword value. The
    value 0 (the default) specifies that system services should wait
    until resources needed for their execution become available.
    The value 1 specifies that system services should return failure
    status immediately when resources needed for their execution are
    unavailable.

    The operating system enables resource wait mode for all
    processes. You can disable resource wait mode only by calling
    $SETRWM.

    If resource wait mode is disabled, it remains disabled until it
    is explicitly reenabled or until the process is deleted.

278  –  $SETSHLV

    Controls whether a process automatically unshelves files.

    Format

      SYS$SETSHLV  [pidadr] ,[prcnam] ,[shlvflg]

    C Prototype

      int sys$setshlv  (unsigned int *pidadr, void *prcnam, unsigned

                       int shlvflg);

278.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) of the process. The pidadr argument
    is the address of the PID. The pidadr argument can only refer to
    a process running on the local node. You cannot modify a process
    on a remote node.

    You must specify the pidadr argument to modify 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
    Process name of the process. The prcnam argument is the address
    of a character string descriptor pointing to the process name.
    You identify a process with a 1- to 15-character string.

    You can only use the prcnam argument to modify a process in the
    same UIC group as the calling process. To modify a process in
    another UIC group, you must specify the pidadr argument.

 shlvflg

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Value specifying whether automatic unshelving is to be turned on
    or off. The shlvflg argument is a longword containing this value.
    The value 0 turns automatic unshelving on. The value 1 turns
    automatic unshelving off.

278.2  –  Description

    The Set Automatic Unshelving service controls whether a process
    automatically unshelves files.

    The pidadr and prcnam default to the current process. If the
    longword at address pidadr is 0, the PID of the target process is
    returned.

    The setting for automatic unshelving is inherited by
    subprocesses.

    The DCL command SET PROCESS/[NO]AUTOUNSHELVE also controls
    automatic unshelving for a process; for details, see the VSI
    OpenVMS DCL Dictionary.

    Required Access or Privileges

    Depending on the operation, the calling process might need one of
    the following privileges to use $SETSHLV:

    o  GROUP privilege to modify a process in the same group, unless
       the target process has the same UIC as the calling process.

    o  WORLD privilege to modify any process in the system.

    Required Quota

    None

    Related Services

    $GETJPI

278.3  –  Condition Values Returned

    SS$_WASCLR         The service completed successfully. Automatic
                       unshelving was previously on.
    SS$_WASSET         The service completed successfully. Automatic
                       unshelving was previously off.
    SS$_ACCVIO         An argument was not accessible by the caller.
    SS$_BADPARAM       The shlvflg argument was invalid.
    SS$_IVLOGNAM       The prcnam argument was invalid. The process
                       name string had either 0 characters or more
                       than 15 characters.
    SS$_NONEXPR        The specified process did not exist, or the
                       specified process identification was invalid.
    SS$_NOPRIV         The caller did not have the privilege to
                       modify other processes.
    SS$_REMOTE_PROC    The specified process was not on the local
                       node. The service cannot modify a process on a
                       remote node.

279  –  $SETSTK

    Allows a process to change the size of its supervisor, executive,
    and kernel stacks by altering the values in the stack limit for a
    memory stack and base arrays held in P1 (per-process) space.

    Format

      SYS$SETSTK  inadr ,[retadr] ,[acmode]

    C Prototype

      int sys$setstk  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode);

279.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Range of addresses that express the stack's new limits. The inadr
    argument is the address of a 2-longword array containing, in
    order, the address of the top of the stack and the address of the
    base of the stack. Because stacks in P1 space expand from high
    to low addresses, the address of the base of the stack must be
    greater than the address of the top of the stack.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Range of addresses that express the stack's previous limits. The
    retadr argument is the address of a 2-longword array into which
    $SETSTK writes, in the first longword, the previous address of
    the top of the stack and, in the second longword, the previous
    address of the base of the stack.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode of the stack to be altered. The acmode argument is
    a longword containing the access mode. The $PSLDEF macro defines
    symbols for the four access modes. The most privileged access
    mode used is the access mode of the caller.

    If acmode specifies user mode, $SETSTK performs no operation and
    returns the SS$_NORMAL condition value.

280  –  $SETSTK 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, allows a process to change
    the size of its supervisor, executive, and kernel stacks by
    altering the values in the stack limit for a memory stack or a
    register stack and base arrays held in P1 (per-process) space.

    Format

      SYS$SETSTK_64  start_va_64 ,length_64 ,acmode, flags,

                     prev_start_va, prev_length

    C Prototype

      int sys$setstk_64  (void *start_va_64, unsigned __int64

                         length_64, unsigned int acmode, unsigned int

                         flags, void ** prev_start_va_64, unsigned

                         __int64 * prev_length_64);

280.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    Lowest address in range of addresses that express the stack's new
    limits. For a memory stack, this address is the stack limit. For
    an Integrity servers register stack, this address is the stack
    base.

 length_64

    OpenVMS usage:length
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the range of addresses that express the stack's new
    limits.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode of the stack to be altered. The acmode argument is
    a longword containing the access mode. The $PSLDEF macro defines
    symbols for the four access modes. The most privileged access
    mode used is the access mode of the caller.

    If acmode specifies user mode, $SETSTK_64 performs no operation
    and returns the SS$_NORMAL condition value.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    0 for memory stack (Alpha and Integrity servers VA$M_SETSTK_
    REGISTER for register stack (Integrity servers only)

    The $VADEF macro and VADEF.H file define symbolic names for the
    flags argument.

 prev_start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by reference
    Lowest address in the range of addresses that express the stack's
    previous limits. For a memory stack, this address was the stack
    limit. For an Integrity servers register stack, this address was
    the stack base.

 prev_length_64

    OpenVMS usage:length
    type:         quadword
    access:       write only
    mechanism:    by reference
    Length of the range of addresses that express the stack's
    previous limits.

281  –  $SETSWM

    Allows a process to control whether it can be swapped out of the
    balance set.

    Format

      SYS$SETSWM  [swpflg]

    C Prototype

      int sys$setswm  (char swpflg);

281.1  –  Argument

 swpflg

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Indicator specifying whether the process can be swapped. The
    swpflg argument is a longword value. The value 0 (the default)
    enables process swap mode, meaning the process can be swapped.
    The value 1 disables process swap mode, meaning the process
    cannot be swapped.

282  –  $SETUAI

    Modifies the user authorization file (UAF) record for a specified
    user.

    Format

      SYS$SETUAI  [nullarg] ,[contxt] ,usrnam ,itmlst ,[nullarg]

                  ,[nullarg] ,[nullarg]

    C Prototype

      int sys$setuai  (unsigned int efn, unsigned int *contxt, void

                      *usrnam, void *itmlst, struct _iosb *iosb, void

                      (*astadr)(__unknown_params), int astprm);

282.1  –  Arguments

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

 contxt

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    A longword used to maintain authorization file context. The
    contxt argument is the address of a longword to receive a $SETUAI
    context value. On the initial call, this longword should contain
    the value -1. On subsequent calls, the value of the contxt
    argument from the previous call should be passed back in.

 usrnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Name of the user whose UAF record is modified. The usrnam
    argument is the address of a descriptor pointing to a character
    text string containing the user name. The user name string can
    contain a maximum of 32 alphanumeric characters.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying which information from the specified UAF
    record is to be modified. The itmlst argument is the address of a
    list of one or more item descriptors, each of which specifies an
    item code. The item list is terminated by the item code 0 or by
    the longword 0.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

 nullarg

    OpenVMS usage:nullarg
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    Placeholding argument Reserved to VSI.

 nullarg

    OpenVMS usage:nullarg
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    Placeholding argument Reserved to VSI.

 nullarg

    OpenVMS usage:nullarg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

283  –  $SETUP AVOID PREEMPT

    Performs initial setup for process preemption avoidance.

    Format

      SYS$SETUP_AVOID_PREEMPT  enable

    C Prototype

      int sys$setup_avoid_preempt  (int enable);

283.1  –  Arguments

 enable

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Enables or disables preemption avoidance. If the enable argument
    is set to 1, preemption avoidance is enabled; if 0, preemption
    avoidance is disabled.

284  –  $SET DEFAULT TRANS

    Sets or clears the default transaction of the calling process.

    Format

      SYS$SET_DEFAULT_TRANS  [efn] ,[flags] ,iosb [,[astadr]

                             ,[astprm] ,[new_tid] ,[old_tid]]

    C Prototype

      int sys$set_default_trans  (unsigned int efn, unsigned int

                                 flags, struct _iosb *iosb,...);

284.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for the option
    flag, described in $SET_DEFAULT_TRANS Option Flag. All undefined
    bits must be 0. If this argument is omitted, no flags are used.

    Table SYS-25 $SET_DEFAULT_TRANS Option Flag

    Flag Name      Description

    DDTM$M_SYNC    Specifies successful synchronous completion by
                   returning SS$_SYNCH. When SS$_SYNCH is returned,
                   the AST routine is not called, the event flag is
                   not set, and the I/O status block is not filled
                   in.

 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.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the I/O status block diagram.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    The AST routine 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 $SET_DEFAULT_TRANS
    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.

 new_tid

    OpenVMS usage:trans_id
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    The identifier (TID) of the new default transaction for the
    calling process. If this argument is zero (the default) or if it
    specifies a zero TID (an octaword of zeros), the service clears
    the default transaction of the calling process.

 old_tid

    OpenVMS usage:trans_id
    type:         octaword (unsigned)
    access:       write only
    mechanism:    by reference
    An octaword in which the service returns the identifier (TID) of
    the calling process' previous transaction (the one that was set
    or cleared by this call to $SET_DEFAULT_TRANS).

    A zero TID is returned if the calling process did not have a
    default transaction prior to the call.

285  –  $SET DEFAULT TRANSW

    Sets or clears the default transaction of the calling process.

    $SET_DEFAULT_TRANSW always waits for the request to complete
    before returning to the caller. Other than this, it is identical
    to $SET_DEFAULT_TRANS.

    Format

      SYS$SET_DEFAULT_TRANSW  [efn] ,[flags] ,iosb [,[astadr]

                              ,[astprm] ,[new_tid] ,[old_tid]]

    C Prototype

      int sys$set_default_transw  (unsigned int efn, unsigned int

                                  flags, struct _iosb *iosb,...);

286  –  $SET DEVICE

    Modifies the characteristics of a device or the paths used to
    access that device.

    For synchronous completion, use the Set Device Characteristics
    and Wait ($SET_DEVICEW) service. The $SET_DEVICEW service is
    identical to the $SET_DEVICE service, except that $SET_DEVICEW
    returns to the caller only after the requested action has taken
    effect.

    For additional information about system service completion, see
    the Synchronize ($SYNCH) service.

    Format

      SYS$SET_DEVICE  [efn] [,chan] [,devnam] ,itmlst [,iosb]

                      [,astadr] [,astprm] [,nullarg]

    C Prototype

      int sys$set_device  (unsigned int efn, unsigned short int chan,

                          void *devnam, void *itmlst, struct _iosb

                          *iosb, void (*astadr)(__unknown_params),

                          int astprm, struct_generic_64 *nullarg);

286.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when $SET_DEVICE returns the
    requested information. The efn argument is a longword containing
    this number; however, $SET_DEVICE uses only the low-order byte.

    Upon request initiation, $SET_DEVICE clears the specified event
    flag (or event flag 0 if efn was not specified). Then, when $SET_
    DEVICE returns the requested information, it sets the specified
    event flag (or event flag 0).

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Number of the I/O channel assigned to the device about which
    information is desired. The chan argument is a word containing
    this number.

    To identify a device to $SET_DEVICE, you can specify either the
    chan or devnam parameters, but you should not specify both. If
    you specify both arguments, the chan argument is used.

    If you specify neither chan nor devnam, $SET_DEVICE uses a
    default value of 0 for chan.

 devnam

    OpenVMS usage:device_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    The name of the device about which $SET_DEVICE is to modify the
    characteristics or path settings. The devnam argument is the
    address of a character string descriptor pointing to this name
    string.

    The device name string can be either a physical device name
    or a logical name. If the first character in the string is an
    underscore (_),  the string is considered a physical device name;
    otherwise, the string is considered a logical name and logical
    name translation is performed until either a physical device name
    is found or the system default number of translations has been
    performed.

    If the device name string contains a colon (:),  the colon and
    the characters that follow it are ignored.

    To identify a device to $SET_DEVICE, you can specify either the
    chan or devnam argument, but you should not specify both. If both
    arguments are specified, the chan argument is used.

    If you specify neither chan nor devnam, $SET_DEVICE uses a
    default value of 0 for chan.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying which information about the device is to be
    returned. The itmlst argument is the address of a list of item
    descriptors, each of which describes an item of information. The
    list of item descriptors is terminated by a longword of 0.

    Currently, $SET_DEVICE allows only one valid item list entry.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block that is to receive the final completion status.
    The iosb argument is the address of the quadword I/O status
    block. See iosb in the $GETDVI system service description for
    more information.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    AST service routine to be executed when $SET_DEVICE completes.
    The astadr argument is the address of this routine.

    If you specify astadr, the AST routine executes at the same
    access mode as the caller of the $SET_DEVICE service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astadr argument. The astprm argument is the longword
    parameter.

 nullarg

    OpenVMS usage:null_arg
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Placeholding argument Reserved to VSI and should be zero.

287  –  $SET DEVICEW

    Modifies the characteristics of a device or the paths used to
    access that device.

    The $SET_DEVICEW completes synchronously; that is, it returns to
    the caller only after the requested action has taken effect.

    Format

      SYS$SET_DEVICEW  [efn] [,chan] [,devnam] ,itmlst [,iosb]

                       [,astadr] [,astprm] [,nullarg]

    C Prototype

      int sys$set_devicew  (unsigned int efn, unsigned short

                           int chan, void *devnam, void

                           *itmlst, struct _iosb *iosb, void

                           (*astadr)(__unknown_params), int astprm,

                           struct_generic_64 *nullarg);

288  –  $SET IMPLICIT AFFINITY (Alpha and Integrity servers)

    On Alpha and Integrity server systems, controls or retrieves the
    activation state for the implicit affinity system capability of a
    specific kernel thread or of the global process default.

    This service accepts 64-bit addresses.

    Format

      SYS$SET_IMPLICIT_AFFINITY  [pidadr] [,prcnam] [,state]

                                 [,cpu_id] [,prev_mask]

    C Prototype

      int sys$set_implicit_affinity  (unsigned int *pidadr, void

                                     *prcnam, struct _generic_64

                                     *state, int cpu_id, struct

                                     _generic_64 *prev_mask);

288.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    Process identification (PID) of a kernel thread whose implicit
    affinity is to be modified or returned. The pidadr argument is
    the 32- or 64-bit address of a longword that contains the PID.

    Process selection is made through a combination of the pidadr and
    prcnam arguments. If neither are specified or if both have a zero
    value, the service operations are made to the user capability
    mask of the current kernel thread of the current calling process.
    The pidadr argument takes precedence over the prcnam argument
    where both are supplied in the service call.

    If the bit constant CAP$M_IMPLICIT_DEFAULT_ONLY is specified in
    the state argument, then the implicit affinity state portion of
    the default capability mask is modified or returned instead.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Process name of the process whose implicit affinity capability
    state is to be modified or returned. The prcnam argument is the
    32- or 64-bit address of a character string descriptor pointing
    to the process name string. A process can be identified with a
    1- to 15-character string. The service operations are made to
    the user capability mask of the initial thread of the specified
    process.

    If pidadr and prcnam are both specified, then pidadr is modified
    or returned and prcnam is ignored. If neither argument is
    specified, then the context of the current kernel thread of the
    calling process is modified or returned.

 state

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference
    State options that can be selected for the affected thread's
    implicit affinity. The state argument is a pointer to a quadword
    bit vector wherein a bit corresponds to a requested state for
    the implicit affinity feature. Only the bits specified below are
    used; the remainder of the quadword bits are reserved.

    Each option (bit) has a symbolic name, defined in the $CAPDEF
    macro. The state argument is constructed by performing a logical
    OR operation using the symbolic names of each desired option.

    The following table describes the symbolic name of each option:

    Symbolic Name          Description

    CAP$M_IMPLICIT_        Indicates the specified operations are to
    DEFAULT_ONLY           be performed on the global cell instead
                           of on a specific kernel thread. This bit
                           supersedes any individual kernel thread
                           specified in pidadr or prcnam. Specifying
                           this bit constant applies the implicit
                           affinity operations to all newly created
                           processes.

    CAP$M_IMPLICIT_        Indicates that the implicit affinity
    AFFINITY_SET           capability bit is to be set for the
                           specified kernel thread. This is mutually
                           exclusive with CAP$M_IMPLICIT_AFFINITY_
                           CLEAR.

    CAP$M_IMPLICIT_        Indicates that the implicit affinity
    AFFINITY_CLEAR         capability bit is to be cleared for the
                           specified kernel thread. This is mutually
                           exclusive with CAP$M_IMPLICIT_AFFINITY_
                           SET.

 cpu_id

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Identifier of the CPU requested as the first CPU on which this
    kernel thread is to execute. The cpu_id is a longword containing
    this number, which is in the supported range of individual CPUs
    from 0 to SYI$_MAX_CPUS -1.

    If no explicit CPU is needed, specifying a value of -1 in
    this argument indicates the system is to select the initial
    association based on system dynamics and load balancing.

    Note that, regardless of what explicit CPU is supplied to this
    argument, it will be taken only as a suggestion. This service
    will attempt to make the requested association, but it will be
    superseded by another CPU if the system dynamics are adversely
    affected by the operation.

 prev_mask

    OpenVMS usage:mask_quadword
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    Previous implicit affinity state mask for the specified kernel
    thread before execution of this call to $SET_IMPLICIT_AFFINITY.
    The prev_mask argument is the 32- or 64-bit address of a quadword
    into which $SET_IMPLICIT_AFFINITY writes a bit mask specifying
    the implicit affinity state.

    The current state of the kernel thread's current implicit
    affinity feature can be determined by testing the returned
    mask with the symbolic bit definitions described for the state
    argument. These bit definitions are found in the $CAPDEF macro.

289  –  $SET PROCESS PROPERTIESW (Alpha and Integrity servers)

    On Alpha and Integrity server systems, sets a simple value
    associated with a process.

    Format

      SYS$SET_PROCESS_PROPERTIESW  mbz1 ,pidadr ,prcnam ,property

                                   ,value ,prev_value [,bufsiz

                                   ,bufcnt ,flags]

    C Prototype

      int sys$set_process_propertiesw  (mbz1, unsigned int *pidadr,

                                       unsigned int *prcnam, unsigned

                                       int property, unsigned __int64

                                       value, unsigned __int64

                                       *prev_value,...);

289.1  –  Arguments

 mbz1

    type:
    access:
    mechanism:    0
    Reserved for future use by VSI. Must be specified as 0.

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Process identification (PID) of the process whose system service
    logging characteristics are to be modified. The pidadr argument
    is the address of the PID.

    Supported only for use with PPROP$C_SS_LOG_ENABLE, PPROP$C_
    SS_LOG_DISABLE, and PPROP$C_SS_LOG_UNLOAD. Otherwise, must be
    specified as 0.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Process name of the process whose priority is to be changed. The
    prcnam argument is the address of a character string descriptor
    pointing to the process name. The process name can be 1 - 15
    characters long.

    You can use the prcnam argument only on behalf of processes
    in the same UIC group as the calling process. To affect system
    service logging for processes in other groups, you must specify
    the pidadr argument.

    Supported only for use with PPROP$C_SS_LOG_ENABLE, PPROP$C_
    SS_LOG_DISABLE, and PPROP$C_SS_LOG_UNLOAD. Otherwise, must be
    specified as 0.

 property

    OpenVMS usage:integer
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    A constant that selects which property to set.

    Valid values for property are defined by the $PPROPDEF macro as
    follows:

    Property Code         Description

    PPROP$C_CASE_         The type of case lookup to use. This value
    LOOKUP_TEMP           is set for the life of the currently
                          active image. This value reverts to the
                          permanent case setting on image rundown.
                          In the absence of an explicit case lookup
                          specification in a user-provided NAML,
                          RMS uses this value to determine the case
                          setting for the current file operation.
                          Valid values are PPROP$K_CASE_BLIND and
                          PPROP$K_CASE_SENSITIVE.

                          For additional information, see the Guide
                          to OpenVMS File Applications.

    PPROP$C_CASE_         The type of case lookup to use. This value
    LOOKUP_PERM           is set for the life of the process or
                          until the case is set agairundown. Setting
                          this value affects only future activated
                          images for this process. To change the case
                          setting for the current active image, you
                          must modify the PPROP$C_CASE_LOOKUP_TEMP
                          setting.

                          Valid values are PPROP$K_CASE_BLIND and
                          PPROP$K_CASE_SENSITIVE.

                          For additional information, see the Guide
                          to OpenVMS File Applications.

    PPROP$C_SEARCH_       Processes the active search mode. The value
    SYMLINK_TEMP          reverts to the permanent setting on image
                          rundown. Valid values are PPROP$K_SEARCH_
                          SYMLINK_NONE, PPROP$K_SEARCH_SYMLINK_ALL,
                          and PROP$K_SEARCH_SYMLINK_NOELLIPS.

    PPROP$C_SEARCH_       Processes the permanent search mode. This
    SYMLINK_PERM          value is set for the life of the process.
                          Changing this setting only changes the
                          behavior of subsequently activated images.
                          Valid values are PPROP$K_SEARCH_SYMLINK_
                          NONE, PPROP$K_SEARCH_SYMLINK_ALL, and
                          PROP$K_SEARCH_SYMLINK_NOELLIPS.

    PPROP$C_DEADLOCK_     The per-process deadlock wait time (in
    WAIT                  100-ns units). A value of zero resets and
                          disables the per-process deadlock wait time
                          and fallback to the systemwide deadlock
                          wait time that comes from the system
                          parameter DEADLOCK_WAIT. Valid values are
                          in the range of 100000 (=10ms) and 10000000
                          (=1 s). If the value is too small, the per-
                          process deadlock wait is set to 10 ms; if
                          the value is too large, it is set to 1 s.

    PPROP$C_HOME_RAD      The Resource Affinity Domain (RAD) to which
                          the process is assigned. Newly mapped
                          memory in the process will come from the
                          home RAD of the process. Currently mapped
                          memory will not move into the new home RAD
                          unless $PURGWS is issued.

                          Valid values are integers between 0 and the
                          maximum RAD on the system. Valid home RADs
                          must also contain either memory or CPUs.

    PPROP$C_KERNEL_       Sets the process specific limit of the
    THREAD_LIMIT          number of kernel threads that can be
                          created. By default, this is controlled
                          systemwide through the SYSGEN parameter
                          MULTITHREAD. A value between 0 (use
                          default) and the current setting of the
                          MULTITHREAD parameter can be used.

    PPROP$C_MEDDLE        Reserved for use by VSI.

    PPROP$C_MEDDLE_       Reserved for use by VSI.
    ENABLE

    PPROP$C_PARSE_        The type of command parsing to use. This
    STYLE_TEMP            value is set only for the life of the
                          image. The value reverts to the permanent
                          style on image rundown. Valid values
                          are PARSE_STYLE$C_TRADITIONAL and PARSE_
                          STYLE$C_EXTENDED.

    PPROP$C_PARSE_        The type of command parsing to use. This
    STYLE_PERM            value is set for the life of the process
                          unless the style is set again. Valid values
                          are PARSE_STYLE$C_TRADITIONAL and PARSE_
                          STYLE$C_EXTENDED.

    PPROP$C_SS_LOG_       Stop logging system service requests
    DISABLE               for the current or specified process. If
                          logging was previously disabled, the value
                          returned in prev_value is 0. If logging was
                          previously enabled, the value returned is
                          1.

                          For more information, see the VSI OpenVMS
                          System Analysis Tools Manual.

    PPROP$C_SS_LOG_       Allocate log buffers and enable logging of
    ENABLE                system service requests for the current
                          or specified process. If logging was
                          previously disabled, the value returned in
                          prev_value is 0. If logging was previously
                          enabled, the value returned is 1.

                          For more information, see the VSI OpenVMS
                          System Analysis Tools Manual.

    PPROP$C_SS_LOG_       Stop logging system service requests for
    UNLOAD                the current or specified process and close
                          the log file so that it can be analyzed. If
                          logging was previously disabled, the value
                          returned in prev_value is 0. If logging was
                          previously enabled, the value returned is
                          1.

                          For more information, see the VSI OpenVMS
                          System Analysis Tools Manual.

    PPROP$C_TOKEN         Controls the token size used by DCL. When
                          the bit is clear (the default), traditional
                          tokens are used, and each command token can
                          hold up to 255 characters. When the bit is
                          set, extended tokens are used; each command
                          token can be up to 4000 characters.

    PPROP$C_UNITS         Controls the process units. When the bit
                          is clear (the default), all size-related
                          numbers are displayed in blocks. When
                          the bit is set, size-related numbers are
                          converted to bytes.

 value

    OpenVMS usage:integer
    type:         quadword (unsigned)
    access:       read
    mechanism:    by value
    A quadword value to which to set the property.

 prev_value

    OpenVMS usage:access_mode
    type:         quadword (unsigned) address of a quadword value
    access:       write
    mechanism:    by reference
    The address of a quadword that will receive the previous value of
    the property.

 bufsize

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The requested system service log buffer size in bytes. Supported
    only for use with PPROP$C_SS_LOG_ENABLE. If omitted, it defaults
    to 65,024 bytes. The maximum value is 65,024 bytes. The minimum
    value is 4096 bytes.

 bufcnt

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The requested number of system service log buffers. Supported
    only for use with PPROP$C_SS_LOG_ENABLE. If omitted, it defaults
    to 2. The maximum number of buffers is 6.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Flag mask specifying the enable logging request. The flags
    argument is a longword bit vector in which each bit corresponds
    to a flag. The $LOGTYPDEF macro and the LOGTYPDEF.H file define a
    symbolic name for each flag.

    The $LOGTYPDEF macro defines the following symbolic names for the
    fault characteristic codes:

    Symbol         Description

    LOGTYP$M_      Log system service arguments.
    ARGS
    LOGTYP$M_      Write log information to a file.
    FILE

    If you specify the flags argument as 0, the service defaults to
    logging to a file and logging arguments.

    If you specify LOGTYP$M_ARGS but lack privilege, service
    arguments are not logged.

290  –  $SET RESOURCE DOMAIN

    Controls the association between a calling process and resource
    domains.

    Format

      SYS$SET_RESOURCE_DOMAIN  func ,rsdm_id ,domain_number

                               ,[nullarg] ,[access] ,[acmode]

    C Prototype

      int sys$set_resource_domain  (unsigned int func, unsigned

                                   int *rsdm_id, unsigned int

                                   domain_number, unsigned int

                                   nullarg, unsigned int access,

                                   unsigned int acmode);

290.1  –  Arguments

 func

    OpenVMS usage:function_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Function code specifying the action that $SET_RESOURCE_DOMAIN
    is to perform. The func argument is a longword containing this
    function code.

    See the Function Codes section in the VSI OpenVMS System Services
    Reference Manual for a description of $SET_RESOURCE_DOMAIN
    function codes.

 rsdm_id

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       write only to join, read only to leave
    mechanism:    by reference
    Resource domain identification. The rsdm_id argument is the
    address of a longword specifying the association of the calling
    process with the resource domain.

    The RSDM$_JOIN_DOMAIN function returns a resource domain
    identification. The RSDM$_LEAVE function requires the rsdm_id
    argument as input to specify which resource domain association
    the process is leaving.

    The resource domain identification can be used as input to the
    $ENQ and $ENQW system services.

 domain_number

    OpenVMS usage:longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Domain number that identifies the resource domain. The domain_
    number argument is a longword value containing the resource
    domain number.

    The domain_number argument is required for the RSDM$_JOIN_DOMAIN
    function but ignored for the RSDM$_LEAVE function.

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholder Reserved to VSI. You must specify 0.

 access

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Types of access desired when using the lock management services
    within the resource domain. The access argument is a longword
    bit mask specifying the access types required; these can include
    read, write, and lock.

    The following table lists the symbols that the $RSDMDEF macro
    defines, their descriptions, and the lock management system
    services that might require each type of access:

                   Access
    Symbol         Description      System Service

    RSDM$M_READ    Read lock value  $DEQ, $ENQ, $ENQW, $GETLKI,
                   blocks           $GETLKIW
    RSDM$M_WRITE   Write lock       $DEQ, $ENQ, $ENQW,
                   value blocks
    RSDM$M_LOCK    Take locks       $ENQ, $ENQW

    The service grants the desired access, provided your process has
    the necessary access rights to the resource domain. If you do not
    specify the access argument or if you specify 0, $SET_RESOURCE_
    DOMAIN attempts to access the domain in the following order:

    1. Read, write, lock

    2. Read, lock

    3. Write, lock

    4. Lock

    The access attempt terminates with the first success.

    The access argument defaults to 0. It is ignored for the RSDM$_
    LEAVE function.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode requested for the association to the resource domain.
    The most privileged access mode granted is the access mode of the
    caller. Locks cannot be taken from access modes less privileged
    than the access mode of the association.

    The acmode argument is a longword containing the access mode. The
    $PSLDEF macro defines the following symbols for the access modes:

    Symbolic      Access     Privilege
    Name          Mode       Rank

    PSL$C_KERNEL  Kernel     High
    PSL$C_EXEC    Executive  -
    PSL$C_SUPER   Supervisor -
    PSL$C_USER    User       Low

    The acmode argument is optional for the RSDM$_JOIN_DOMAIN
    function. If you do not specify the acmode argument, the access
    mode is set to the access mode of the calling process. The acmode
    argument is ignored for the RSDM$_LEAVE function.

291  –  $SET RETURN VALUE (Alpha and Integrity servers)

    On Alpha and Integrity server systems, sets the return values
    or condition codes in the Mechanism Array, independent of the
    architecture.

    Format

      SYS$SET_RETURN_VALUE  mechanism_arg, return_type, return_value

    C Prototype

      int sys$set_return_value  (void *mechanism_arg, unsigned int

                                *return_type, void *return_value);

291.1  –  Arguments

 mechanism_arg

    OpenVMS usage:mechanism vector address
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    The address of the location of the mechanism vector. If the
    mechanism_arg argument is 0, the mechanism vector for the
    currently active signal is used.

    If the address of the return_type argument is 0, the return_
    value argument is fetched by value and is treated as return-type
    PSIG$K_FR_U32. This combination of arguments can be used to set a
    condition code, such as SS$_ACCVIO, as a return value.

 return_type

    OpenVMS usage:integer
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    The address of the location of a longword that contains one of
    the function return signature codes.

    If the address of the return_type argument is 0, the return_
    value argument is fetched by value and is treated as return-type
    PSIG$K_FR_U32. This combination of arguments can be used to set a
    condition code, such as SS$_ACCVIO, as a return value.

 return_value

    OpenVMS usage:buffer
    type:         scalar
    access:       read only
    mechanism:    by reference
    The address of the location that contains a value of the
    appropriate type. The referenced value is read as a longword,
    quadword, or octaword, depending on the return_type.

    If the address of the return_type argument is 0, the return_
    value argument is fetched by value and is treated as return-type
    PSIG$K_FR_U32. This combination of arguments can be used to set a
    condition code, such as SS$_ACCVIO, as a return value.

292  –  $SET SECURITY

    Modifies the security characteristics of a protected object.

    Format

      SYS$SET_SECURITY  [clsnam] ,[objnam] ,[objhan] ,[flags]

                        ,[itmlst] ,[contxt] ,[acmode]

    C Prototype

      int sys$set_security  (void *clsnam, void *objnam, unsigned

                            int *objhan, unsigned int flags, void

                            *itmlst, unsigned int *contxt, unsigned

                            int *acmode);

292.1  –  Arguments

 clsnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor
    Name of the object class. The clsnam argument is the address of
    a descriptor pointing to a string that contains the name of the
    object class.

    The following is a list of the protected object class names:

       CAPABILITY
       COMMON_EVENT_CLUSTER
       DEVICE
       FILE
       GLXGRP_GLOBAL_SECTION
       GLXSYS_GLOBAL_SECTION
       GROUP_GLOBAL_SECTION
       ICC_ASSOCIATION
       LOGICAL_NAME_TABLE
       QUEUE
       RESOURCE_DOMAIN
       SECURITY_CLASS
       SYSTEM_GLOBAL_SECTION
       VOLUME

 objnam

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor
    Name of the protected object whose associated security profile
    is going to be retrieved. The objnam argument is the address
    of a descriptor pointing to a string containing the name of the
    protected object.

    The format of an object name is class specific. The following
    table lists object names and describes their formats:

    Object Class        Object Name Format

    CAPABILITY          A character string. Currently, the only
                        capability object is VECTOR.

    COMMON_EVENT_       Name of the event flag cluster, as defined
    CLUSTER             in the Associate Common Event Flag Cluster
                        ($ASCEFC) system service.

    DEVICE              Standard device specification, described in
                        the OpenVMS User's Manual.

    FILE                Standard file specification, described in the
                        OpenVMS User's Manual.

    GROUP_GLOBAL_       Section name, as defined in the Create and
    SECTION             Map Section ($CRMPSC) system service.

    ICC_ASSOCIATION     ICC security object name node::association_
                        name. The special node name, ICC$::, refers
                        to entries in the clusterwide registry. For
                        registry entries, the Access Access Type does
                        not apply.

    LOGICAL_NAME_TABLE  Table name, as defined in the Create Logical
                        Name Table ($CRELNT) system service.

    QUEUE               Standard queue name, as described in the Send
                        to Job Controller ($SNDJBC) system service.

    RESOURCE_DOMAIN     An identifier or octal string enclosed in
                        brackets.

    SECURITY_CLASS      Any class name shown in the Object Class
                        column of this table, or a class name
                        followed by a period (.) and the template
                        name. Use the DCL command SHOW SECURITY to
                        display possible template names.

    SYSTEM_GLOBAL_      Section name, as defined in the Create and
    SECTION             Map Section ($CRMPSC) system service.

    VOLUME              Volume name or name of the device on which
                        the volume is mounted.

 objhan

    OpenVMS usage:object_handle
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Data structure identifying the object to address. The objhan
    argument is an address of a longword containing the object
    handle. You can use the objhan argument as an alternative to the
    objnam argument; for example, a channel number clearly specifies
    the file open on the channel and can serve as an object handle.

    The following table shows the format of the object classes:

    Object Class         Object Handle Format

    COMMON_EVENT_        Event flag number
    CLUSTER
    DEVICE               Channel number
    FILE                 Channel number
    RESOURCE_DOMAIN      Resource domain identifier
    VOLUME               Channel number

 flags

    OpenVMS usage:flags
    type:         mask_longword
    access:       read only
    mechanism:    by value
    Mask specifying processing options. The flags argument is a
    longword bit vector wherein a bit, when set, specifies the
    corresponding option. The flags argument requires the contxt
    argument.

    The following table describes each flag:

    Symbolic Name   Description

    OSS$M_LOCAL     Do not update the master profile for the
                    specified object. This flag allows you to call
                    $SET_SECURITY several times to modify a local
                    copy of a profile; once the modifications are
                    satisfactory, you can clear the OSS$M_LOCAL flag,
                    set the OSS$M_RELCTX flag, and have $SET_SECURITY
                    update the master profile. The flag applies only
                    to calls made with the contxt argument.

    OSS$M_RELCTX    Release the context structure at the completion
                    of this request.

    The $OSSDEF macro defines symbolic names for the flag bits. You
    construct the flags argument by specifying the symbolic names of
    each desired option.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list specifying which information about the process or
    processes is to be modified. The itmlst argument is the address
    of a list of item descriptors, each of which describes an item
    of information. The list of item descriptors is terminated by a
    longword of 0.

    With the item list, the user modifies the protected object's
    characteristics. The user defines which security characteristics
    to modify. If this argument is not present, only the flags
    argument is processed. Without the itmlst argument, you can
    only manipulate the security profile locks or release contxt
    resources.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the item code diagram and descriptor fields table.

 contxt

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Value used to maintain protected object processing context when
    dealing with a single protected object across multiple $GET_
    SECURITY/$SET_SECURITY calls. Whenever the context value is
    nonzero, the class name, object name, or object handle arguments
    are disregarded. An input value of 0 indicates that a new context
    should be established.

    Because an active context block consumes process memory, be sure
    to release the context block by setting the RELCTX flag when the
    profile processing is complete. $SET_SECURITY sets the context
    argument to 0 once the context is released.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Access mode to be used in the object protection check. The acmode
    argument is the address of a longword containing the access mode.
    The acmode argument defaults to kernel mode; however, the system
    compares acmode with the caller's access mode and uses the least
    privileged mode. The access modes are defined in the system macro
    $PSLDEF library.

    VSI recommends that this argument be omitted (passed as zero).

293  –  $SET SYSTEM EVENT (Alpha and Integrity servers)

    On Alpha and Integrity server systems, establishes a request for
    notification when an OpenVMS system event occurs.

    Format

      SYS$SET_SYSTEM_EVENT  event ,astadr ,astprm ,acmode ,flags

                            ,handle

    C Prototype

      int sys$set_system_event  (unsigned int event, void

                                (*astadr)(__unknown_params), int

                                astprm, unsigned int acmode, unsigned

                                int flags, struct _generic_64 *

                                handle);

293.1  –  Arguments

 event

    OpenVMS usage:event_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Event code indicating the type of system event for which an AST
    is to be delivered. The event argument is a value indicating
    which type of event is of interest.

    Each event type has a symbolic name. The $SYSEVTDEF macro defines
    the following symbolic names:

    Symbolic Name               Description

    SYSEVT$C_ADD_MEMBER         One or more OpenVMS instances have
                                joined the OpenVMS Galaxy sharing
                                community.
    SYSEVT$C_DEL_MEMBER         One or more OpenVMS instances have
                                left the OpenVMS Galaxy sharing
                                community.
    SYSEVT$C_ADD_ACTIVE_CPU     One or more processors have become
                                active within this OpenVMS instance.
    SYSEVT$C_DEL_ ACTIVE_CPU    One or more processors have become
                                inactive within this OpenVMS
                                instance.
    SYSEVT$C_ADD_CONFIG_CPU     One or more CPUs have been added to
                                the set of available CPUs for this
                                OpenVMS instance.
    SYSEVT$C_DEL_CONFIG_CPU     One or more processors have been
                                removed from this OpenVMS instance.
    SYSEVT$C_TDF_CHANGE         The system's time differential factor
                                has changed.
    SYSEVT$C_CPU_DEALLOCATE     One or more processors have been
                                deallocated from this OpenVMS
                                instance.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32-bit or 64-bit reference
    Notification AST routine to receive control after a change in
    OpenVMS system configuration occurs.

 astprm

    OpenVMS usage:user_arg
    type:         quadword
    access:       read only
    mechanism:    by value
    The quadword AST parameter to be passed to the AST routine.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode at which the system event AST is to execute. The
    acmode argument is a longword containing the access mode.

    Each access mode has a symbolic name. The $PSLDEF macro defines
    the following symbols for the four access modes.

    Symbolic Name      Description

    PSL$C_KERNEL       Kernel
    PSL$C_EXEC         Executive
    PSL$C_SUPER        Supervisor
    PSL$C_USER         User

    The value of the access mode is maximized with the access mode of
    the caller.

 flags

    type:
    access:
    mechanism:    0
    Defined in SYSEVTDEF.

    SYSEVT$M_REPEAT_       When this flag is set, event notification
    NOTIFY                 is repeated.

 handle

    OpenVMS usage:handle
    type:         quadword (unsigned)
    access:       read/write
    mechanism:    by reference
    The virtual address of a naturally aligned quadword for the event
    handle.

294  –  $SET UNWIND TABLE (Integrity servers Only)

    Registers or extends unwind table (UT) information.

    Format

      SYS$SET_UNWIND_TABLE  code_base_va, code_size, ut_base_va,

                            ut_size, gp_value, unwind_info_base, name

    C Prototype

      ind SYS$SET_UNWIND_TABLE  (unsigned __int64 code_base_va,

                                unsigned __int64 code_size, unsigned

                                __int64 ut_base_va, unsigned __int64

                                ut_size, unsigned __int64 gp_value,

                                unsigned __int64 unwind_info_base,

                                void *name);

294.1  –  Arguments

 code_base_va

    OpenVMS usage: address
    type:          quadword (unsigned)
    access:        read only
    mechanism:     by value
    With code_size, defines the potential code range. code_base_va
    is required for both creation and extension calls. code_base_va
    is the process virtual address of the start of the code region.
    code_size is the size of the code region in bytes. An error is
    returned if this overlaps any existing range.

 code_size

    OpenVMS usage: address
    type:          quadword (unsigned)
    access:        read only
    mechanism:     by value
    With code_base_va, defines the potential code range. code_base_va
    is required for both creation and extension calls. code_base_va
    is the process virtual address of the start of the code region.
    code_size is the size of the code region in bytes. An error is
    returned if this overlaps any existing range.

 ut_base_va

    OpenVMS usage: address
    type:          quadword (unsigned)
    access:        read only
    mechanism:     by value
    With ut_size, describes the unwind table (UT). ut_base_va is the
    process virtual address of the UT and must be quadword aligned.
    ut_size is the size of the UT in bytes and must be a multiple of
    the size (24 bytes: 3 quadwords) of an unwind table entry (UTE).
    The UTEs must describe nonoverlapping code subregions within the
    overall code region.

 ut_size

    OpenVMS usage: address
    type:          quadword (unsigned)
    access:        read only
    mechanism:     by value
    With ut_base_va, describes the unwind table (UT). ut_base_va
    is the process virtual address of the UT and must be quadword
    aligned. ut_size is the size of the UT in bytes and must be
    a multiple of the size (24 bytes: 3 quadwords) of an unwind
    table entry (UTE). The UTEs must describe nonoverlapping code
    sub regions within the overall code region.

 gp_value

    OpenVMS usage: address
    type:          quadword (unsigned)
    access:        read only
    mechanism:     by value
    Ignored on extension calls, required on create calls. The Global
    Data Pointer (GP) value for the routines described by these
    unwind tables.

 unwind_info_base

    OpenVMS usage: address
    type:          quadword (unsigned)
    access:        read only
    mechanism:     by value
    Ignored on extension calls; required on create calls. The unwind_
    info_base plus a particular UTE UIB offset must add up to the
    process virtual address of that UIB. Typically for static
    code (activated images from disk), this specifies the process
    virtual base address of the segment containing the UIBs. However,
    dynamically generated code, for example, can pass a zero for the
    unwind_info_base and have the full process virtual addresses of
    the UIBs in their UTEs.

 name

    OpenVMS usage: pseudo-image-name
    type:          character-code-text-string
    access:        read only
    mechanism:     by descriptor-fixed-length string descriptor
    Passed by descriptor (ignored on extension calls). May be used
    for traceback. Need not be unique. Should be less than 255
    characters (will be truncated, otherwise).

295  –  $SHOW INTRUSION

    Searches for and returns information about records in the
    intrusion database matching the caller's specifications.

    Format

      SYS$SHOW_INTRUSION  user_criteria ,intruder ,intruder_len

                          ,breakin_block ,[flags] ,[context]

    C Prototype

      int sys$show_intrusion  (void *user_criteria, void *intruder,

                              unsigned short int *intruder_len, void

                              *breakin_block, unsigned int flags,

                              unsigned int *context);

295.1  –  Arguments

 user_criteria

    OpenVMS usage:char_string or item_list_3
    type:         character-coded text string or longword (unsigned)
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor or by
                  reference
    If the CIA$M_ITEMLIST flag is FALSE:

    The user_criteria argument is the description of intruder
    or suspect. The user_criteria argument is the address of a
    character-string descriptor pointing to a buffer containing the
    user criteria to match an intrusion record's user specification
    in the intrusion database.

    The user_criteria argument is a character string of between 1 and
    1058 bytes containing characters to match the user specification
    on records in the intrusion database.

    A user specification is any combination of the suspect's or
    intruder's source node name, source user name, source DECnet
    for OpenVMS address, local failed user name, local terminal,
    or the string UNKNOWN. The user specification for an intrusion
    record is based on the input to the $SCAN_INTRUSION service and
    the settings of the LGI system parameter. For more information,
    see the VSI OpenVMS Guide to System Security.

    Wildcards are allowed for the user_criteria argument.

    For more information about using wildcards to scan the intrusion
    database, see the $SHOW_INTRUSION Description section in the VSI
    OpenVMS System Services Reference Manual.

    If the CIA$M_ITEMLIST flag is TRUE:

    The user_criteria argument is now the address of an 32-bit item
    list. If the item list is used, one item, the CIA$_USER_CRITERIAL
    item, must be present in the item list.

    The following table lists the valid item descriptions for the
    user_criteria argument:

    Item               Description

    CIA$_OUTPUT_LIST   Address of an 8192-byte buffer into which the
                       service writes the associated node information
                       for the returned intrusion record.
    CIA$_SCSNODE_LIST  Address of a list of 8-character null-padded
                       SCS nodenames for which the caller wants to
                       see intrusion information about.
    CIA$_USER_         Address of a buffer, 1-1058 bytes long,
    CRITERIAL          containing the intruder or suspect.

    If a CIA$_SCSNODE_LIST item is provided, an intrusion record will
    only be returned if it originated on one of the nodes specified.
    If a CIA$_SCSNODE_LIST item is not provided, records from all
    nodes will be candidates for display. Multiple CIA$_SCSNODE_LIST
    items are permitted in the item list.

    If a CIA$_OUTPUT_LIST item is provided, the item is filled with
    node-count records on return. The returned intrusion record will
    have a breakin block with a valid attempt-count field. The node-
    count records will have the name and attempt-count for each node
    represented.

 intruder

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    User specification of the matched intruder or suspect record in
    the intrusion database. The intruder argument is the address of
    a character-string descriptor pointing to a buffer to receive
    the user specification of the matched record in the intrusion
    database.

    The intruder argument is a 1058-byte string that will receive
    the user specification of a record in the intrusion database
    that matches the specifications in the user_criteria and flags
    arguments.

 intruder_len

    OpenVMS usage:string length
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Length of returned string in the intrusion buffer. The intruder_
    len argument is the address of a longword to receive the length
    of the returned intrusion buffer.

    The possible range of the intruder_len argument is 0 to 1058
    bytes. If the longword specified by the argument contains a 0
    after the call to the service, either the service did not find a
    record that matched the user criteria in the intrusion database,
    or there are no more matching items in the intrusion database.

 breakin_block

    OpenVMS usage:record
    type:         block of 2 longwords (unsigned) and
                  1 quadword (unsigned)
    access:       write only
    mechanism:    by reference
    Block to receive various information in the intrusion database
    about a record matching the user criteria.

    Refer to the VSI OpenVMS System Services Reference Manual to view
    the breakin_block argument diagram and descriptor fields table.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Type of records in the intrusion database about which information
    is to be returned. The flags argument is a longword bit mask
    wherein each bit corresponds to an option.

    Each option has a symbolic name. The $CIADEF macro defines the
    following valid names:

    Symbolic Name      Description

    CIA$M_ALL          All records will be shown. If the flags
                       argument is omitted, this value is assumed.

    CIA$M_INTRUDERS    Only intruder records matching the criteria
                       specified by the user_criteria argument will
                       be returned. The value of the flag field in
                       the break-in block will always be 1.

    CIA$M_ITEMLIST     If FALSE, the user_criteria argument is a
                       character string. If TRUE, this argument is a
                       32-bit item list.

    CIA$M_SUSPECTS     Only suspect records matching the criteria
                       specified by the user_criteria argument will
                       be returned. The value of the flag field in
                       the break-in block will always be 0.

    Each of these options is mutually exclusive.

 context

    OpenVMS usage:context
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference
    Context information to keep between related calls to the $SHOW_
    INTRUSION service. The context argument is the address of a
    longword that receives a context from the service.

    The initial value contained in the unsigned longword pointed to
    by the context argument must be 0. The contents of the unsigned
    longword must not be changed after the service has set its value.
    If the contents of the context argument are changed between calls
    to the service, SS$_BADCONTEXT will be returned.

    Contexts become invalid after one-half hour of non-use. This
    means that if you call the $SHOW_INTRUSION service with a
    wildcard in the user_criteria argument and do not call the
    service to get the next matching record within one-half hour,
    the context becomes invalid. If the context has become invalid,
    you must restart your search of the intrusion database from the
    beginning by resetting the context to 0.

296  –  $SIGNAL ARRAY 64

    Returns the address of a 64-bit signal array. A 32-bit signal
    array and a mechanism array are passed to a condition handler
    when it is called. $SIGNAL_ARRAY_64 provides the address of the
    64-bit signal array, which might be required for programs that
    use 64-bit address space.

    This service accepts 64-bit addresses.

    Format

      SYS$SIGNAL_ARRAY_64  mcharg, sigarg_64

    C Prototype

      int sys$signal_array_64  (unsigned __int64 mcharg, unsigned

                               __int64 sigarg_64);

296.1  –  Arguments

 mcharg

    OpenVMS usage:mechanism array
    type:         vector quadword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference, array reference
    The mechanism array. The mcharg argument is the 32- or 64-bit
    address of this array, which was passed to the condition handler.
    $SIGNAL_ARRAY_64 uses this structure to determine the 64-bit
    signal array address.

 sigarg_64

    OpenVMS usage:64-bit signal array
    type:         vector quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference, array reference
    The 32- or 64-bit address of the 64-bit signal array is returned
    in this argument.

297  –  $SNDERR

    Writes a user-specified message to the system error log file,
    preceding it with the date and time.

    Format

      SYS$SNDERR  msgbuf

    C Prototype

      int sys$snderr  (void *msgbuf);

297.1  –  Argument

 msgbuf

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Message to be written to the error log file. The msgbuf argument
    is the address of a character string descriptor pointing to the
    message text.

298  –  $SNDJBC

    Creates, stops, and manages queues and the batch and print jobs
    in those queues. The $SNDJBC service completes asynchronously;
    to synchronize the completion of most operations, use the Send to
    Job Controller and Wait ($SNDJBCW) service.

    Format

      SYS$SNDJBC  [efn] ,func [,nullarg] [,itmlst] [,iosb] [,astadr]

                  [,astprm]

    C Prototype

      int sys$sndjbc  (unsigned int efn, unsigned short int func,

                      unsigned int nullarg, void *itmlst, struct

                      _iosb *iosb, void (*astadr)(__unknown_params),

                      int astprm);

298.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag to be set when $SNDJBC completes. The
    efn argument is a longword containing this number; however,
    $SNDJBC uses only the low-order byte.

    When you queue the request, $SNDJBC clears the specified event
    flag (or event flag 0 if efn was not specified). Then, when the
    operation completes, $SNDJBC sets the specified event flag (or
    event flag 0).

 func

    OpenVMS usage:function_code
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Function code specifying the function that $SNDJBC is to perform.
    The func argument is a word containing this function code. The
    $SJCDEF macro defines the names of each function code.

    You can specify only one function code in a single call to
    $SNDJBC. Most function codes require or allow for additional
    information to be passed in the call. You pass this information
    by using the itmlst argument, which specifies a list of one or
    more item descriptors. Each item descriptor in turn specifies an
    item code, which modifies, restricts, or otherwise affects the
    action designated by the function code.

 nullarg

    OpenVMS usage:null_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Placeholding argument Reserved to VSI.

 itmlst

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item list supplying information to be used in performing the
    function specified by the func argument. The itmlst argument is
    the address of the item list. The item list consists of one or
    more item descriptors, each of which specifies an item code. The
    item list is terminated by an item code of 0 or by a longword of
    0.

    To view the item code diagram and descriptor fields table, see
    the VSI OpenVMS System Services Reference Manual.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block into which $SNDJBC writes the completion status
    after the requested operation has completed. The iosb argument is
    the address of the I/O status block.

    At request initiation, $SNDJBC sets the value of the quadword
    I/O status block to 0. When the requested operation completes,
    $SNDJBC writes a condition value in the first longword of the
    I/O status block. It writes the value 0 into the second longword;
    this longword is unused and reserved for future use.

    The condition values returned by $SNDJBC in the I/O status
    block are usually condition values from the JBC facility. These
    condition values are defined by the $JBCMSGDEF macro. In some
    cases, the condition value returned by $SNDJBC can be an error
    return from a system service or an OpenVMS RMS service that
    is used in executing the request. For the SJC$_SYNCHRONIZE_JOB
    request, the condition value returned is the completion status of
    the requested job.

    The condition values returned from the JBC facility are listed in
    the Condition Values Returned in the I/O Status Block section.

    Though this argument is optional, VSI strongly recommends that you
    specify it, for the following reasons:

    o  If you are using an event flag to signal the completion of
       the service, you can test the I/O status block for a condition
       value to be sure that the event flag was not set by an event
       other than service completion.

    o  If you are using the $SYNCH service to synchronize completion
       of the service, the I/O status block is a required argument
       for $SYNCH.

    o  The condition value returned in R0 and the condition value
       returned in the I/O status block provide information about
       different aspects of the call to the $SNDJBC service. The
       condition value returned in R0 gives you information about the
       success or failure of the service call itself; the condition
       value returned in the I/O status block gives you information
       about the success or failure of the service operation.
       Therefore, to accurately assess the success or failure of the
       call to $SNDJBC, you must check the condition values returned
       in both R0 and the I/O status block.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference
    AST service routine to be executed when $SNDJBC completes. The
    astadr argument is the address of this routine.

    If specified, the AST routine executes at the same access mode as
    the caller of $SNDJBC.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST service routine specified
    by the astadr argument. The astprm argument is this longword
    parameter.

299  –  $SNDJBCW

    The Send to Job Controller and Wait and $GETQUI services together
    provide the user interface to the Job Controller (JBC) facility.
    The $SNDJBCW service allows you to create, stop, and manage
    queues and the jobs in those queues. Queues can be generic,
    batch, execution, or output queues. Jobs can be batch or print
    jobs.

    The $SNDJBCW service queues a request to the job controller. For
    most operations, $SNDJBCW completes synchronously; that is, it
    returns to the caller after the operation completes; however, if
    the requested operation is a pause queue, stop queue, or abort
    job operation, $SNDJBCW returns to the caller after queuing
    the request. There is no way to synchronize completion of these
    operations. Also, $SNDJBCW does not wait for a job to complete
    before it returns to the caller. To synchronize completion of a
    job, the caller must specify the SJC$_SYNCHRONIZE_JOB function
    code.

    The $SNDJBCW service is identical to the Send to Job Controller
    ($SNDJBC) service except that $SNDJBC completes asynchronously;
    the $SNDJBC service returns to the caller immediately after
    queuing the request, without waiting for the operation to
    complete.

    The $SNDJBC and $SNDJBCW services supersede the Send Message to
    Symbiont Manager ($SNDSMB) and Send Message to Accounting Manager
    ($SNDACC) services. You should write new programs using $SNDJBC
    or $SNDJBCW, instead of $SNDSMB or $SNDACC. You should convert
    old programs using $SNDSMB or $SNDACC to use $SNDJBC or $SNDJBCW,
    as convenient.

    Format

      SYS$SNDJBCW  [efn] ,func [,nullarg] [,itmlst] [,iosb] [,astadr]

                   [,astprm]

    C Prototype

      int sys$sndjbcw  (unsigned int efn, unsigned short int func,

                       unsigned int nullarg, void *itmlst, struct

                       _iosb *iosb, void (*astadr)(__unknown_params),

                       int astprm);

300  –  $SNDOPR

    Performs the following functions:

    o  Sends a user request to operator terminals

    o  Sends a user cancellation request to operator terminals

    o  Sends an operator reply to a user terminal

    o  Enables an operator terminal

    o  Displays the status of an operator terminal

    o  Initializes the operator log file

    Format

      SYS$SNDOPR  msgbuf ,[chan]

    C Prototype

      int sys$sndopr  (void *msgbuf, unsigned short int chan);

300.1  –  Arguments

 msgbuf

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    User buffer specifying the operation to be performed and the
    information needed to perform that operation. The msgbuf argument
    is the address of a character string descriptor pointing to the
    buffer.

    The format and contents of the buffer vary with the requested
    operation; however, the first byte in any buffer is the request
    code, which specifies the operation to be performed. The $OPCMSG
    macro defines the symbolic names for these request codes.

    The following table shows each operation that $SNDOPR performs
    and the request code that specifies that operation:

    Request Code   Corresponding Operation

    OPC$_RQ_       Sends a user cancellation request to specified
    CANCEL         operator terminals. You use this request code
                   to notify one or more operators that a previous
                   request is to be canceled. To specify OPC$_RQ_
                   CANCEL, you must also specify the chan argument.

    OPC$_RQ_LOGI   Initializes the operator log file.

    OPC$_RQ_       Sends an operator reply to a user who has made a
    REPLY          request. Operators use this request code to report
                   the status of a user request. The format of the
                   message buffer for this request is the format
                   of the reply found in the user's mailbox after
                   the call to $SNDOPR completes. All functions of
                   $SNDOPR that deliver a reply to a mailbox do so in
                   the format described for this request code.

    OPC$_RQ_RQST   Sends a user request to operator terminals. This
                   request code is used to make an operator request.
                   If you specify a reply to the request (by using
                   the chan argument), the operator request is kept
                   active until the operator responds.

    OPC$_RQ_       Reports the status of an operator terminal.
    STATUS         Operators use this request to display the operator
                   classes for which the specified terminal is
                   enabled and a list of outstanding requests.

    OPC$_RQ_       Enables an operator terminal. You use this request
    TERME          to enable a specified terminal to receive operator
                   messages.

    Refer to the VSI OpenVMS System Services Reference Manual to
    view the diagrams depicting the message buffer for each of these
    request codes.

 chan

    OpenVMS usage:channel
    type:         word (unsigned)
    access:       read only
    mechanism:    by value
    Channel assigned to the mailbox to which the reply is to be sent.
    The chan argument is a longword value containing the number of
    the channel. If you do not specify chan or specify it as the
    value 0 (the default), no reply is sent.

    If a reply from the operator is desired, you must specify the
    chan argument.

301  –  $SPACE

    The Space service lets you space (skip) a tape file forward or
    backward a specified number of blocks.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

302  –  $START ALIGN FAULT REPORT (Alpha and Integrity servers)

    On Alpha and Integrity server systems, initializes user image
    alignment fault reporting.

    Format

      SYS$START_ALIGN_FAULT_REPORT  report_method ,report_buffer

                                    ,buffer_length

    C Prototype

      int sys$start_align_fault_report  (int report_method,

                                        void *report_buffer, int

                                        buffer_length);

302.1  –  Arguments

 report_method

    OpenVMS usage:longword_signed
    type:         longword (signed)
    access:       read
    mechanism:    by value
    Method by which image alignment faults are to be reported.

    The following table shows valid values for the report_method
    argument:

    Value          Meaning

    AFR$C_         Alignment fault PCs and fault addresses are saved
    BUFFERED       in a user-supplied buffer.
    AFR$C_         Alignment faults are elevated to user mode
    EXCEPTION      exceptions.

 report_buffer

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       read
    mechanism:    by reference
    The 32-bit address of the buffer into which to write the fault
    data. The report_buffer argument is needed only if the value of
    the report_method argument is AFR$C_BUFFERED.

 buffer_length

    OpenVMS usage:byte count
    type:         longword (signed)
    access:       read
    mechanism:    by value
    Length of the buffer specified in the report_buffer argument.

    The buffer must have a minimum size of AFR$K_USER_LENGTH +
    32. However, a larger buffer allows for more information to be
    collected.

303  –  $START BRANCH

    Adds a new branch to a transaction.

    Format

      SYS$START_BRANCH  [efn] ,[flags] ,iosb ,[astadr] ,[astprm]

                        ,tid ,tm_name ,bid [,[timout], [acmode],

                        [tx_class]]

    C Prototype

      int sys$start_branch  (unsigned int efn, unsigned int

                            flags, struct _iosb *iosb, void

                            (*astadr)(__unknown_params), int astprm,

                            unsigned int tid [4], void *tm_name,

                            unsigned int bid [4],...);

303.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for these option
    flags, described in $START_BRANCH Option Flags. All undefined
    bits must be 0. If this argument is omitted, no flags are used.

    Table SYS-26 $START_BRANCH Option Flags

    Flag Name          Description

    DDTM$M_BRANCH_     Specifies that the new branch is
    UNSYNCHED          unsynchronized.

                       If this flag is clear, the new branch is
                       synchronized.
    DDTM$M_NONDEFAULT  Set this flag if you do not want the
                       transaction to be the default transaction
                       of the calling process. If this flag is
                       clear, the transaction becomes the default
                       transaction of the calling process.

                       An error is returned if this flag is clear
                       and the calling process has an current default
                       transaction.
    DDTM$M_SYNC        Specifies successful synchronous completion
                       by returning SS$_SYNCH. When SS$_SYNCH is
                       returned, the AST routine is not called, the
                       event flag is not set, and the I/O status
                       block is not filled in.

 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.

    To view the I/O status block diagram, see the VSI OpenVMS System
    Services Reference Manual.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    The AST routine 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 $START_BRANCH
    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 the transaction to which the new branch
    will be added.

 tm_name

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    The name of the node on which the call was made to $ADD_BRANCH
    that authorized the new branch to be added to the transaction.
    Note that this cannot be a cluster alias.

    To ensure smooth operation in a mixed-network environment,
    refer to the chapter entitled Managing DECdtm Services in the
    VSI OpenVMS System Manager's Manual, for information on defining
    node names.

 bid

    OpenVMS usage:branch_id
    type:         octaword (unsigned)
    access:       read only
    mechanism:    by reference
    The identifier (BID) of the new branch that is to be added to the
    transaction.

    An BID value of zero is invalid.

 timout

    OpenVMS usage:date_time
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Reserved to VSI.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The access mode of the new branch in this process. This is the
    least privileged mode that a caller must be in to remove this
    branch from the transaction by calling $END_BRANCH. Note that it
    can be removed from the transaction by calling $ABORT_TRANS from
    any access mode.

    This argument only influences the access mode of the first branch
    in this process. Subsequent branches have the same access mode
    as the first. The access mode of the new branch is the least
    privileged of:

    o  The access mode of the caller.

    o  The access mode specified by the acmode argument.

    Note that if a branch already exists in this process, then
    neither the access mode of the caller nor the access mode
    specified by the acmode argument may be less privileged than
    that branch.

    The default value of this argument is the access mode of the
    caller.

 tx_class

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    A string that specifies the transaction class for the transaction
    on the local node if the transaction does not already have a
    transaction class on the local node. This string is passed in the
    event reports delivered to Resource Manager identifiers (RMIs)
    and Resource Manager (RM) participants on the local node.

    This argument is ignored if the transaction already has a
    transaction class on the local node.

    This string must be no longer than 31 characters.

304  –  $START BRANCHW

    Adds a new branch to a transaction.

    $START_BRANCHW always waits for the request to complete before
    returning to the caller. Other than this, it is identical to
    $START_BRANCH.

    Format

      SYS$START_BRANCHW  [efn] ,[flags] ,iosb ,[astadr] ,[astprm]

                         ,tid ,tm_name ,bid [,[timout] ,[acmode],

                         [tx_class]]

    C Prototype

      int sys$start_branchw  (unsigned int efn, unsigned int

                             flags, struct _iosb *iosb, void

                             (*astadr)(__unknown_params), int astprm,

                             unsigned int tid [4], void *tm_name,

                             unsigned int bid [4],...);

305  –  $START TRANS

    Starts a new transaction.

    Format

      SYS$START_TRANS  [efn] ,[flags] ,iosb [,[astadr] ,[astprm]

                       ,[tid] ,[timout] ,[acmode] ,[tx_class]]

    C Prototype

      int sys$start_trans  (unsigned int efn, unsigned int flags,

                           struct _iosb *iosb,...);

305.1  –  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
    Flags specifying options for the service. The flags argument is
    a longword bit mask in which each bit corresponds to an option
    flag. The $DDTMDEF macro defines symbolic names for these option
    flags, which are described in $START_TRANS Option Flags. All
    undefined bits must be 0. If this argument is omitted, no flags
    are used.

    Table SYS-27 $START_TRANS Option Flags

    Flag                Description

    DDTM$M_NONDEFAULT   Set this flag if you do not want the new
                        transaction to be the default transaction of
                        the calling process. An error is returned if
                        this flag is set and the tid argument is zero
                        or omitted.

                        If this flag is clear, the new transaction
                        becomes the default transaction of the
                        calling process. An error is returned if
                        this flag is clear and the calling process
                        already has a default transaction.

    DDTM$M_SYNC         Set this flag to specify that successful
                        synchronous completion is to be indicated
                        by returning SS$_SYNCH. When SS$_SYNCH is
                        returned, the AST routine is not called, the
                        event flag is not set, and the I/O status
                        block is not filled in.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block in which the completion status of the service is
    returned as a condition value.

    To view the I/O status block diagram, see the VSI OpenVMS System
    Services Reference Manual.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure entry mask
    access:       call without stack unwinding
    mechanism:    by reference
    AST routine that is executed when the service completes if SS$_
    NORMAL is returned in R0. The astadr argument is the address of
    this routine. This routine is executed in the same access mode of
    the caller of the $START_TRANS service.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter that is passed to the AST routine specified by the
    astadr argument.

 tid

    OpenVMS usage:trans_id
    type:         octaword (unsigned)
    access:       write only
    mechanism:    by reference
    Address of an octaword in which the service returns the
    identifier (TID) of the new transaction.

    No other call to $START_TRANS on any node ever returns the same
    TID value.

    The default value of this argument is zero. An error is returned
    if the DDTM$M_NONDEFAULT flag is set and this argument is either
    omitted or zero.

 timout

    OpenVMS usage:date_time
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Timeout for the new transaction. This is the time at which the
    DECdtm transaction manager is to abort the transaction if the
    transaction has not already committed.

    A positive time value specifies an absolute time. The absolute
    value of a negative time specifies an offset (delta time) from
    the current time.

    The transaction is aborted at the next timer interval if you
    specify either a zero time value or any time in the past. If this
    argument is omitted, the new transaction has no timeout.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    An access mode of the new branch of the new transaction.

    An access mode is maintained for each transaction per process.
    All branches in a transaction in a process have the same access
    mode. Subsequent operations do not alter it. The access mode of a
    branch is the least privileged mode in which a successful call to
    $END_TRANS may be made.

    Note that the transaction may be aborted by a call to $ABORT_
    TRANS from any access mode.

    The access mode of the branch is the least privileged of the
    following:

    o  The access mode of the caller

    o  The access mode specified by the acmode argument

    If the acmode argument is omitted, the access mode of the new
    branch is the same as that of the caller.

 tx_class

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    A string that specifies the transaction class for the new
    transaction on the local node. This string is passed in the event
    reports delivered to RMIs and RM participants on the local node.

    This string must be no longer than 31 characters. If this
    argument is omitted or the string is of length zero, the new
    transaction has no transaction class on the local node. In this
    case, the class of the transaction on the local node can be
    specified by a subsequent call to $START_BRANCH on that node.

306  –  $START TRANSW

    Starts a new transaction.

    $START_TRANSW always waits for the request to complete before
    returning to the caller. Other than this, it is identical to
    $START_TRANS.

307  –  $STOP ALIGN FAULT REPORT (Alpha and Integrity servers)

    On Alpha and Integrity server systems, disables user image
    alignment fault reporting.

    Format

      SYS$STOP_ALIGN_FAULT_REPORT

    C Prototype

      int sys$stop_align_fault_report  (void);

307.1  –  Arguments

    None.

308  –  $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);

308.1  –  Arguments

    None.

309  –  $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);

309.1  –  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.

310  –  $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);

310.1  –  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.

311  –  $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);

311.1  –  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.

312  –  $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);

312.1  –  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.

313  –  $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);

313.1  –  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 VSI. 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.

    The outcome of the state change is indicated by the contents of
    the I/O status block.

    To view the I/O status block diagram, see the VSI OpenVMS System
    Services Reference Manual.

 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. For a list of
    the permitted values and the possible successful outcomes, see
    the VSI OpenVMS System Services Reference Manual.

314  –  $TRANS EVENTW

    Forces a transaction state change for a transaction in which
    there is at least one RM participant that has specified the
    DDTM$M_COORDINATOR flag.

    $TRANS_EVENTW always waits for the request to complete before
    returning to the caller. Other than this, it is identical to
    $TRANS_EVENT.

    Format

      SYS$TRANS_EVENTW  [efn] ,[flags] ,iosb ,[astadr] ,[astprm] ,tid

                        ,rm_id ,tx_event

    C Prototype

      int sys$trans_eventw  (unsigned int efn, unsigned int

                            flags, struct _iosb *iosb, void

                            (*astadr)(__unknown_params), __int64

                            astprm, )

315  –  $TRNLNM

    Returns information about a logical name.

    On Alpha and Integrity server systems, this service accepts 64-
    bit addresses.

    Format

      SYS$TRNLNM  [attr] ,tabnam ,lognam ,[acmode] ,[itmlst]

    C Prototype

      int sys$trnlnm  (unsigned int *attr, void *tabnam, void

                      *lognam, unsigned char *acmode, void *itmlst);

315.1  –  Arguments

 attr

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Attributes controlling the search for the logical name. The
    attr argument is the 32- or 64-bit address (on Alpha and
    Integrity server systems) of a longword bit mask specifying these
    attributes.

    Each bit in the longword corresponds to an attribute and has a
    symbolic name. The $LNMDEF macro defines these symbolic names.
    To specify an attribute, use its symbolic name or set its
    corresponding bit. All undefined bits in the longword have the
    value 0.

    If you do not specify this argument or specify it as the value 0
    (no bits set), the following attributes are not used:

    Attribute        Description

    LNM$M_CASE_      If set, $TRNLNM does not distinguish between
    BLIND            uppercase and lowercase letters in the logical
                     name to be translated.
    LNM$M_           If set, $TRNLNM does not translate the current
    INTERLOCKED      logical name until any clusterwide logical
                     name modifications in progress are completed.
                     This attribute is not set by default. If
                     your application requires translation using
                     the most recent definition of a clusterwide
                     logical name, use this attribute to ensure that
                     the translation is stalled until all pending
                     modifications have been made.

 tabnam

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor (Alpha and Integrity servers)
    Name of the logical name table or the name of a searchlist
    logical name that translates the name of one or more tables
    in which to search for the specified logical name. The tabnam
    argument is the 32- or 64-bit address (on Alpha and Integrity
    server systems) of a descriptor pointing to this name. This
    argument is required.

    The name must be entered in uppercase letters. (This requirement
    differs from the $CRELNT system service, which automatically
    changes tabnam to uppercase.)

    If the table name is not the name of a logical name table, it is
    assumed to be a logical name and is translated iteratively until
    either the name of a logical name table is found or the number
    of translations allowed by the system have been performed. If
    the table name translates to a list of logical name tables, the
    tables are searched in the specified order.

 lognam

    OpenVMS usage:logical_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor (Alpha and Integrity servers)
    Logical name about which information is to be returned. The
    lognam argument is the 32- or 64-bit address (on Alpha and
    Integrity server systems) of a descriptor pointing to the logical
    name string. This argument is required.

 acmode

    OpenVMS usage:access_mode
    type:         byte (unsigned)
    access:       read only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Access mode to be used in the translation. The acmode argument is
    the 32- or 64-bit address (on Alpha and Integrity server systems)
    of a byte specifying the access mode. The $PSLDEF macro defines
    symbolic names for the four access modes.

    When you specify the acmode argument, $TRNLNM ignores all
    names (both logical names and table names) at access modes less
    privileged than the specified access mode. The specified access
    mode is not checked against that of the caller.

    If you do not specify acmode, $TRNLNM performs the translation
    without regard to access mode; however, the translation process
    proceeds from the outermost to the innermost access modes. Thus,
    if two logical names with the same name but at different access
    modes exist in the same table, $TRNLNM translates the name with
    the outermost access mode.

 itmlst

    OpenVMS usage:32-bit item_list_3 or 64-bit item_list_64b
    type:         longword (unsigned) for 32-bit; quadword (unsigned)
                  for 64-bit
    access:       read only
    mechanism:    by 32- or 64-bit reference (Alpha and Integrity
                  servers)
    Item list describing the information that $TRNLNM is to return.
    The itmlst argument is the 32- or 64-bit address (on Alpha
    and Integrity server systems) of a list of item descriptors,
    each of which specifies or controls an item of information to
    be returned. An item list in 32-bit format is terminated by a
    longword of 0; an item list in 64-bit format is terminated by
    a quadword of 0. All items in an item list must be of the same
    format-either 32-bit or 64-bit.

    To view the item code diagrams and descriptor fields tables, see
    the VSI OpenVMS System Services Reference Manual.

316  –  $TRUNCATE

    The Truncate service shortens a sequential file.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

317  –  $TSTCLUEVT

    Simulates the occurrence of a cluster configuration event to test
    the functionality of the notification AST.

    Format

      SYS$TSTCLUEVT  [handle] ,[acmode] ,[event]

    C Prototype

      int sys$tstcluevt  (unsigned int *handle, unsigned int acmode,

                         unsigned int event);

317.1  –  Arguments

 handle

    OpenVMS usage:identifier
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by reference
    Identification of the asynchronous system trap (AST) to be
    tested. The handle argument uniquely identifies the request and
    is returned when the $SETCLUEVT service is called.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode for which a configuration event AST is to be
    triggered. The acmode argument is a longword containing the
    access mode.

    Each access mode has a symbolic name. The $PSLDEF macro defines
    the following symbols for the four access modes:

    Symbol         Access Mode

    PSL$C_KERNEL   Kernel
    PSL$C_EXEC     Executive
    PSL$C_SUPER    Supervisor
    PSL$C_USER     User

 event

    OpenVMS usage:event_code
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Event code indicating the type of configuration for which an AST
    is to be triggered.

    Each event type has a symbolic name. The $CLUEVTDEF macro defines
    the following symbolic names:

    Symbolic Name      Description

    CLUEVT$C_ADD       One or more OpenVMS nodes have been added to
                       the OpenVMS Cluster system.
    CLUEVT$C_REMOVE    One or more OpenVMS nodes have been removed
                       from the OpenVMS Cluster system.

318  –  $ULKPAG

    Unlocks pages that were previously locked in memory by the Lock
    Pages in Memory ($LCKPAG) service. Locked pages are automatically
    unlocked and deleted at image exit.

    Format

      SYS$ULKPAG  inadr ,[retadr] ,[acmode]

    C Prototype

      int sys$ulkpag  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode);

318.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Starting and ending virtual addresses of the pages to be
    unlocked. The inadr argument is the address of a 2-longword array
    containing, in order, the starting and ending process virtual
    addresses.

    Only the virtual page number portion of each virtual address is
    used; the low-order byte-within-page bits are ignored. If the
    starting and ending virtual addresses are the same, a single page
    is unlocked.

    If more than one page is being unlocked and you need to determine
    specifically which pages had been previously unlocked, you should
    unlock the pages one at a time, that is, one page per call
    to $ULKPAG. The condition value returned by $ULKPAG indicates
    whether the page was previously unlocked.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference-array reference or descriptor
    Starting and ending process virtual addresses of the pages
    actually unlocked by $ULKPAG. The retadr argument is the address
    of a 2-longword array containing, in order, the starting and
    ending process virtual addresses.

    If an error occurs while multiple pages are being unlocked,
    retadr specifies those pages that were successfully unlocked
    before the error occurred. If no pages were successfully
    unlocked, both longwords in the retadr array contain the value
    -1.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode on behalf of which the request is being made. The
    acmode argument is a longword containing the access mode. The
    $PSLDEF macro defines the symbols for the four access modes.

    The most privileged access mode used is the access mode of the
    caller. To unlock any specified page, the resultant access mode
    must be equal to or more privileged than the access mode of the
    owner of that page.

319  –  $ULKPAG 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, unlocks pages that were
    previously locked in memory by the Lock Pages in Memory ($LCKPAG_
    64) service.

    This service accepts 64-bit addresses.

    Format

      SYS$ULKPAG_64  start_va_64 ,length_64 ,acmode ,return_va_64

                     ,return_length_64

    C Prototype

      int sys$ulkpag_64  (void *start_va_64, unsigned __int64

                         length_64, unsigned int acmode, void

                         *(*(return_va_64)), unsigned __int64

                         *return_length_64);

319.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the pages to be unlocked. The
    specified virtual address will be rounded down to a CPU-specific
    page boundary.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be unlocked. The specified
    length will be rounded up to a CPU-specific page boundary so that
    it includes all CPU-specific pages in the requested range.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode on behalf of which the request is being made. The
    acmode argument is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. To unlock any specified page, the resultant access mode
    must be equal to or more privileged than the access mode of the
    owner of that page.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the unlocked virtual
    address range. The return_va_64 argument is the 32- or 64-bit
    virtual address of a naturally aligned quadword into which the
    service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the virtual address range unlocked. The
    return_length_64 argument is the 32- or 64-bit virtual address
    of a naturally aligned quadword into which the service returns
    the length of the virtual address range in bytes.

320  –  $ULWSET

    Unlocks pages that were previously locked in the working set by
    the Lock Pages in Working Set ($LKWSET) service.

    Format

      SYS$ULWSET  inadr ,[retadr] ,[acmode]

    C Prototype

      int sys$ulwset  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode);

320.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference-array reference or descriptor
    Starting and ending virtual addresses of the pages to be
    unlocked. The inadr argument is the address of a 2-longword array
    containing, in order, the starting and ending process virtual
    addresses.

    Only the virtual page number portion of each virtual address is
    used; the low-order byte-within-page bits are ignored. If the
    starting and ending virtual address are the same, a single page
    is unlocked.

    If more than one page is being unlocked and you need to determine
    specifically which pages had been previously unlocked, you should
    unlock the pages one at a time, that is, one page per call
    to $ULWSET. The condition value returned by $ULWSET indicates
    whether the page was previously unlocked.

    On Alpha and Integrity server systems, if the first address in
    the 2-longword array is within an image mapped to your process,
    the entire image specified by the address is unlocked from the
    working set.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference-array reference or descriptor
    Starting and ending process virtual addresses of the pages that
    were actually unlocked by $CRMPSC. The retadr argument is the
    address of a 2-longword array containing, in order, the starting
    and ending process virtual addresses.

    If an error occurs while multiple pages are being unlocked,
    retadr specifies those pages that were successfully unlocked
    before the error occurred. If no pages were successfully
    unlocked, both longwords in the retadr array contain the value
    -1.

    On Alpha and Integrity server systems, if the inadr argument
    specifies an address within an image mapped to your process,
    retadr specifies only one range of pages unlocked from the
    working set. Many ranges of pages might be unlocked.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode on behalf of which the request is being made. The
    acmode argument is a longword containing the access mode. The
    $PSLDEF macro defines the symbols for the four access modes.

    The most privileged access mode used is the access mode of the
    caller. To unlock any specified page, the resultant access mode
    must be equal to or more privileged than the access mode of the
    owner of that page.

321  –  $ULWSET 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, unlocks a virtual address
    range that was previously locked in the working set by the Lock
    Pages in Working Set ($LKWSET_64) service.

    This service accepts 64-bit addresses.

    Format

      SYS$ULWSET_64  start_va_64 ,length_64 ,acmode ,return_va_64

                     ,return_length_64

    C Prototype

      int sys$ulwset_64  (void *start_va_64, unsigned __int64

                         length_64, unsigned int acmode, void

                         *(*(return_va_64)), unsigned __int64

                         *return_length_64);

321.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the pages to be unlocked from the
    working set. The specified virtual address will be rounded down
    to a CPU-specific page boundary.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address space to be unlocked from the
    working set. The specified length will be rounded up to a CPU-
    specific page boundary so that it includes all CPU-specific pages
    in the requested range.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode on behalf of which the request is being made. The
    acmode argument is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. To unlock any specified page, the resultant access mode
    must be equal to or more privileged than the access mode of the
    owner of that page.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The lowest process virtual address of the unlocked virtual
    address range. The return_va_64 argument is the 32- or 64-bit
    virtual address of a naturally aligned quadword into which the
    service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the virtual address range unlocked. The
    return_length_64 argument is the 32- or 64-bit virtual address
    of a naturally aligned quadword into which the service returns
    the length of the virtual address range in bytes.

322  –  $UNWIND

    Unwinds the procedure call stack.

    Format

      SYS$UNWIND  [depadr] ,[newpc]

    C Prototype

      int sys$unwind  (unsigned int *depadr, void *newpc);

322.1  –  Arguments

 depadr

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Depth to which the procedure call stack is to be unwound. The
    depadr argument is the address of a longword value. The value 0
    specifies the call frame of the procedure that was executing when
    the condition occurred (that is, no call frames are unwound); the
    value 1 specifies the caller of that frame; the value 2 specifies
    the caller of the caller of that frame, and so on.

    If depadr specifies the value 0, no unwind occurs and $UNWIND
    returns a successful condition value in R0.

    If you do not specify depadr (or with some languages you specify
    an address of 0), $UNWIND unwinds the stack to the call frame
    of the procedure that called the procedure that established the
    condition handler that is calling the $UNWIND service. This is
    the default and the normal method of unwinding the procedure call
    stack.

 newpc

    OpenVMS usage:address
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    New value for the program counter (PC); this value replaces the
    current value of the PC in the call frame of the procedure that
    receives control when the unwinding operation is complete. The
    newpc argument is a longword value containing the address at
    which execution is to resume.

    Execution resumes at this address when the unwinding operation is
    complete.

    If you do not specify newpc, execution resumes at the location
    specified by the PC in the call frame of the procedure that
    receives control when the unwinding operation is complete.

323  –  $UPDSEC

    Writes all modified pages in an active private or global section
    back into the section file on disk. One or more I/O requests are
    queued, based on the number of pages that have been modified.

    Format

      SYS$UPDSEC  inadr ,[retadr] ,[acmode] ,[updflg] ,[efn] ,[iosb]

                  ,[astadr] ,[astprm]

    C Prototype

      int sys$updsec  (struct _va_range *inadr, struct _va_range

                      *retadr, unsigned int acmode, char updflg,

                      unsigned int efn, struct _iosb *iosb, void

                      (*astadr)(__unknown_params), int astprm);

323.1  –  Arguments

 inadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference-array reference or descriptor
    Starting and ending virtual addresses of the pages that are to
    be written to the section file if they have been modified. The
    inadr argument is the address of a 2-longword array containing,
    in order, the starting and ending process virtual addresses.
    Addresses are adjusted up or down to CPU-specific pages.

    Only the virtual page number portion of each virtual address is
    used; the low-order byte-within-page bits are ignored.

    $UPDSEC scans pages starting at the address contained in the
    first longword specified by inadr and ending at the address
    contained in the second longword. Within this range, $UPDSEC
    locates read/write pages that have been modified and writes
    them (contiguously, if possible) to the section file on disk.
    Unmodified pages are also written to disk if they share the same
    cluster with modified pages.

    If the starting and ending virtual addresses are the same, a
    single page is written to the section file if the page has been
    modified.

    The address specified by the second longword might be smaller
    than the address specified by the first longword.

 retadr

    OpenVMS usage:address_range
    type:         longword (unsigned)
    access:       write only
    mechanism:    by reference-array reference or descriptor
    Addresses of the first and last pages that were actually queued
    for writing, in the first $QIO request, back to the section file
    on disk. The retadr argument is the address of a 2-longword array
    containing, in order, the addresses of the first and last pages.
    Addresses always are adjusted up or down to fall on CPU-specific
    boundaries.

    If $UPDSEC returns an error condition value in R0, each longword
    specified by retadr contains the value -1. In this case, an event
    flag is not set, no asynchonous system trap (AST) is delivered,
    and the I/O status block is not written to.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode on behalf of which the service is performed. The
    acmode argument is a longword containing the access mode. The
    $PSLDEF macro defines the symbols for the four access modes.

    The most privileged access mode used is the access mode of the
    caller. A page cannot be written to disk unless the access mode
    used by $UPDSEC is equal to or more privileged than the access
    mode of the owner of the page to be written.

 updflg

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Update specifier for read/write global sections. The updflg
    argument is a longword value. The value 0 (the default) specifies
    that all read/write pages in the global section are to be written
    to the section file on disk, whether or not they have been
    modified. The value 1 specifies that the caller is the only
    or the last process having the global section mapped for write
    access and that only modified pages should be written to the
    section file on disk.

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Event flag to be set when the section file on disk is actually
    updated. The efn argument is a longword specifying the number of
    the event flag; however, $UPDSEC uses only the low-order byte.

    If you do not specify efn, event flag 0 is used.

    When you invoke $UPDSEC, the specified event flag or event flag 0
    is cleared; when the update operation is complete, the event flag
    is set.

 iosb

    OpenVMS usage:io_status_block
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by reference
    I/O status block to receive the final completion status of the
    updating operation. The iosb argument is the address of the
    quadword I/O status block.

    When you invoke $UPDSEC, the I/O status block is cleared. After
    the update operation is complete, that is, when all I/O to the
    disk is complete, the I/O status block is written as follows:

    o  The first word contains the condition value returned by $QIO,
       indicating the final completion status.

    o  The first bit in the second word is set only if an error
       occurred during the I/O operation and the error was a hardware
       write error. The remaining bits of the second word are zeros.

    o  The second longword contains the virtual address of the first
       page that was not written.

    Though this argument is optional, VSI strongly recommends that you
    specify it for the following reasons:

    o  If you are using an event flag to signal the completion of
       the service, you can test the I/O status block for a condition
       value to be sure that the event flag was not set by an event
       other than service completion.

    o  If you are using $SYNCH to synchronize completion of the
       service, the I/O status block is a required argument for
       $SYNCH.

    o  The condition value returned in R0 and the condition value
       returned in the I/O status block provide information about
       different aspects of the call to $UPDSEC. The condition
       value returned in R0 gives you information about the success
       or failure of the service call itself; the condition value
       returned in the I/O status block gives you information about
       the success or failure of the service operation. Therefore,
       to accurately assess the success or failure of the call to
       $UPDSEC, you must check the condition values returned in both
       R0 and the I/O status block.

 astadr

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by reference-procedure reference or descriptor
    AST routine to be executed when the section file has been
    updated. The astadr argument is the address of this routine.

    If you specify astadr, the AST routine executes at the access
    mode from which the section file update was requested.

 astprm

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    AST parameter to be passed to the AST routine. The astprm
    argument is this longword parameter.

324  –  $UPDSECW

    Writes all modified pages in an active private or global section
    back into the section file on disk. One or more I/O requests are
    queued, based on the number of pages that have been modified.

    The $UPDSECW service completes synchronously; that is, it returns
    to the caller after writing all updated pages.

    For asynchronous completion, use the Update Section File on Disk
    ($UPDSEC) service; $UPDSEC returns to the caller after queuing
    the update request, without waiting for the pages to be updated.

    In all other respects, $UPDSECW is identical to $UPDSEC. For
    additional information about the $UPDSECW service, see the
    description of $UPDSEC.

    Format

      SYS$UPDSECW  inadr [,retadr] [,acmode] [,updflg] [,efn] [,iosb]

                   [,astadr] [,astprm]

    C Prototype

      int sys$updsecw  (struct _va_range *inadr, struct _va_range

                       *retadr, unsigned int acmode, char updflg,

                       unsigned int efn, struct _iosb *iosb, void

                       (*astadr)(__unknown_params), int astprm);

325  –  $UPDSEC 64 (Alpha and Integrity servers)

    On Alpha and Integrity server systems, writes all pages (or
    only those pages modified by the current process) in an active
    private or global disk file section back into the section file
    on disk. One or more I/O requests are queued to perform the write
    operation.

    The $UPDSEC_64 service completes asynchronously. For synchronous
    completion, use the Update Global Section File on Disk and Wait
    ($UPDSEC_64W) service.

    This service accepts 64-bit addresses.

    Format

      SYS$UPDSEC_64  start_va_64 ,length_64 ,acmode ,updflg ,efn

                     ,iosa_64 ,return_va_64 ,return_length_64

                     [,astadr_64 [,astprm_64]]

    C Prototype

      int sys$updsec_64  (void *start_va_64, unsigned __int64

                         length_64, unsigned int acmode, unsigned

                         int updflg, unsigned int efn, struct _iosa

                         *iosa_64, void *(*(return_va_64)), unsigned

                         __int64 *return_length_64,...);

325.1  –  Arguments

 start_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       read only
    mechanism:    by value
    The starting virtual address of the pages to be written to the
    section file. The specified virtual address is rounded down to a
    CPU-specific page boundary.

 length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       read only
    mechanism:    by value
    Length of the virtual address range to be written to the section
    file. The length specified is rounded up to a CPU-specific
    page boundary so that it includes all CPU-specific pages in the
    requested range.

 acmode

    OpenVMS usage:access_mode
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Access mode on behalf of which the service is performed. The
    acmode argument is a longword containing the access mode.

    The $PSLDEF macro in STARLET.MLB and the file PSLDEF.H in
    SYS$STARLET_C.TLB define the following symbols and their values
    for the four access modes:

    Value      Symbolic Name      Access Mode

    0          PSL$C_KERNEL       Kernel
    1          PSL$C_EXEC         Executive
    2          PSL$C_SUPER        Supervisor
    3          PSL$C_USER         User

    The most privileged access mode used is the access mode of the
    caller. A page cannot be written to disk unless the access mode
    used by $UPDSEC_64 is equal to or more privileged than the access
    mode of the owner of the page to be written.

 updflg

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    The update specifier for read/write global sections. The updflg
    argument is a longword value. The value 0 (the default) specifies
    that all read/write pages in the global section are to be written
    to the section file on disk, whether or not they have been
    modified. The value UPDFLG$M_WRT_MODIFIED specifies that the
    caller is the only process actually writing the global section
    and that only those pages that were actually modified by the
    caller are to be written to the section file on disk.

    Definitions for this flag can be found in the file SECDEF.H in
    SYS$STARLET_C.TLB for C and in $SECDEF in STARLET.MLB for macro.

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read_only
    mechanism:    by value
    The event flag to be set when the section file on disk is
    actually updated. The efn argument is a longword specifying the
    number of the event flag; however, this service only uses the
    low-order byte. If you do not specify the efn, event flag 0 is
    used.

    When you invoke $UPDSEC_64, the specified event flag or event
    flag 0 is cleared. When the update operation is complete, the
    event flag is set.

 iosa_64

    OpenVMS usage:io_status_area
    type:         IOSA structure
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The I/O status area to receive the final completion status of
    the updating operation. The iosa_64 argument is the 32- or 64-
    bit virtual address of the I/O status area. The I/O status area
    structure is 32 bytes in length.

    The I/O status area structure definition can be found in
    $IOSADEF in STARLET.MLB for macro and in the file IOSADEF.H in
    SYS$STARLET_C.TLB for C.

    When you call SYS$UPDSEC_64, the I/O status area is cleared.
    After the update operation is complete (that is, when all I/O
    to the disk is complete), the I/O status block is written as
    follows:

    o  isoa$l_status (offset 0)

       The first word contains the condition value return by SYS$QIO,
       indicating the final completion status.

       The first bit in the second word is set only if an error
       occurred during the I/O operation and the error was a hardware
       write error. The remaining bits of the second word are zeros.

    o  iosa$l_resd (offset 4)

       This field is reserved for future use by VSI. The value in this
       field is unpredictable.

    o  iosa$q_count_q (offset 8)

       This field is reserved for future use by VSI. The value in this
       field is unpredictable.

    o  iosa$ph_upsec_nowrt_va (offset 16)

       This field contains the virtual address of the first byte in
       the first disk block that was not written. In the case of an
       I/O error, this virtual address indicates the disk block for
       which the error occurred.

    o  iosa$q_resq (offset 24)

       This field is reserved for future use by VSI. The value in this
       field is unpredictable.

 return_va_64

    OpenVMS usage:address
    type:         quadword address
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The process virtual address of the first page that was actually
    queued for writing (in the first I/O request) back to the section
    file on the disk. The return_va_64 argument is the 32- or 64-bit
    virtual address of a naturally aligned quadword into which the
    service returns the virtual address.

 return_length_64

    OpenVMS usage:byte count
    type:         quadword (unsigned)
    access:       write only
    mechanism:    by 32- or 64-bit reference
    The length of the first I/O request to write modified pages back
    to the section file on disk. The return_length_64 argument is
    the 32- or 64-bit virtual address of a naturally aligned quadword
    into which the service returns the length of the virtual address
    range, in bytes, written by the first I/O request.

 astadr_64

    OpenVMS usage:ast_procedure
    type:         procedure value
    access:       call without stack unwinding
    mechanism:    by 32- or 64-bit reference
    The asynchronous system trap (AST) routine to be executed when
    the section file has been updated. The astadr_64 argument is
    the 32- or 64-bit address of this routine. If you specify the
    astadr_64 argument, the AST routine executes at the access mode
    from which the section file update was requested.

 astprm_64

    OpenVMS usage:user_arg
    type:         quadword
    access:       read only
    mechanism:    by value
    The AST parameter to be passed to the AST routine. The astprm_64
    argument is a quadword argument that is passed to the AST
    routine.

326  –  $UPDSEC 64W (Alpha and Integrity servers)

    On Alpha and Integrity server systems, writes all modified pages
    in an active private or global disk file section back into the
    section file on disk. Zero or more I/O requests are queued, based
    on the number of pages that have been modified.

    The $UPDSEC_64W service completes synchronously; that is, it
    returns to the caller after writing all updated pages.

    In all other respects, $UPDSEC_64W is identical to $UPDSEC_64.
    For additional information about the $UPDSEC_64W service, see the
    help for $UPDSEC_64.

    This service accepts 64-bit addresses.

    Format

      SYS$UPDSEC_64W  start_va_64 ,length_64 ,acmode ,updflg ,efn

                      ,iosa_64 ,return_va_64 ,return_length_64

                      [,astadr_64 [,astprm_64]]

    C Prototype

      int sys$updsec_64w  (void *start_va_64, unsigned __int64

                          length_64, unsigned int acmode, unsigned

                          int updflg, unsigned int efn, struct _iosa

                          *iosa_64, void *(*(return_va_64)), unsigned

                          __int64 *return_length_64,...);

327  –  $VERIFY PROXY

    Verifies that a proxy exists and returns a valid local user for
    the caller to use to create a local login.

    Format

      SYS$VERIFY_PROXY  rem_node ,rem_user ,[proposed_user]

                        ,local_user ,local_user_length ,[flags]

    C Prototype

      int sys$verify_proxy  (void *rem_node, void *rem_user, void

                            *proposed_user, void *local_user,

                            unsigned short int *local_user_len,

                            unsigned int flags);

327.1  –  Arguments

 rem_node

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Remote node name of the proxy to be verified. The rem_node
    argument is the address of a character-string descriptor pointing
    to the remote node name string.

    A remote node name consists of 1 to 1024 characters. No specific
    characters, format, or case are required for a remote node name
    string. All node names are converted to their DECnet for OpenVMS
    full name unless the PRX$M_BYPASS_EXPAND flag is set with the
    flags argument.

    Wildcards are not recognized. If you specify a wildcard character
    in the rem_node argument, it is ignored and assumed to be part of
    the requested node name.

 rem_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Remote user name of the proxy to be verified. The rem_user
    argument is the address of a character-string descriptor pointing
    to the user name string.

    A remote user name consists of 1 to 32 alphanumeric characters,
    including dollar signs ($),  underscores (_), and brackets
    ([ ]).  Any lowercase characters specified are automatically
    converted to uppercase.

    The rem_user argument can be specified in user identification
    code (UIC) format ([group, member]).  Brackets are allowed only
    if the remote user name string specifies a UIC. Group and member
    are character-string representations of octal numbers with no
    leading zeros.

    Wildcards are not allowed for the remote user specification. If
    wildcard characters are present in the string specified by the
    rem_user argument, the service returns SS$_BADPARAM.

 proposed_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       read only
    mechanism:    by descriptor-fixed-length string descriptor
    Local user the caller suggests be used for the proxy login.
    The proposed_user argument is the address of a character-string
    descriptor pointing to the proposed local user name.

    The proposed local user consists of 1 to 32 alphanumeric
    characters, including dollar signs ($)  and underscores (_).
    Any lowercase characters specified are automatically converted to
    uppercase.

    See the $VERIFY_PROXY Description section in the VSI OpenVMS
    System Services Reference Manual for information about the
    interaction of this argument with the return value of the local_
    user argument.

 local_user

    OpenVMS usage:char_string
    type:         character-coded text string
    access:       write only
    mechanism:    by descriptor-fixed-length string descriptor
    Local user the caller must use for a proxy login. The local_user
    argument is the address of a 32-byte character-string descriptor
    pointer to receive the local user name the caller must use for a
    proxy login for the proxy with the remote node name specified by
    the rem_node argument and the remote user name specified by the
    rem_user argument.

    A local user name is a 32-character blank padded string of
    alphanumeric characters, including dollar signs ($)  and
    underscores (_).

 local_user_length

    OpenVMS usage:output length
    type:         word (unsigned)
    access:       write only
    mechanism:    by reference
    Length of the returned local user name in the local_user
    argument. The local_user_length argument is the address of an
    unsigned word to receive the length, in bytes, of the character
    string returned in the local_user argument.

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Functional specification for the service and type of user the
    local_user argument represents. The flags argument is a longword
    bit mask wherein each bit corresponds to an option.

    Each flag option has a symbolic name. The $PRXDEF macro defines
    the following symbolic name:

    Symbolic Name      Description

    PRX$M_BYPASS_      The service should not convert the node name
    EXPAND             specified in the rem_node argument to its
                       corresponding DECnet for OpenVMS full name.
                       If this flag is set, it is the caller's
                       responsibility to ensure that the fully
                       expanded node name is passed into the service.

328  –  $WAIT

    The Wait service suspends image execution until an asynchronous
    record service completes. Upon completion of the service, RMS
    returns control to your program at the point following the Wait
    service call.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.

329  –  $WAITFR

    Tests a specific event flag and returns immediately if the flag
    is set; otherwise, the process is placed in a wait state until
    the event flag is set.

    Format

      SYS$WAITFR  efn

    C Prototype

      int sys$waitfr  (unsigned int efn);

329.1  –  Argument

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of the event flag for which to wait. The efn argument is a
    longword containing this number; however, $WAITFR uses only the
    low-order byte.

330  –  $WAKE

    Activates a process that has placed itself in a state of
    hibernation with the Hibernate ($HIBER) service.

    This service accepts 64-bit addresses.

    Format

      SYS$WAKE  [pidadr] ,[prcnam]

    C Prototype

      int sys$wake  (unsigned int *pidadr, void *prcnam);

330.1  –  Arguments

 pidadr

    OpenVMS usage:process_id
    type:         longword (unsigned)
    access:       modify
    mechanism:    by 32- or 64-bit reference
    Process identification (PID) of the process to be activated. The
    pidadr argument is the 32- or 64-bit address of a longword that
    contains the PID. The pidadr argument can refer to a process
    running on the local node or a process running on another node in
    the cluster.

 prcnam

    OpenVMS usage:process_name
    type:         character-coded text string
    access:       read only
    mechanism:    by 32- or 64-bit descriptor-fixed-length string
                  descriptor
    Process name of the process to be activated. The prcnam argument
    is the 32- or 64-bit address of a 32- or 64-bit 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 in 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.

    The process name is implicitly qualified by the UIC group number
    of the calling process. For this reason, you can use the prcnam
    argument only if the process to be activated is in the same UIC
    group as the calling process. To activate a process in another
    UIC group, you must specify the pidadr argument.

331  –  $WFLAND

    Allows a process to specify a set of event flags for which it
    wants to wait.

    Format

      SYS$WFLAND  efn ,mask

    C Prototype

      int sys$wfland  (unsigned int efn, unsigned int mask);

331.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of any event flag within the event flag cluster to be
    used. The efn argument is a longword containing this number;
    however, $WFLAND uses only the low-order byte. Specifying the
    number of an event flag within the cluster serves to identify the
    event flag cluster.

    There are two local event flag clusters: cluster 0 and cluster
    1. Cluster 0 contains event flag numbers 0 to 31, and cluster 1
    contains event flag numbers 32 to 63.

    There are two common event flag clusters: cluster 2 and cluster
    3. Cluster 2 contains event flag numbers 64 to 95, and cluster 3
    contains event flag numbers 96 to 127.

 mask

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Event flags for which the process is to wait. The mask argument
    is a longword bit vector wherein a bit, when set, selects the
    corresponding event flag for which to wait.

332  –  $WFLOR

    Allows a process to specify a set of event flags for which it
    wants to wait.

    Format

      SYS$WFLOR  efn ,mask

    C Prototype

      int sys$wflor  (unsigned int efn, unsigned int mask);

332.1  –  Arguments

 efn

    OpenVMS usage:ef_number
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Number of any event flag within the event flag cluster to be
    used. The efn argument is a longword containing this number;
    however, $WFLOR uses only the low-order byte. Specifying the
    number of an event flag within the cluster serves to identify the
    event flag cluster.

    There are two local event flag clusters: cluster 0 and cluster
    1. Cluster 0 contains event flag numbers 0 to 31, and cluster 1
    contains event flag numbers 32 to 63.

    There are two common event flag clusters: cluster 2 and cluster
    3. Cluster 2 contains event flag numbers 64 to 95, and cluster 3
    contains event flag numbers 96 to 127.

 mask

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    Event flags for which the process is to wait. The mask argument
    is a longword bit vector wherein a bit, when set, selects the
    corresponding event flag for which to wait.

333  –  $WRITE

    The Write service transfers a user-specified number of bytes
    (beginning on a block boundary) to an RMS file of any file
    organization.

    For additional information about this service, see the OpenVMS
    Record Management Services Reference Manual.
Close Help