|
HP OpenVMS System Services Reference Manual
If the condition value SS$_ACCVIO is returned by this service, a value
cannot be returned in the memory locations pointed to by the
return_va_64, return_length_64, and
return_prot 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 cannot be returned in the memory location pointed to by
the return_length_64 argument.
Required Privileges
None
Required Quota
If a process changes the protection for any pages in a private section
from read-only to read/write, $SETPRT_64 uses the paging file
(PGFLQUOTA) quota of the process.
Related Services
$CRETVA_64, $CRMPSC_FILE_64, $CRMPSC_GFILE_64, $CRMPSC_GPFILE_64,
$EXPREG_64, $MGBLSC_64
Condition Values Returned
SS$_NORMAL
|
The service completed successfully.
|
SS$_ACCVIO
|
The
return_va_64 or the
return_length_64 argument cannot be written by the
caller.
|
SS$_EXPGFLQUOTA
|
The process exceeded its paging file quota while changing a page in a
read-only private section to a read/write page.
|
SS$_IVPROTECT
|
The specified protection code has a numeric value of 1 or is greater
than 15.
|
SS$_LENVIO
|
A page in the specified range is not in process private address space.
|
SS$_NOSUCHPAG
|
An attempt was made to change the protection on a nonexistent page.
|
SS$_PAGNOTINREG
|
A page in the specified range is not within the specified region.
|
SS$_PAGTYPVIO
|
A page in the specified range is not in process private address space.
|
SS$_PAGOWNVIO
|
The process attempted to change the protection on a page owned by a
more privileged access mode.
|
$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);
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_IMPERSONATE
|
Create detached processes under 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.
Description
The Set Privileges service enables or disables specified privileges for
the calling process.
The operating system maintains four separate privilege masks for each
process:
- AUTHPRIV---Privileges that the process is authorized to enable, as
designated by the system manager or the process creator. The AUTHPRIV
mask never changes during the life of the process.
- PROCPRIV---Privileges that are designated as permanently enabled
for the process. The PROCPRIV mask can be modified by $SETPRV.
- IMAGPRIV---Privileges with which the current image is installed.
- CURPRIV---Privileges that are currently enabled. The CURPRIV mask
can be modified by $SETPRV.
When a process is created, its AUTHPRIV, PROCPRIV, and CURPRIV masks
have the same contents. Whenever a system service (other than $SETPRV)
must check the process privileges, that service checks the CURPRIV mask.
When a process runs an installed image, the privileges with which that
image was installed are enabled in the CURPRIV mask. When the installed
image exits, the PROCPRIV mask is copied to the CURPRIV mask.
The $SETPRV service can set bits only in the CURPRIV and PROCPRIV mask,
but $SETPRV checks the AUTHPRIV mask to see whether a process can set
specified privilege bits in the CURPRIV or PROCPRIV masks.
Consequently, a process can give itself the SETPRV privilege only if
this privilege is enabled in the AUTHPRIV mask.
You can obtain each of a process's four privilege masks by calling the
$GETJPI (Get Job/Process Information) service and specifying the
desired privilege mask or masks as item codes in the
itmlst argument. You construct the item code for a
privilege mask by prefixing the name of the privilege mask with the
characters JPI$_ (for example, JPI$_CURPRIV is the item code
for the current privilege mask).
The DCL command SET PROCESS/PRIVILEGES also enables or disables
specified privileges; refer to the HP OpenVMS DCL Dictionary for details.
Required Access or Privileges
To set a privilege permanently, the calling process must be authorized
to set the specified privilege, or the process must be executing in
kernel or executive mode.
To set a privilege temporarily, one of the following three conditions
must be true:
- The calling process must be authorized to set the specified
privilege.
- The calling process must be executing in kernel or executive mode.
- The image currently executing must be one that was installed with
the specified privilege.
Required Quota
None
Related Services
$CANEXH, $CMKRNL, $CREPRC, $DCLEXH, $DELPRC, $EXIT, $FORCEX, $GETJPI,
$GETJPIW, $HIBER, $PROCESS_SCAN, $RESUME, $SETPRI, $SETPRN, $SETRWM,
$SUSPND, $WAKE
Condition Values Returned
SS$_NORMAL
|
The service completed successfully. All privileges were enabled or
disabled as specified.
|
SS$_NOTALLPRIV
|
The service completed successfully. Not all specified privileges were
enabled; see the Description section for details.
|
SS$_ACCVIO
|
The privilege mask cannot be read or the previous privilege mask cannot
be written by the caller.
|
SS$_IVSTSFLG
|
You specified a value other than 1 or 0 in either the
prmflg argument or the
enblfg argument.
|
$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);
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.
Description
The Set Resource Wait Mode service allows a process to specify what
action system services should take when system resources required for
their execution are unavailable.
When resource wait mode is enabled, system services wait for the
required system resources to become available and then continue
execution. When resource wait mode is disabled, system services return
to the caller when required system resources are unavailable. The
condition value returned by $SETRWM indicates whether resource wait
mode was previously enabled or previously disabled.
The following system resources and process quotas are affected by
resource wait mode:
- System dynamic memory: nonpaged pool, lock manager dynamic
memory1
- UNIBUS adapter map registers
- Direct I/O limit (DIOLM) quota
- Buffered I/O limit (BIOLM) quota
- Buffered I/O byte count limit (BYTLM) quota
- Timer queue quota
- Mailbox buffer quota
- Insufficient pipe quota
Caution
Due to the process-wide implications of resource waiting, disabling
resource waiting should be performed with caution.
Disabling resource wait mode can have unexpected effects on libraries
or shareable images upon which your application may be directly or
indirectly dependent. If resource waiting is disabled, these
constituent libraries or shareable images may not perform as expected.
It is possible that these constituent components are coded to assume
resource waiting is enabled; therefore, they may not be coded to
receive various quota-related errors such as SS$_EXQUOTA.
Note that you should have full control over the entire program context
down to the system calls before disabling resource wait mode.
|
Required Access or Privileges
None
Required Quota
None
Related Services
$CANEXH, $CREPRC, $DCLEXH, $DELPRC, $EXIT, $FORCEX, $GETJPI, $GETJPIW,
$HIBER, $PROCESS_SCAN, $RESUME, $SETPRI, $SETPRN, $SETPRV, $SUSPND,
$WAKE
Condition Values Returned
SS$_WASCLR
|
The service completed successfully. Resource wait mode was previously
enabled.
|
SS$_WASSET
|
The service completed successfully. Resource wait mode was previously
disabled.
|
Note
1 Also, physical memory or system page
table entries under rare circumstances.
|
$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);
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.
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 HP OpenVMS DCL Dictionary.
Required Access or Privileges
Depending on the operation, the calling process might need one of the
following privileges to use $SETSHLV:
- GROUP privilege to modify a process in the same group, unless the
target process has the same UIC as the calling process.
- WORLD privilege to modify any process in the system.
Required Quota
None
Related Services
$GETJPI
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.
|
|