Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
hwlocality_shmem(3)	    Library Functions Manual	     hwlocality_shmem(3)

NAME
     hwlocality_shmem - Sharing topologies between processes

SYNOPSIS
   Functions
     int   hwloc_shmem_topology_get_length  (hwloc_topology_t  topology,  size_t
	 *lengthp, unsigned long flags)
     int  hwloc_shmem_topology_write   (hwloc_topology_t   topology,   int   fd,
	 hwloc_uint64_t  fileoffset, void *mmap_address, size_t length, unsigned
	 long flags)
     int  hwloc_shmem_topology_adopt  (hwloc_topology_t  *topologyp,   int   fd,
	 hwloc_uint64_t  fileoffset, void *mmap_address, size_t length, unsigned
	 long flags)

Detailed Description
     These functions are used to share a topology between processes by duplicat-
     ing it into a file-backed shared-memory buffer.

     The master process must first get the required shared-memory size for stor-
     ing this topology with hwloc_shmem_topology_get_length().

     Then it must find a virtual memory area of that size that is  available  in
     all  processes  (identical  virtual  addresses in all processes). On Linux,
     this can be done by comparing holes  found  in  /proc/<pid>/maps  for  each
     process.

     Once  found,  it  must  open a destination file for storing the buffer, and
     pass it to hwloc_shmem_topology_write() together with  virtual  memory  ad-
     dress and length obtained above.

     Other  processes  may  then  adopt this shared topology by opening the same
     file and passing it to hwloc_shmem_topology_adopt()  with	the  exact  same
     virtual memory address and length.

Function Documentation
   int	 hwloc_shmem_topology_adopt   (hwloc_topology_t  *  topologyp,	int  fd,
     hwloc_uint64_t fileoffset, void *	mmap_address,  size_t  length,	unsigned
     long flags)
     Adopt a shared memory topology stored in a file. Map a file in virtual mem-
     ory   and	adopt  the  topology  that  was  previously  stored  there  with
     hwloc_shmem_topology_write().

     The returned adopted topology in topologyp can be used just like any topol-
     ogy. And it must be destroyed with hwloc_topology_destroy() as usual.

     However the topology is read-only. For instance, it cannot be modified with
     hwloc_topology_restrict() and object userdata pointers cannot be changed.

     The segment of the file pointed by descriptor fd, starting at offset  file-
     offset,  and of length length (in bytes), will be mapped at virtual address
     mmap_address.

     The file pointed by descriptor fd, the  offset  fileoffset,  the  requested
     mapping  virtual address mmap_address and the length length must be identi-
     cal to what was given to hwloc_shmem_topology_write() earlier.

     Note
	 Flags flags are currently unused, must be 0.

	 The object userdata pointer should not be used unless the process  that
	 created  the  shared  topology  also placed userdata-pointed buffers in
	 shared memory.

	 This function takes care of calling hwloc_topology_abi_check().

     Returns
	 0 on success.

	 -1 with errno set to EBUSY if the virtual  memory  mapping  defined  by
	 mmap_address and length isn't available in the process.

	 -1  with  errno  set  to  EINVAL  if fileoffset, mmap_address or length
	 aren't  page-aligned,	 or   do   not	 match	 what	was   given   to
	 hwloc_shmem_topology_write() earlier.

	 -1  with errno set to EINVAL if the layout of the topology structure is
	 different between the writer process and the adopter process.

   int	hwloc_shmem_topology_get_length  (hwloc_topology_t  topology,  size_t  *
     lengthp, unsigned long flags)
     Get  the  required shared memory length for storing a topology. This length
     (in   bytes)   must   be	used   in    hwloc_shmem_topology_write()    and
     hwloc_shmem_topology_adopt() later.

     Returns
	 the length, or -1 on error, for instance if flags are invalid.

     Note
	 Flags flags are currently unused, must be 0.

   int	  hwloc_shmem_topology_write   (hwloc_topology_t   topology,   int   fd,
     hwloc_uint64_t fileoffset, void *	mmap_address,  size_t  length,	unsigned
     long flags)
     Duplicate	a  topology  to  a shared memory file. Temporarily map a file in
     virtual memory and duplicate the topology topology by allocating duplicates
     in there.

     The segment of the file pointed by descriptor fd, starting at offset  file-
     offset, and of length length (in bytes), will be temporarily mapped at vir-
     tual address mmap_address during the duplication.

     The   mapping  length  length  must  have	been  previously  obtained  with
     hwloc_shmem_topology_get_length() and the topology must not have been modi-
     fied in the meantime.

     Note
	 Flags flags are currently unused, must be 0.

	 The object userdata pointer is duplicated but	the  pointed  buffer  is
	 not.  However the caller may also allocate it manually in shared memory
	 to share it as well.

     Returns
	 0 on success.

	 -1 with errno set to EBUSY if the virtual  memory  mapping  defined  by
	 mmap_address and length isn't available in the process.

	 -1  with  errno  set  to  EINVAL  if fileoffset, mmap_address or length
	 aren't page-aligned.

Author
     Generated automatically by Doxygen for Hardware Locality (hwloc)  from  the
     source code.

Hardware Locality (hwloc)	 Version 2.12.1 	     hwlocality_shmem(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=hwloc_shmem_topology_get_length&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help