Skip to content
Snippets Groups Projects
Commit ab4911e4 authored by Weronika Lewandowska's avatar Weronika Lewandowska
Browse files

pmem2: add source get fd/handle

parent f235c504
No related branches found
No related tags found
No related merge requests found
...@@ -70,6 +70,7 @@ extern "C" { ...@@ -70,6 +70,7 @@ extern "C" {
#define PMEM2_E_NO_ACCESS (-100032) #define PMEM2_E_NO_ACCESS (-100032)
#define PMEM2_E_VM_RESERVATION_NOT_EMPTY (-100033) #define PMEM2_E_VM_RESERVATION_NOT_EMPTY (-100033)
#define PMEM2_E_MAP_EXISTS (-100034) #define PMEM2_E_MAP_EXISTS (-100034)
#define PMEM2_E_FILE_DESCRIPTOR_NOT_SET (-100035)
/* source setup */ /* source setup */
...@@ -79,6 +80,9 @@ int pmem2_source_from_fd(struct pmem2_source **src, int fd); ...@@ -79,6 +80,9 @@ int pmem2_source_from_fd(struct pmem2_source **src, int fd);
int pmem2_source_from_anon(struct pmem2_source **src, size_t size); int pmem2_source_from_anon(struct pmem2_source **src, size_t size);
#ifdef _WIN32 #ifdef _WIN32
int pmem2_source_from_handle(struct pmem2_source **src, HANDLE handle); int pmem2_source_from_handle(struct pmem2_source **src, HANDLE handle);
int pmem2_source_get_handle(const struct pmem2_source *src, HANDLE *h);
#else
int pmem2_source_get_fd(const struct pmem2_source *src, int *fd);
#endif #endif
int pmem2_source_size(const struct pmem2_source *src, size_t *size); int pmem2_source_size(const struct pmem2_source *src, size_t *size);
......
...@@ -45,6 +45,7 @@ EXPORTS ...@@ -45,6 +45,7 @@ EXPORTS
pmem2_source_from_anon pmem2_source_from_anon
pmem2_source_from_fd pmem2_source_from_fd
pmem2_source_from_handle pmem2_source_from_handle
pmem2_source_get_handle
pmem2_source_size pmem2_source_size
pmem2_vm_reservation_delete pmem2_vm_reservation_delete
pmem2_vm_reservation_get_address pmem2_vm_reservation_get_address
......
...@@ -40,6 +40,7 @@ LIBPMEM2_1.0 { ...@@ -40,6 +40,7 @@ LIBPMEM2_1.0 {
pmem2_source_from_anon; pmem2_source_from_anon;
pmem2_source_from_fd; pmem2_source_from_fd;
pmem2_source_from_handle; pmem2_source_from_handle;
pmem2_source_get_fd;
pmem2_source_size; pmem2_source_size;
pmem2_vm_reservation_delete; pmem2_vm_reservation_delete;
pmem2_vm_reservation_get_address; pmem2_vm_reservation_get_address;
......
...@@ -174,3 +174,23 @@ pmem2_source_alignment(const struct pmem2_source *src, size_t *alignment) ...@@ -174,3 +174,23 @@ pmem2_source_alignment(const struct pmem2_source *src, size_t *alignment)
return 0; return 0;
} }
/*
* pmem2_source_get_fd -- get file descriptor from provided source
*/
int
pmem2_source_get_fd(const struct pmem2_source *src, int *fd)
{
LOG(3, "src type %d", src->type);
PMEM2_ERR_CLR();
if (src->type == PMEM2_SOURCE_FD) {
*fd = src->value.fd;
} else {
ERR(
"File descriptor is not set, source type does not support fd");
return PMEM2_E_FILE_DESCRIPTOR_NOT_SET;
}
return 0;
}
...@@ -161,3 +161,23 @@ pmem2_source_alignment(const struct pmem2_source *src, size_t *alignment) ...@@ -161,3 +161,23 @@ pmem2_source_alignment(const struct pmem2_source *src, size_t *alignment)
return 0; return 0;
} }
/*
* pmem2_source_get_handle -- get file handler from provided source
*/
int
pmem2_source_get_handle(const struct pmem2_source *src, HANDLE *h)
{
LOG(3, "src type %d", src->type);
PMEM2_ERR_CLR();
if (src->type == PMEM2_SOURCE_HANDLE) {
*h = src->value.handle;
} else {
ERR(
"File handle is not set, source type does not support file handles");
return PMEM2_E_FILE_HANDLE_NOT_SET;
}
return 0;
}
...@@ -31,6 +31,7 @@ pmem2_source_device_id$(nW) ...@@ -31,6 +31,7 @@ pmem2_source_device_id$(nW)
pmem2_source_device_usc$(nW) pmem2_source_device_usc$(nW)
pmem2_source_from_anon$(nW) pmem2_source_from_anon$(nW)
pmem2_source_from_fd$(nW) pmem2_source_from_fd$(nW)
pmem2_source_get_fd$(nW)
pmem2_source_size$(nW) pmem2_source_size$(nW)
pmem2_vm_reservation_delete$(nW) pmem2_vm_reservation_delete$(nW)
pmem2_vm_reservation_get_address$(nW) pmem2_vm_reservation_get_address$(nW)
......
...@@ -36,6 +36,7 @@ pmem2_source_device_usc ...@@ -36,6 +36,7 @@ pmem2_source_device_usc
pmem2_source_from_anon pmem2_source_from_anon
pmem2_source_from_fd pmem2_source_from_fd
pmem2_source_from_handle pmem2_source_from_handle
pmem2_source_get_handle
pmem2_source_size pmem2_source_size
pmem2_vm_reservation_delete pmem2_vm_reservation_delete
pmem2_vm_reservation_get_address pmem2_vm_reservation_get_address
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment