Previous | Contents | Index |
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.
None
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.
$CRETVA_64, $CRMPSC_FILE_64, $CRMPSC_GFILE_64, $CRMPSC_GPFILE_64, $EXPREG_64, $MGBLSC_64
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.
Enables or disables specified privileges for the calling process.
SYS$SETPRV [enbflg] ,[prvadr] ,[prmflg] ,[prvprv]
int sys$setprv (char enbflg, struct _generic_64 *prvadr, char prmflg, struct _generic_64 *prvprv);
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.
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.
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.
None
$CANEXH, $CMKRNL, $CREPRC, $DCLEXH, $DELPRC, $EXIT, $FORCEX, $GETJPI, $GETJPIW, $HIBER, $PROCESS_SCAN, $RESUME, $SETPRI, $SETPRN, $SETRWM, $SUSPND, $WAKE
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.
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.
SYS$SETRWM [watflg]
int sys$setrwm ( char watflg);
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.
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
None
None
$CANEXH, $CREPRC, $DCLEXH, $DELPRC, $EXIT, $FORCEX, $GETJPI, $GETJPIW, $HIBER, $PROCESS_SCAN, $RESUME, $SETPRI, $SETPRN, $SETPRV, $SUSPND, $WAKE
SS$_WASCLR The service completed successfully. Resource wait mode was previously enabled. SS$_WASSET The service completed successfully. Resource wait mode was previously disabled.
1 Also, physical memory or system page table entries under rare circumstances. |
Controls whether a process automatically unshelves files.
SYS$SETSHLV [pidadr] ,[prcnam] ,[shlvflg]
int sys$setshlv (unsigned int *pidadr, void *prcnam, unsigned int shlvflg);
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.
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.
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.
None
$GETJPI
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.
Previous | Next | Contents | Index |