summaryrefslogtreecommitdiffstats
path: root/src/pmdk/src/libpmem2/map.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pmdk/src/libpmem2/map.h')
-rw-r--r--src/pmdk/src/libpmem2/map.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/pmdk/src/libpmem2/map.h b/src/pmdk/src/libpmem2/map.h
new file mode 100644
index 000000000..9cc172905
--- /dev/null
+++ b/src/pmdk/src/libpmem2/map.h
@@ -0,0 +1,63 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright 2019-2020, Intel Corporation */
+
+/*
+ * map.h -- internal definitions for libpmem2
+ */
+#ifndef PMEM2_MAP_H
+#define PMEM2_MAP_H
+
+#include <stddef.h>
+#include <stdbool.h>
+#include "libpmem2.h"
+#include "os.h"
+#include "source.h"
+#include "vm_reservation.h"
+
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int (*pmem2_deep_flush_fn)(struct pmem2_map *map,
+ void *ptr, size_t size);
+
+struct pmem2_map {
+ void *addr; /* base address */
+ size_t reserved_length; /* length of the mapping reservation */
+ size_t content_length; /* length of the mapped content */
+ /* effective persistence granularity */
+ enum pmem2_granularity effective_granularity;
+
+ pmem2_persist_fn persist_fn;
+ pmem2_flush_fn flush_fn;
+ pmem2_drain_fn drain_fn;
+ pmem2_deep_flush_fn deep_flush_fn;
+
+ pmem2_memmove_fn memmove_fn;
+ pmem2_memcpy_fn memcpy_fn;
+ pmem2_memset_fn memset_fn;
+
+ struct pmem2_source source;
+ struct pmem2_vm_reservation *reserv;
+};
+
+enum pmem2_granularity get_min_granularity(bool eADR, bool is_pmem,
+ enum pmem2_sharing_type sharing);
+struct pmem2_map *pmem2_map_find(const void *addr, size_t len);
+int pmem2_register_mapping(struct pmem2_map *map);
+int pmem2_unregister_mapping(struct pmem2_map *map);
+void pmem2_map_init(void);
+void pmem2_map_fini(void);
+
+int pmem2_validate_offset(const struct pmem2_config *cfg,
+ size_t *offset, size_t alignment);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* map.h */