HP OpenVMS System Services Reference Manual


Previous Contents Index

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. The offsets, their symbolic names, and the contents of each field are shown in the following table. Unless stated otherwise, the length of the field is 4 bytes.
Offset Symbolic Name Contents
0 ACC$W_MSGTYP MSG$_DELPROC (2 bytes)
2   Not used (2 bytes)
4 ACC$L_FINALSTS Exit status code
8 ACC$L_PID External process identification
12   Not used (4 bytes)
16 ACC$Q_TERMTIME Current time in system format at process termination (8 bytes)
24 ACC$T_ACCOUNT Account name for process, blank filled (8 bytes)
32 ACC$T_USERNAME User name, blank filled (12 bytes)
44 ACC$L_CPUTIM CPU time used by the process, in 10-millisecond units
48 ACC$L_PAGEFLTS Number of page faults incurred by the process
52 ACC$L_PGFLPEAK Peak paging file usage
56 ACC$L_WSPEAK Peak working set size
60 ACC$L_BIOCNT Count of buffered I/O operations performed by the process
64 ACC$L_DIOCNT Count of direct I/O operations performed by the process
68 ACC$L_VOLUMES Count of volumes mounted by the process
72 ACC$Q_LOGIN Time, in system format, that process logged in (8 bytes)
80 ACC$L_OWNER Process identification of owner

The length of the termination message is equated to the constant ACC$K_TERMLEN.

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. The following table describes the symbolic name of each option:
Symbolic Name Description
PRC$M_BATCH Create a batch process. IMPERSONATE privilege is required.
PRC$M_IMPERSONATE Create a detached process under another UIC.
PRC$M_DISAWS Disable system-initiated working set adjustment.
PRC$M_HIBER Force process to hibernate before it executes the image.
PRC$M_HOME_RAD Assign process to specified home resource affinity domain (RAD).

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

PRC$M_IMGDMP Enable image dump facility. If an image terminates due to an unhandled condition, the image dump facility writes the contents of the address space to a file in your current default directory. The file name is the same as the name of the terminated image. The file type is .DMP.
PRC$M_INTER Create an interactive process. This option is meaningful only if the image argument specifies SYS$SYSTEM:LOGINOUT.EXE. The purpose of this option is to provide you with information about the process. When you specify this option, it identifies the process as one that is in communication with another user (an interactive process). For example, if you use the DCL lexical function F$MODE to make an inquiry about a process that has specified the PRC$M_INTER option, F$MODE returns the value INTERACTIVE.
PRC$M_KT_LIMIT Assign the specified kernel thread limit to the created process.
PRC$M_NETWRK Create a process that is a network connect object. IMPERSONATE privilege required.
PRC$M_NOACNT Do not perform accounting. ACNT privilege is required.
PRC$M_NOPASSWORD Do not display the Username: and Password: prompts if the process is interactive and detached and the image is SYS$SYSTEM:LOGINOUT.EXE. If you specify this option in your call to $CREPRC, the process created by the call is logged in under the user name associated with the creating process. If you do not specify this option for an interactive process, SYS$SYSTEM:LOGINOUT.EXE prompts you for the user name and password to be associated with the process. The prompts are displayed at the SYS$INPUT device.
PRC$M_NOUAF Do not check authorization file if the process is detached and the image is SYS$SYSTEM:LOGINOUT.EXE. You should not specify this option if a subprocess is being created.

In previous versions of the operating system, the symbolic name of this option was PRC$M_LOGIN. The symbolic name has been changed to more accurately denote the effect of setting this bit. For compatibility with existing user programs, you can still specify this bit as PRC$M_LOGIN.

This flag prevents the loading of the new process's security profile from the contents of the UAF record associated with the specified user name. Restrictions are still enforced on the UAF record, if it exists, for account disuser, account expiration, and primary/secondary days/hours.

PRC$M_PARSE_EXTENDED Sets the PARSE_STYLE_PERM and the PARSE_STYLE_IMAGE properties for the new process to EXTENDED.
PRC$M_PSWAPM Inhibit process swapping. PSWAPM privilege is required.
PRC$M_SSFEXCU Enable system service failure exception mode.
PRC$M_SSRWAIT Disable resource wait mode.
PRC$M_SUBSYSTEM Inherit any protected subsystem identifiers. The default is that the new process does not inherit subsystem identifiers.
PRC$M_TCB Mark a process as part of the trusted computing base (TCB). As such, it is expected to perform its own auditing. IMPERSONATE privilege is required.

