|
HP OpenVMS System Services Reference Manual
Required Access or Privileges
$DELETE_PROXY requires access to the proxy database. To achieve access,
the caller must have either SYSPRV privilege or a UIC group less than
or equal to the MAXSYSGRP system parameter.
Required Quota
None
Related Services
$ADD_PROXY, $DISPLAY_PROXY, $VERIFY_PROXY
Condition Values Returned
SS$_NORMAL
|
The service completed successfully.
|
SS$_ACCVIO
|
The
rem_node,
rem_user,
local_user, or
flags argument cannot be read by the service.
|
SS$_BADBUFLEN
|
The length of the
rem_node,
rem_user, or
local_user argument was out of range.
|
SS$_BADPARAM
|
An invalid flag was specified in the
flags argument.
|
SS$_NOSYSPRV
|
The caller does not have access to the proxy database.
|
|
|
This service can also return any of the following messages passed from
the security server:
|
|
|
SECSRV$_BADNODENAMELEN
|
The node name length is out of range.
|
SECSRV$_BADREMUSERLEN
|
The remote user name length is out of range.
|
SECSRV$_INVALIDDELETE
|
You attempted to remove the last local user with no default user
remaining, or you tried to remove the last default user with no local
user remaining. You must have at least one local user or one default
user.
|
SECSRV$_NOSUCHPROXY
|
The proxy specified by the
rem_node and
rem_user arguments does not exist in the proxy
database.
|
SECSRV$_NOSUCHUSER
|
The specified local user does not exist in the proxy's local user list,
or is not the proxy's default user.
|
SECSRV$_PROXYNOTACTIVE
|
Proxy processing is currently stopped. Try the request again later.
|
SECSRV$_SERVERNOTACTIVE
|
The security server is not currently active. Try the request again
later.
|
$DELETE_REGION_64 (Alpha and I64)
On Alpha and I64 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);
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.
Description
The Delete a Virtual Region service is a kernel mode service that can
be called from any mode. This service deletes the user-defined region
specified by the region_id_64 argument. You cannot
delete the program (P0), control (P1), or 64-bit program (P2) regions.
The Delete a Virtual Region service also deletes all created virtual
addresses within the specified region before deleting the region itself.
If a page within the region is owned by an access mode more privileged
than the access mode of the caller, the condition value SS$_PAGOWNVIO
is returned. The return_va_64 and
return_length_64 arguments contain the virtual address
range that was actually deleted by $DELETE_REGION_64. In this case, the
region is not deleted because there are still some pages mapped within
the region.
To delete a virtual region, the caller's access mode must be at least
as privileged as the access mode associated with the region. If the
caller is not privileged enough to delete the region, the condition
value SS$_REGOWNVIO is returned only if all pages were successfully
deleted from within the region.
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 and return_length_64
arguments. If the condition value SS$_ACCVIO is returned, no pages have
been deleted, and the region has not been deleted.
If an error other than SS$_ACCVIO occurs, the returned address and
returned length indicate the pages that were successfully deleted
before the error occurred. If no pages were deleted, the
return_va_64 argument contains 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
None
Related Services
$CREATE_REGION_64, $CRETVA_64, $CRMPSC_FILE_64, $CRMPSC_GFILE_64,
$CRMPSC_GPFILE_64, $CRMPSC_GPFN_64, $CRMPSC_PFN_64, $DELTVA_64,
$EXPREG_64, $GET_REGION_INFO, $MGBLSC_64, $MGBLSC_GPFN_64
Condition Values Returned
SS$_NORMAL
|
Successful completion. All pages within the region have been deleted as
well as the region itself.
|
SS$_ACCVIO
|
The
return_va_64 argument or the
return_length_64 argument cannot be written by the
caller.
|
SS$_IVREGID
|
Invalid region ID specified. This condition value is returned if P0,
P1, or P2 space is specified because these regions cannot be deleted,
or if no region exists for the specified ID.
|
SS$_REGOWNVIO
|
The region is owned by a more privileged access mode than the access
mode of the caller. All pages within the region have been deleted;
however, the region has not been deleted.
|
SS$_PAGOWNVIO
|
A page within the specified region is owned by a more privileged access
mode than the access mode of the caller.
|
SS$_VA_IN_USE
|
The existing underlying page cannot be deleted because it is associated
with a buffer object.
|
$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 I64 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);
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
(Alpha and I64) |
mechanism: |
by 32-bit descriptor--fixed-length string descriptor
(VAX) |
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-bit address (on VAX systems) or the 32- or 64-bit address (on Alpha
and I64 systems) 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:
- 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.
- 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
(Alpha and I64) |
mechanism: |
by 32-bit descriptor--fixed-length string descriptor
(VAX) |
Logical name to be deleted. The lognam argument is the
32-bit address (on VAX systems) or the 32- or 64-bit address (on Alpha
and I64 systems) 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 (Alpha and I64) |
mechanism: |
by 32-bit reference (VAX) |
Access mode to be used in the delete operation. The
acmode argument is the 32-bit address (on VAX systems)
or the 32- or 64-bit address (on Alpha and I64 systems) 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.
Description
The Delete Logical Name service 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. If any logical names being deleted
are also the names of logical name tables, then all of the logical
names contained within those tables and all of their subtables are also
deleted.
Required Access or Privileges
Depending on the operation, the calling process might need one of the
following access or rights privileges to use $DELLNM:
- Write and delete access to the logical name table to delete a
logical name
- Write access to the directory table that contains the table name,
or SYSPRV privilege, to delete a shareable logical name table
- SYSNAM privilege to delete a logical name or table at an inner
access mode
- GRPNAM or SYSPRV privilege to delete a logical name from a group
table
- SYSNAM or SYSPRV privilege to delete a logical name from a system
table
Required Quota
None
Related Services
$CRELNM, $CRELNT, $TRNLNM
Condition Values Returned
SS$_NORMAL
|
The service completed successfully.
|
SS$_ACCVIO
|
The service cannot access the locations specified by one or more
arguments.
|
SS$_BADPARAM
|
One or more arguments have an invalid value, or a logical name table
name was not specified.
|
SS$_INSFMEM
|
There is insufficient dynamic memory to build a message describing the
deletion of a clusterwide name.
|
SS$_IVLOGNAM
|
The
lognam argument specifies a string whose length is not
in the required range of 1 through 255 characters.
|
SS$_IVLOGTAB
|
The
tabnam argument does not specify a logical name table.
|
SS$_NOLOGNAM
|
The specified logical name table does not exist, or a logical name with
an access mode equal to or less privileged than the caller's access
mode does not exist in the logical name table.
|
SS$_NOLOGTAB
|
The specified logical name table does not exist.
|
SS$_NOPRIV
|
The caller lacks the necessary privilege to delete the logical name.
|
SS$_TOOMANYLNAM
|
The logical name translation of the table name exceeded the allowable
depth (10 translations).
|
$DELMBX
Marks a permanent mailbox for deletion.
Format
SYS$DELMBX chan
C Prototype
int sys$delmbx (unsigned short int chan);
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.
Description
The Delete Mailbox service marks a permanent mailbox for deletion. The
actual deletion of the mailbox and of its associated logical name
assignment occurs when no more I/O channels are assigned to the mailbox.
You can delete a mailbox only from an access mode equal to or more
privileged than the access mode from which the mailbox channel was
assigned. Temporary mailboxes are automatically deleted when their
reference count goes to 0.
The $DELMBX service does not deassign the channel assigned by the
caller, if any. The caller must deassign the channel with the Deassign
I/O Channel ($DASSGN) service.
Required Access or Privileges
You need PRMMBX privilege to delete a permanent mailbox.
Required Quota
None
Related Services
$ALLOC, $ASSIGN, $BRKTHRU, $BRKTHRUW, $CANCEL, $CREMBX, $DALLOC,
$DASSGN, $DEVICE_SCAN, $DISMOU, $GETDVI, $GETDVIW, $GETMSG, $GETQUI,
$GETQUIW, $INIT_VOL, $MOUNT, $PUTMSG, $QIO, $QIOW, $SNDERR, $SNDJBC,
$SNDJBCW, $SNDOPR
Condition Values Returned
SS$_NORMAL
|
The service completed successfully.
|
SS$_DEVNOTMBX
|
The specified channel is not assigned to a mailbox.
|
SS$_IVCHAN
|
You specified an invalid channel number, that is, a channel number of 0
or a number larger than the number of channels available.
|
SS$_NOPRIV
|
The specified channel is not assigned to a device; the process does not
have the privilege to delete a permanent mailbox or a mailbox in memory
shared by multiple processors; or the access mode of the caller is less
privileged than the access mode from which the channel was assigned.
|
$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);
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_EXIT
|
When set, exit handlers as specified by DELPRC$M_MODE are called. This
flag is ignored for a hard suspended process.
|
DELPRC$M_MODE
|
2 bit field: values psl$c_kernel, psl$c_exec, psl$c_super, psl$c_user
(from the $PSLDEF macro)
|
DELPRC$M_NOEXIT
|
Set to disable any exit handler execution
|
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:
- $DELPRC called from user mode can call supervisor mode exit
handlers.
- $DELPRC called from exec mode can only execute kernel mode exit
handlers.
- $DELPRC called from kernel mode cannot call exit handlers.
|
Description
The Delete Process service allows a process to delete itself or another
process. If you specify neither the pidadr nor the
prcnam argument, $DELPRC deletes the calling process;
control is not returned. If the longword at address
pidadr is 0, the PID of the target process is
returned. This system service requires system dynamic memory.
When you delete a process or subprocess, a termination message is sent
to its creating process, provided the mailbox to receive the message
still exists and the creating process has access to the mailbox. The
termination message is sent before the final rundown is initiated;
thus, the creating process might receive the message before the process
deletion is complete.
Due to the complexity of the required rundown operations, a significant
time interval occurs between a delete request and the actual deletion
of the process; however, the $DELPRC service returns to the caller
immediately after initiating the rundown operation.
If you issue subsequent delete requests for a process currently being
deleted, the requests return immediately with a successful completion
status.
Process exit handlers are not invoked when a process is deleted. For
details on exit handlers, see the $DCLEXH service.
Required Access or Privileges
Depending on the operation, the calling process might need one of the
following privileges to use $DELPRC:
- GROUP privilege to delete processes in the same group that do not
have the same UIC
- WORLD privilege to delete any process in the system
Required Quota
None. Deductible resource quotas granted to subprocesses are returned
to the creating process when the subprocesses are deleted.
Related Services
$CANEXH, $CREPRC, $DCLEXH, $EXIT, $FORCEX, $GETJPI, $GETJPIW, $HIBER,
$PROCESS_SCAN, $RESUME, $SETPRI, $SETPRN, $SETPRV, $SETRWM, $SUSPND,
$WAKE
Condition Values Returned
SS$_NORMAL
|
The service completed successfully.
|
SS$_ACCVIO
|
The process name string or string descriptor cannot be read by the
caller, or the process identification cannot be written by the caller.
|
SS$_INCOMPAT
|
The remote node is running an incompatible version of the operating
system.
|
SS$_INSFMEM
|
The system dynamic memory is insufficient for completing the operation.
|
SS$_NONEXPR
|
The specified process does not exist, or an invalid process
identification was specified.
|
SS$_NOPRIV
|
The caller does not have the privilege to delete the specified process.
|
SS$_NOSUCHNODE
|
The process name refers to a node that is not currently recognized as
part 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.)
|
|