# posix_typed_mem_open

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



           posix_typed_mem_open — open a typed memory object (**ADVANCED**
           **REALTIME**)
    


## SYNOPSIS



           #include <sys/mman.h>
    
           int posix_typed_mem_open(const char *_name_ , int _oflag_ , int _tflag_);
    


## DESCRIPTION



           The _posix_typed_mem_open_() function shall establish a connection
           between the typed memory object specified by the string pointed to
           by _name_ and a file descriptor. It shall create an open file
           description that refers to the typed memory object and a file
           descriptor that refers to that open file description. The file
           descriptor shall be allocated as described in _Section 2.14_ , _File_
           _Descriptor Allocation_ and can be used by other functions to refer
           to that typed memory object. It is unspecified whether the name
           appears in the file system and is visible to other functions that
           take pathnames as arguments. The _name_ argument conforms to the
           construction rules for a pathname, except that the interpretation
           of <slash> characters other than the leading <slash> character in
           _name_ is implementation-defined, and that the length limits for the
           _name_ argument are implementation-defined and need not be the same
           as the pathname limits {PATH_MAX} and {NAME_MAX}.  If _name_ begins
           with the <slash> character, then processes calling
           _posix_typed_mem_open_() with the same value of _name_ shall refer to
           the same typed memory object. If _name_ does not begin with the
           <slash> character, the effect is implementation-defined.
    
           Each typed memory object supported in a system shall be identified
           by a name which specifies not only its associated typed memory
           pool, but also the path or port by which it is accessed. That is,
           the same typed memory pool accessed via several different ports
           shall have several different corresponding names. The binding
           between names and typed memory objects is established in an
           implementation-defined manner. Unlike shared memory objects, there
           is no way within POSIX.1‐2008 for a program to create a typed
           memory object.
    
           The value of _tflag_ shall determine how the typed memory object
           behaves when subsequently mapped by calls to _mmap_().  At most, one
           of the following flags defined in _< sys/mman.h>_ may be specified:
    
           POSIX_TYPED_MEM_ALLOCATE
                 Allocate on _mmap_().
    
           POSIX_TYPED_MEM_ALLOCATE_CONTIG
                 Allocate contiguously on _mmap_().
    
           POSIX_TYPED_MEM_MAP_ALLOCATABLE
                 Map on _mmap_(), without affecting allocatability.
    
           If _tflag_ has the flag POSIX_TYPED_MEM_ALLOCATE specified, any
           subsequent call to _mmap_() using the returned file descriptor shall
           result in allocation and mapping of typed memory from the
           specified typed memory pool. The allocated memory may be a
           contiguous previously unallocated area of the typed memory pool or
           several non-contiguous previously unallocated areas (mapped to a
           contiguous portion of the process address space). If _tflag_ has the
           flag POSIX_TYPED_MEM_ALLOCATE_CONTIG specified, any subsequent
           call to _mmap_() using the returned file descriptor shall result in
           allocation and mapping of a single contiguous previously
           unallocated area of the typed memory pool (also mapped to a
           contiguous portion of the process address space). If _tflag_ has
           none of the flags POSIX_TYPED_MEM_ALLOCATE or
           POSIX_TYPED_MEM_ALLOCATE_CONTIG specified, any subsequent call to
           _mmap_() using the returned file descriptor shall map an
           application-chosen area from the specified typed memory pool such
           that this mapped area becomes unavailable for allocation until
           unmapped by all processes. If _tflag_ has the flag
           POSIX_TYPED_MEM_MAP_ALLOCATABLE specified, any subsequent call to
           _mmap_() using the returned file descriptor shall map an
           application-chosen area from the specified typed memory pool
           without an effect on the availability of that area for allocation;
           that is, mapping such an object leaves each byte of the mapped
           area unallocated if it was unallocated prior to the mapping or
           allocated if it was allocated prior to the mapping. Appropriate
           privileges to specify the POSIX_TYPED_MEM_MAP_ALLOCATABLE flag are
           implementation-defined.
    
           If successful, _posix_typed_mem_open_() shall return a file
           descriptor for the typed memory object.  The open file description
           is new, and therefore the file descriptor shall not share it with
           any other processes. It is unspecified whether the file offset is
           set. The FD_CLOEXEC file descriptor flag associated with the new
           file descriptor shall be cleared.
    
           The behavior of _msync_(), _ftruncate_(), and all file operations
           other than _mmap_(), _posix_mem_offset_(), _posix_typed_mem_get_info_(),
           _fstat_(), _dup_(), _dup2_(), and _close_(), is unspecified when passed a
           file descriptor connected to a typed memory object by this
           function.
    
           The file status flags of the open file description shall be set
           according to the value of _oflag_.  Applications shall specify
           exactly one of the three access mode values described below and
           defined in the _< fcntl.h>_ header, as the value of _oflag_.
    
           O_RDONLY    Open for read access only.
    
           O_WRONLY    Open for write access only.
    
           O_RDWR      Open for read or write access.
    


## RETURN VALUE



           Upon successful completion, the _posix_typed_mem_open_() function
           shall return a non-negative integer representing the file
           descriptor. Otherwise, it shall return -1 and set _errno_ to
           indicate the error.
    


## ERRORS



           The _posix_typed_mem_open_() function shall fail if:
    
           **EACCES** The typed memory object exists and the permissions
                  specified by _oflag_ are denied.
    
           **EINTR** The _posix_typed_mem_open_() operation was interrupted by a
                  signal.
    
           **EINVAL** The flags specified in _tflag_ are invalid (more than one of
                  POSIX_TYPED_MEM_ALLOCATE, POSIX_TYPED_MEM_ALLOCATE_CONTIG,
                  or POSIX_TYPED_MEM_MAP_ALLOCATABLE is specified).
    
           **EMFILE** All file descriptors available to the process are currently
                  open.
    
           **ENFILE** Too many file descriptors are currently open in the system.
    
           **ENOENT** The named typed memory object does not exist.
    
           **EPERM** The caller lacks appropriate privileges to specify the
                  POSIX_TYPED_MEM_MAP_ALLOCATABLE flag in the _tflag_ argument.
    
           The _posix_typed_mem_open_() function may fail if:
    
           **ENAMETOOLONG**
                  The length of the _name_ argument exceeds {_POSIX_PATH_MAX}
                  on systems that do not support the XSI option or exceeds
                  {_XOPEN_PATH_MAX} on XSI systems, or has a pathname
                  component that is longer than {_POSIX_NAME_MAX} on systems
                  that do not support the XSI option or longer than
                  {_XOPEN_NAME_MAX} on XSI systems.
    
           _The following sections are informative._
    


## EXAMPLES



           None.
    


## APPLICATION USAGE



           None.
    


## RATIONALE



           None.
    


## FUTURE DIRECTIONS



           None.
    


* * *