VMS Help
System Services, $CRELNT
*Conan The Librarian (sorry for the slow response - running on an old VAX)
|
|
Creates a process-private or shareable logical name table.
On Alpha 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);
attr
OpenVMS usage:mask_longword
type: longword (unsigned)
access: read only
mechanism: by 32- or 64-bit reference (Alpha)
mechanism: by 32-bit reference (VAX)
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-bit address (on VAX systems) or the 32-
or 64-bit address (on Alpha systems) 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.
resnam
OpenVMS usage:logical_name
type: character-coded text string
access: write only
mechanism: by 32- or 64-bit descriptor-fixed-length string
descriptor (Alpha)
mechanism: by 32-bit descriptor-fixed-length string descriptor
(VAX)
Name of the newly created logical name table, returned by
$CRELNT. The resnam argument is the 32-bit address (on VAX
systems) or the 32- or 64-bit address (on Alpha systems) 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 (Alpha)
mechanism: by 32-bit reference (VAX)
Length in bytes of the name of the newly created logical name
table, returned by $CRELNT. The reslen argument is the 32-bit
address (on VAX systems) or the 32- or 64-bit address (on Alpha
systems) 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 (Alpha)
mechanism: by 32-bit reference (VAX)
Maximum number of bytes of memory to be allocated for logical
names contained in this logical name table. The quota argument is
the 32-bit address (on VAX systems) or the 32- or 64-bit address
(on Alpha systems) 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 (Alpha)
mechanism: by 32-bit reference (VAX)
Protection mask to be associated with the newly created shareable
logical name table. The promsk argument is the 32-bit address (on
VAX systems) or the 32- or 64-bit address (on Alpha systems) 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 (Alpha)
mechanism: by 32-bit descriptor-fixed-length string
descriptor(VAX)
The name of the new logical name table. The tabnam argument is
the 32-bit address (on VAX systems) or the 32- or 64-bit address
(on Alpha systems) 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 latters. 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 (Alpha)
mechanism: by 32-bit descriptor-fixed-length string descriptor
(VAX)
Name string for the parent table name. The partab argument is the
32-bit address (on VAX systems) or the 32- or 64-bit address (on
Alpha systems) 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)
mechanism: by 32-bit reference (VAX)
Access mode to be associated with the newly created logical
name table. The acmode argument is the 32-bit address (on VAX
systems) or the 32- or 64-bit address (on Alpha systems) 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.
[legal]
[privacy]
[GNU]
[policy]
[netiquette]
[sponsors]
[FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.