The Create Shared Memory routine creates (if necessary) and maps a section of memory that can be shared by multiple processes. Format PPL$CREATE_SHARED_MEMORY section-name ,memory-area [,flags] [,file-name] [,protection]
1 – Arguments
section-name OpenVMS usage char_string type character string access read only mechanism by descriptor Name of the shared memory section you want to create. The section-name argument is the address of a descriptor pointing to the shared memory section name. memory-area OpenVMS usage vector_longword_unsigned type longword (unsigned) access modify mechanism by reference, array reference The area of memory into which the shared memory is mapped. The memory-area argument is the address of a two-longword array containing, in order, the length (in bytes) and the starting virtual address for the area of memory. If you specify the starting address as zero, the PPL$ facility selects the virtual address space so that each current process in the application can map the section to the same set of virtual addresses. PPL$CREATE_SHARED_MEMORY returns to this argument the actual length and starting virtual address of the shared memory created or mapped. flags OpenVMS usage mask_longword type longword (unsigned) access read only mechanism by reference Specifies options for creating and mapping shared memory. The flags argument is the address of a longword bit mask containing the flag. Valid values are as follows: PPL$M_NOZERO Does not initialize the shared memory to zero. By default, PPL$CREATE_SHARED_MEMORY initializes the shared memory to zero. PPL$M_NOWRT Maps the shared memory with no write access (in other words, read only). By default, the shared memory is available with read/write access. PPL$M_NOUNI Names the shared memory a nonunique name. By default, PPL$CREATE_SHARED_MEMORY gives the specified shared memory a name unique to the application by using PPL$UNIQUE_NAME. PPL$M_PERM Creates permanent shared memory in which data is maintained even though there are no active processes. The default is determined by your call to PPL$CREATE_APPLICATION: if you specify the PPL$M_PERM flag in your call to PPL$CREATE_ APPLICATION, this behavior is the default and you do not need to specify PPL$M_PERM in your call to PPL$CREATE_SHARED_MEMORY. If you do not specify the PPL$M_PERM flag in your calls to PPL$CREATE_APPLICATION and PPL$CREATE_SHARED_ MEMORY, application data is lost when the last process in the application exits. Use of this flag requires PRMGBL privilege. PPL$M_SYSTEM Creates systemwide shared memory. The default is determined by your call to PPL$CREATE_APPLICATION: if you specify the PPL$M_SYSTEM flag in your call to PPL$CREATE_APPLICATION, this behavior is the default and you do not need to specify PPL$M_ SYSTEM in your call to PPL$CREATE_SHARED_MEMORY. If you do not specify the PPL$M_SYSTEM flag in your calls to PPL$CREATE_APPLICATION and PPL$CREATE_ SHARED_MEMORY, the application is available only to processes running under the same group UIC. Use of this flag requires the SYSGBL privilege. file-name OpenVMS usage char_string type character string access read only mechanism by descriptor Name of the file used for backup storage of the shared memory. The file-name argument is the address of a descriptor pointing to the file name. The size of the resulting address space is the smaller of the following: o The specified section size o The size of the file being mapped If you do not specify a file name, PPL$CREATE_SHARED_MEMORY creates for backup storage a page file section instead of a disk file section. If you specify a file that does not exist, PPL$CREATE_SHARED_ MEMORY creates it. protection OpenVMS usage file_protection type longword (unsigned) access read only mechanism by reference Numeric value representing the protection mask to be applied to the shared memory. The optional protection argument is the address of an unsigned longword containing this numeric value. If you do not specify a value, the default is the value for protection specified in the call to PPL$CREATE_APPLICATION. For more information, see the description of the $CRMPSC system service in the OpenVMS System Services Reference Manual.