Provided by: libpmem2-dev_1.13.1-1.1ubuntu2_amd64 bug

NAME

       pmem2_config_set_vdm()(DEPRECATED),  pmem2_memcpy_async()(DEPRECATED), pmem2_memmove_async()(DEPRECATED),
       pmem2_memset_async()(DEPRECATED) - asynchronous data movement operations

              NOTICE: Support for async functions is deprecated since PMDK 1.13.0 release and will be removed in
              the PMDK 1.14.0 release along with the miniasync dependency.

SYNOPSIS

              #define PMEM2_USE_MINIASYNC 1
              #include <libpmem2.h>
              struct pmem2_future;

              int pmem2_config_set_vdm(struct pmem2_config *cfg, struct vdm *vdm);

              struct pmem2_future pmem2_memcpy_async(struct pmem2_map *map,
                  void *pmemdest, const void *src, size_t len, unsigned flags);

              struct pmem2_future pmem2_memmove_async(struct pmem2_map *map, void *pmemdest, const void *src,
                  size_t len, unsigned flags)

              struct pmem2_future pmem2_memset_async(struct pmem2_map *map,
                  void *pmemstr,  int c, size_t n, unsigned flags)
              {

DESCRIPTION

       To use those functions, you must have libminiasync installed.  Those functions use futures and vdm  (vir‐
       tual data mover) concepts from this library.  Please check miniasync(7) for more details.

       The  struct  pmem2_future  is a structure describing a task to be done asynchronously taking into account
       persistence of the operation.  It means that by the time the future is complete, all the data  is  safely
       written into a persistent domain.

       The  pmem2_config_set_vdm  sets  a  vdm  structure  in  the pmem2_config.  This structure will be used by
       pmem2_*_async functions, to create a pmem2_future.  If vdm is not set in the config,  pmem2_map_new  will
       use  a  default  one  which  uses  a  pmem2  memory  movement  functions  to  perform  memory operations.
       (pmem2_get_memcpy_fn(3), pmem2_get_memmove_fn(3), pmem2_get_memset_fn(3)).

       The pmem2_memcpy_async uses vdm structure held inside the pmem2_map structure to initialise  and  returns
       pmem2_future.   This  future  will  perform memcpy operation defined in vdm to copy len bytes from src to
       pmemdest.  In the current implementation flags are ignored.

       The pmem2_memmove_async returns pmem2_future which will perform memmove operation defined in vdm to  copy
       len bytes from src to pmemdest.  In the current implementation flags are ignored.

       The  pmem2_memset_async returns pmem2_future which will perform memset operation defined in vdm to fill n
       bytes from pmemstr with value of int c interpreted as unsigned char.  In the current implementation flags
       are ignored.

RETURN VALUE

       The pmem2_config_set_vdm always return 0.

       The pmem2_memcpy_async returns a new instance of pmem2_future performing memcpy operation.  You can  exe‐
       cute returned structure using methods from the libminiasync() library such as FUTURE_BUSY_POLL(3).

       The pmem2_memmove_async returns a new instance of pmem2_future performing memmove operation.

       The pmem2_memset_async returns a new instance of pmem2_future performing memset operation.

SEE ALSO

       memcpy(3),  memmove(3), memset(3), pmem2_get_drain_fn(3), pmem2_get_memcpy_fn(3), pmem2_get_memset_fn(3),
       pmem2_map_new(3), pmem2_get_persist_fn(3), vdm_memcpy(3), miniasync(7), miniasync_future(7),  libpmem2(7)
       and <https://pmem.io>