Provided by: manpages-posix-dev_2.16-1_all bug

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 is 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 shall conform to the construction rules for a pathname. 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. The interpretation of slash characters other  than  the  leading  slash
       character in name 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 IEEE Std 1003.1-2001 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.  The  appropriate  privilege  to  specify  the  POSIX_TYPED_MEM_MAP_ALLOCATABLE flag is
       implementation-defined.

       If successful, posix_typed_mem_open() shall return a file descriptor for the typed memory object that  is
       the  lowest  numbered  file  descriptor not currently open for that process. 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 lowest numbered unused 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 Too many file descriptors are currently in use by this process.

       ENAMETOOLONG
              The length of the name argument  exceeds  {PATH_MAX}  or  a  pathname  component  is  longer  than
              {NAME_MAX}.

       ENFILE Too many file descriptors are currently open in the system.

       ENOENT The named typed memory object does not exist.

       EPERM  The  caller lacks the appropriate privilege to specify the flag POSIX_TYPED_MEM_MAP_ALLOCATABLE in
              argument tflag.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       close() , dup() , exec() , fcntl() , fstat() , ftruncate() , mmap()  ,  msync()  ,  posix_mem_offset()  ,
       posix_typed_mem_get_info()  ,  umask()  , the Base Definitions volume of IEEE Std 1003.1-2001, <fcntl.h>,
       <sys/mman.h>

COPYRIGHT

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition,
       Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open  Group  Base
       Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers,
       Inc  and  The  Open Group. In the event of any discrepancy between this version and the original IEEE and
       The Open Group Standard, the original IEEE and The Open Group  Standard  is  the  referee  document.  The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group                                   2003                               POSIX_TYPED_MEM_OPEN(P)