]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pmdk/src/libpmem2/source.h
import ceph 16.2.7
[ceph.git] / ceph / src / pmdk / src / libpmem2 / source.h
diff --git a/ceph/src/pmdk/src/libpmem2/source.h b/ceph/src/pmdk/src/libpmem2/source.h
new file mode 100644 (file)
index 0000000..38ae321
--- /dev/null
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright 2020, Intel Corporation */
+
+#ifndef PMEM2_SOURCE_H
+#define PMEM2_SOURCE_H
+
+#include "os.h"
+
+#define INVALID_FD (-1)
+
+enum pmem2_file_type {
+       PMEM2_FTYPE_REG = 1,
+       PMEM2_FTYPE_DEVDAX = 2,
+       PMEM2_FTYPE_DIR = 3,
+};
+
+enum pmem2_source_type {
+       PMEM2_SOURCE_UNSPECIFIED,
+       PMEM2_SOURCE_ANON,
+       PMEM2_SOURCE_FD,
+       PMEM2_SOURCE_HANDLE,
+
+       MAX_PMEM2_SOURCE_TYPE
+};
+
+struct pmem2_source {
+       /* a source file descriptor / handle for the designed mapping */
+       enum pmem2_source_type type;
+       struct {
+               enum pmem2_file_type ftype;
+               union {
+                       /* PMEM2_SOURCE_ANON */
+                       size_t size;
+#ifdef _WIN32
+                       /* PMEM2_SOURCE_HANDLE */
+                       HANDLE handle;
+#else
+                       /* PMEM2_SOURCE_FD */
+                       struct {
+                               int fd;
+                               dev_t st_rdev;
+                               dev_t st_dev;
+                       };
+#endif
+               };
+       } value;
+};
+
+#endif /* PMEM2_SOURCE_H */