X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fpmdk%2Fsrc%2Flibpmem2%2Fmap.h;fp=ceph%2Fsrc%2Fpmdk%2Fsrc%2Flibpmem2%2Fmap.h;h=9cc172905208627b1be87d37ad7a8f147c849db0;hb=a4b75251e677cd644c8d7771f62d4819aabe7d6c;hp=0000000000000000000000000000000000000000;hpb=1a6b9a05546f335eeeddb460fdc89caadf80ac7a;p=ceph.git diff --git a/ceph/src/pmdk/src/libpmem2/map.h b/ceph/src/pmdk/src/libpmem2/map.h new file mode 100644 index 000000000..9cc172905 --- /dev/null +++ b/ceph/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 +#include +#include "libpmem2.h" +#include "os.h" +#include "source.h" +#include "vm_reservation.h" + +#ifdef _WIN32 +#include +#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 */