From 5ba730e1fd4be39d38e1a865407f7673af0bb81d Mon Sep 17 00:00:00 2001
From: blazej-smorawski <blazej.smorawski@gmail.com>
Date: Thu, 14 Apr 2022 19:19:30 +0200
Subject: [PATCH] pmem2: add pmem2_async documentation

---
 doc/Makefile                                  |  2 +-
 ...em2_memcpy_async.3.md => pmem2_async.3.md} | 35 ++++++++++++++-----
 doc/libpmem2/pmem2_config_set_vdm.3           |  2 +-
 doc/libpmem2/pmem2_memcpy_async.3             |  1 +
 doc/libpmem2/pmem2_memmove_async.3            |  1 +
 doc/libpmem2/pmem2_memset_async.3             |  1 +
 6 files changed, 31 insertions(+), 11 deletions(-)
 rename doc/libpmem2/{pmem2_memcpy_async.3.md => pmem2_async.3.md} (50%)
 create mode 100644 doc/libpmem2/pmem2_memcpy_async.3
 create mode 100644 doc/libpmem2/pmem2_memmove_async.3
 create mode 100644 doc/libpmem2/pmem2_memset_async.3

diff --git a/doc/Makefile b/doc/Makefile
index c89adc792..051b84057 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -101,7 +101,7 @@ MANPAGES_3_MD_PMEM2 = libpmem2/pmem2_errormsg.3.md libpmem2/pmem2_config_new.3.m
 		libpmem2/pmem2_config_set_length.3.md libpmem2/pmem2_config_set_offset.3.md \
 		libpmem2/pmem2_map_get_store_granularity.3.md libpmem2/pmem2_get_flush_fn.3.md \
 		libpmem2/pmem2_get_drain_fn.3.md libpmem2/pmem2_get_persist_fn.3.md \
-		libpmem2/pmem2_perror.3.md libpmem2/pmem2_get_memmove_fn.3.md libpmem2/pmem2_async.3.md \
+		libpmem2/pmem2_perror.3.md libpmem2/pmem2_get_memmove_fn.3.md libpmem2/pmem2_async.3.md\
 		libpmem2/pmem2_config_set_sharing.3.md libpmem2/pmem2_config_set_vm_reservation.3.md libpmem2/pmem2_vm_reservation_new.3.md \
 		libpmem2/pmem2_vm_reservation_get_address.3.md libpmem2/pmem2_vm_reservation_get_size.3.md \
 		libpmem2/pmem2_badblock_context_new.3.md libpmem2/pmem2_badblock_next.3.md \
diff --git a/doc/libpmem2/pmem2_memcpy_async.3.md b/doc/libpmem2/pmem2_async.3.md
similarity index 50%
rename from doc/libpmem2/pmem2_memcpy_async.3.md
rename to doc/libpmem2/pmem2_async.3.md
index 050813bca..d7f1e654f 100644
--- a/doc/libpmem2/pmem2_memcpy_async.3.md
+++ b/doc/libpmem2/pmem2_async.3.md
@@ -1,7 +1,7 @@
 ---
 layout: manual
 Content-Style: 'text/css'
-title: _MP(PMEM2_MEMCPY_ASYNC, 3)
+title: _MP(PMEM2_ASYNC, 3)
 collection: libpmem2
 header: PMDK
 date: pmem2 API version 1.0
