pmdk_sys/
lib.rs

1//
2// Copyright (c) 2019 RepliXio Ltd. All rights reserved.
3// Use is subject to license terms.
4//
5
6#![doc(html_root_url = "https://docs.rs/pmdk-sys/0.9.2")]
7
8use libc::{c_char, c_int, c_uint, c_void};
9use libc::{mode_t, size_t};
10
11mod base;
12
13pub mod obj;
14
15pub use base::PMEMoid;
16
17#[link(name = "pmem", kind = "static")]
18extern "C" {
19    // Most commonly used functions:
20
21    pub fn pmem_is_pmem(addr: *const c_void, len: size_t) -> c_int;
22    pub fn pmem_persist(addr: *const c_void, len: size_t);
23    pub fn pmem_msync(addr: *const c_void, len: size_t) -> c_int;
24    pub fn pmem_map_file(
25        path: *const c_char,
26        len: size_t,
27        flags: c_int,
28        mode: mode_t,
29        mapped_lenp: *mut size_t,
30        is_pmemp: *mut c_int,
31    ) -> *mut c_void;
32    pub fn pmem_unmap(addr: *mut c_void, len: size_t) -> c_int;
33
34    // Partial flushing operations:
35
36    pub fn pmem_flush(addr: *const c_void, len: size_t);
37    pub fn pmem_drain();
38    pub fn pmem_has_hw_drain() -> c_int;
39
40    // Copying to persistent memory:
41
42    pub fn pmem_memmove_persist(
43        pmemdest: *mut c_void,
44        src: *const c_void,
45        len: size_t,
46    ) -> *mut c_void;
47    pub fn pmem_memcpy_persist(
48        pmemdest: *mut c_void,
49        src: *const c_void,
50        len: size_t,
51    ) -> *mut c_void;
52    pub fn pmem_memset_persist(pmemdest: *mut c_void, c: c_int, len: size_t) -> *mut c_void;
53    pub fn pmem_memmove_nodrain(
54        pmemdest: *mut c_void,
55        src: *const c_void,
56        len: size_t,
57    ) -> *mut c_void;
58    pub fn pmem_memcpy_nodrain(
59        pmemdest: *mut c_void,
60        src: *const c_void,
61        len: size_t,
62    ) -> *mut c_void;
63    pub fn pmem_memset_nodrain(pmemdest: *mut c_void, c: c_int, len: size_t) -> *mut c_void;
64
65    // Library API versioning:
66
67    pub fn pmem_check_version(major_required: c_uint, minor_required: c_uint) -> *const c_char;
68
69    // Error handling:
70
71    pub fn pmem_errormsg() -> *const c_char;
72}
73
74#[link(name = "pmempool", kind = "static")]
75extern "C" {
76    // Utils
77
78    pub fn pmempool_rm(path: *const c_char, flags: c_int) -> c_int;
79}