Note that options PRC$M_BATCH, PRC$M_INTER, PRC$M_NOUAF, PRC$M_NETWRK, and PRC$M_NOPASSWORD are intended for use by HP software.

itmlst


OpenVMS usage: reserved
type: longword (unsigned)
access:

The itmlst argument is reserved by HP.

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 HP 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.


Description

The Create Process service creates a subprocess or detached process on behalf of the calling process. A subprocess can be created only on the current OpenVMS Cluster node. A detached process can be created on the current OpenVMS Cluster node or on the node specified with the node argument.

A detached process is a fully independent process. For example, the process that the system creates when you log in is a detached process. A subprocess, on the other hand, is related to its creating process in a treelike structure; it receives a portion of the creating process's resource quotas and must terminate before the creating process. Any subprocesses that still exist when their creator is being deleted are automatically deleted.

The presence of the uic argument, node argument, or the PRC$M_IMPERSONATE flag specifies that the created process is detached.

Creating a process is synchronous in that the process has actually been created and its PID determined before control returns to the program that requested the system service. Note, however, that the new process has not necessarily begun to execute at that point. Some error conditions are not detected until the created process executes. These conditions include an invalid or nonexistent image; invalid SYS$INPUT, SYS$OUTPUT, or SYS$ERROR logical name equivalence; inadequate quotas; or insufficient privilege to execute the requested image.

In creating a detached or subprocess, you can specify that the process run the image SYS$SYSTEM:LOGINOUT.EXE. During interactive logins, LOGINOUT performs the following functions:

  1. It validates user name and password.
  2. It reads the system authorization file record associated with that user and redefines the process environment based on information from the record.
  3. It maps a command language interpreter (CLI) into the process and passes control to it.

The CLI reads a command from SYS$INPUT, processes it, and reads another command. The presence of the CLI enables the process to execute multiple images. It also enables an image running in the process to use Run-Time Library procedures, such as LIB$SPAWN, LIB$DO_COMMAND, and LIB$SET_LOGICAL, that require a CLI.

Running in the context of a process you create through $CREPRC, LOGINOUT can perform some or all of the preceding steps, depending on whether the process is a subprocess or a detached process and on the values of PRC$M_NOPASSWORD and PRC$M_NOUAF in the stsflg argument.

Certain characteristics of a created process can be specified explicitly through $CREPRC system service arguments, while other characteristics are propagated implicitly from the $CREPRC caller. Implicit characteristics include the following:

Note, however, that after the process has been created, if it runs LOGINOUT and LOGINOUT redefines the process environment, those characteristics will be overridden by information from the system authorization file.

Several process characteristics are relevant to the creation of a process on another OpenVMS Cluster node, in particular, process quotas, default directory, SYS$DISK equivalence name, CLI name, and CLI command table name.

Quotas for a process created on another OpenVMS Cluster node are calculated as previously described in the section on the use of the quota list; namely, they are based on explicit values passed by the creator and system parameters on the other OpenVMS Cluster node. If the other node has its own authorization file with node-specific quotas, you might want to specify in the $CREPRC request that the process run LOGINOUT so it can redefine the process environment based on that node's quotas for the user.

Unless overridden by LOGINOUT, the new process will use its creator's default disk and directory. If the disk is not mounted clusterwide, the created process might need to redefine SYS$DISK with an equivalence name that specifies a disk accessible from that node.

When you set the PRC$M_NOUAF flag in the stsflg argument and create a process running LOGINOUT, LOGINOUT will attempt to map a CLI and command table with the same file names as those running in your process. The CLI and command table images must therefore have already been installed by the system manager on the other node. Problems can arise when you are using something other than the DCL CLI and its standard command tables. For example, if you are running on a VAX node with MCR as your current CLI, LOGINOUT will be unable to map that CLI on an Alpha or Integrity servers node. The new process will be created but then aborted by LOGINOUT.

A detached process is considered an interactive process only if (1) the process is created with the PRC$M_INTER option specified and (2) SYS$INPUT is not defined as a file-oriented device.

The $CREPRC service requires system dynamic memory.

Required Access or Privileges

The calling process must have the following:

Required Quota

The number of subprocesses that a process can create is controlled by the subprocess (PRCLM) quota; this quota is returned when a subprocess is deleted.