@@ -10,7 +10,7 @@ date: pmem2 API version 1.0
 [comment]: <> (SPDX-License-Identifier: BSD-3-Clause
 [comment]: <> (Copyright 2022, Intel Corporation)
 
-[comment]: <> (pmem2_memcpy_async.3 -- man page for pmem2_memcpy_async)
+[comment]: <> (pmem2_async.3 -- man page for pmem2_async operations)
 
 [NAME](#name)<br />
 [SYNOPSIS](#synopsis)<br />
@@ -19,7 +19,7 @@ date: pmem2 API version 1.0
 [SEE ALSO](#see-also)<br />
 
 # NAME #
-**pmem2_config_set_vdm**(), **pmem2_memcpy_async**() - asynchronous data movement operations
+**pmem2_config_set_vdm**(), **pmem2_memcpy_async**(), **pmem2_memmove_async**(), **pmem2_memset_async**() - asynchronous data movement operations
 
 # SYNOPSIS #
 
@@ -30,6 +30,13 @@ int pmem2_config_set_vdm(struct pmem2_config *cfg, struct vdm *vdm);
 
 struct vdm_operation_future pmem2_memcpy_async(struct pmem2_map *map,
 	void *pmemdest, const void *src, size_t len, unsigned flags);
+
+pmem2_memmove_async(struct pmem2_map *map, void *pmemdest, const void *src,
+	size_t len, unsigned flags)
+
+struct vdm_operation_future pmem2_memset_async(struct pmem2_map *map,
+	void *pmemstr,	int c, size_t n, unsigned flags)
+{
 ```
 
 # DESCRIPTION #
@@ -37,19 +44,29 @@ To use those functions, you must have *libminiasync* installed. Those functions
 and vdm (virtual data mover) concepts from this library. Please check **miniasync**(7) for more details.
 
 The **pmem2_config_set_vdm** sets a vdm structure in the *pmem2_config*.
-This structure will be used by pmem2_memcpy_async function, to create a *vdm_operation_future*.
+This structure will be used by pmem2_*_async functions, to create a *vdm_operation_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_memsety_fn**(3)).
 
-The **pmem2_memcpy_async** uses *vdm* structure held inside of the *pmem2_map* structure to initialise and return **vdm_operation_future**.
-This future will perform memcpy operation from *vdm* to copy *len* bytes from *src* to *pmemdest*. In the current implementation *flags* are ignored.
+The **pmem2_memcpy_async** uses *vdm* structure held inside the *pmem2_map* structure to initialise and returns **vdm_operation_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.
 
-# RETURN VALUE #
+The **pmem2_memmove_async** returns **vdm_operation_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_memmset_async** returns **vdm_operation_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 **vdm_operation_future** which will copy *len* bytes from *src* to *pmemdest*.
-You can execute returned structure using methods from the **libminiasync**() library.
+The **pmem2_memcpy_async** returns a new instance of **vdm_operation_future** performing memcpy operation.
+You can execute returned structure using methods from the **libminiasync**() library such as **FUTURE_BUSY_POLL**(3).
+
+The **pmem2_memmove_async** returns a new instance of **vdm_operation_future** performing memmove operation.
+
+The **pmem2_memset_async** returns a new instance of **vdm_operation_future** performing memset operation.
 
 # SEE ALSO #
 
diff --git a/doc/libpmem2/pmem2_config_set_vdm.3 b/doc/libpmem2/pmem2_config_set_vdm.3
index 8e81274f8..3fd41779c 100644
--- a/doc/libpmem2/pmem2_config_set_vdm.3
+++ b/doc/libpmem2/pmem2_config_set_vdm.3
@@ -1 +1 @@
-.so pmem2_memcpy_async.3
+.so pmem2_async.3
diff --git a/doc/libpmem2/pmem2_memcpy_async.3 b/doc/libpmem2/pmem2_memcpy_async.3
new file mode 100644
index 000000000..3fd41779c
--- /dev/null
+++ b/doc/libpmem2/pmem2_memcpy_async.3
@@ -0,0 +1 @@
+.so pmem2_async.3
diff --git a/doc/libpmem2/pmem2_memmove_async.3 b/doc/libpmem2/pmem2_memmove_async.3
new file mode 100644
index 000000000..3fd41779c
--- /dev/null
+++ b/doc/libpmem2/pmem2_memmove_async.3
@@ -0,0 +1 @@
+.so pmem2_async.3
diff --git a/doc/libpmem2/pmem2_memset_async.3 b/doc/libpmem2/pmem2_memset_async.3
new file mode 100644
index 000000000..3fd41779c
--- /dev/null
+++ b/doc/libpmem2/pmem2_memset_async.3
@@ -0,0 +1 @@
+.so pmem2_async.3
-- 
GitLab