The number of detached processes on any one OpenVMS Cluster node that a process can create with the same user name is controlled by the MAXDETACH entry in the user authorization file (UAF).

When a subprocess is created, the value of any deductible quota is subtracted from the total value the creating process has available, and when the subprocess is deleted, the unused portion of any deductible quota is added back to the total available to the creating process. Any pooled quota value is shared by the creating process and all its subprocesses.

Related Services

$CANEXH, $DCLEXH, $DELPRC, $EXIT, $FORCEX, $GETJPI, $GETJPIW, $HIBER, $PROCESS_SCAN, $RESUME, $SETPRI, $SETPRN, $SETPRV, $SETRWM, $SUSPND, $WAKE


Condition Values Returned

SS$_ACCVIO The caller cannot read a specified input string or string descriptor, the privilege list, or the quota list; or the caller cannot write the process identification.
SS$_BADRAD The specified RAD contains no memory or contains no active CPUs, or the specified RAD is greater than or equal to the maximum number of RADs on the system. Use the $GETSYI item code RAD_MAX_RADS to determine the maximum number of RADs on the system.
SS$_DUPLNAM The specified process name duplicates one already specified within that group.
SS$_EXPRCLM The creation of a detached process failed because the creating process already reached its limit for the creation of detached processes. This limit is established by the MAXDETACH quota in the user authorization file (UAF) of the creating process.
SS$_EXQUOTA At least one of the following conditions is true:
  • The process has exceeded its quota for the creation of subprocesses.
  • A quota value specified for the creation of a subprocess exceeds the creating process's corresponding quota.
  • The quota is deductible and the remaining quota for the creating process would be less than the minimum.
SS$_INCOMPAT The remote node is running an incompatible version of the operating system, namely, one that does not support remote process creation.
SS$_INSFMEM The system dynamic memory is insufficient for the requested operation.
SS$_INVARG An invalid argument is specified.
SS$_INVKTLIM A value lower than 0, or a value higher than the SYSGEN parameter MULTITHREAD is specified.
SS$_IVLOGNAM At least one of the following two conditions is true:
  • The specified process name has a length of 0 or has more than 15 characters.
  • The specified image name, input name, output name, or error name has more than 255 characters.
SS$_IVQUOTAL The quota list is not in the proper format.
SS$_IVSTSFLG A reserved status flag was specified.
SS$_NODELEAVE The specified node was removed from the OpenVMS Cluster during the $CREPRC service's execution.
SS$_NOPRIV The caller violated one of the privilege restrictions.
SS$_NORMAL The service completed successfully.
SS$_NOSLOT No process control block is available; in other words, the maximum number of processes that can exist concurrently in the system has been reached.
SS$_NOSUCHNODE The specified node is not currently a member of the cluster.
SS$_REMRSRC The remote node has insufficient resources to respond to the request. (Bring this error to the attention of your system manager.)
SS$_UNREACHABLE The remote node is a member of the cluster but is not accepting requests. This is normal for a brief period early in the system boot process.

$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);


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.


Description

The Create Virtual Address Space service adds a range of demand-zero allocation pages to a process's virtual address space for the execution of the current image.

Pages are created starting at the address contained in the first longword of the location addressed by the inadr argument and ending with the second longword. The ending address can be lower than the starting address. The retadr argument indicates the byte addresses of the pages created.

If an error occurs while pages are being created, the retadr argument, if specified, indicates the pages that were successfully created before the error occurred. If no pages were created, both longwords of the retadr argument contain the value --1.

If $CRETVA creates pages that already exist, the service deletes those pages if they are not owned by a more privileged access mode than that of the caller. Any such deleted pages are reinitialized as demand-zero pages. For this reason, it is important to use the retadr argument to capture the address range actually created. Because the Alpha and Integrity servers architectures have a larger page size than the VAX architecture, more space is potentially affected on Alpha and Integrity server systems.

Required Access or Privileges

None

Required Quota

The paging file quota (PGFLQUOTA) of the process must be sufficient to accommodate the increased size of the virtual address space.

Related Services

$ADJSTK, $ADJWSL, $CRMPSC, $DELTVA, $DGBLSC, $EXPREG, $LCKPAG, $LKWSET, $MGBLSC, $PURGWS, $SETPRT, $SETSTK, $SETSWM, $ULKPAG, $ULWSET, $UPDSEC, $UPDSECW

The Expand Program/Control Region ($EXPREG) service also adds pages to a process's virtual address space.


Previous Next Contents Index