1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
//! libpmem bindings

extern crate libc;

use ::libc::{size_t, mode_t};
use ::libc::{c_void, c_char, c_int};

#[allow(dead_code)]
#[link(name = "pmem")]
extern "C" {
    // Most commonly used functions:
    fn pmem_is_pmem(addr: *const c_void, len: size_t) -> c_int;
    // void pmem_persist(const void *addr, size_t len);
    // int pmem_msync(const void *addr, size_t len);
    fn pmem_map_file(path: *const c_char,
                     len: size_t,
                     flags: c_int,
                     mode: mode_t,
                     mapped_lenp: *mut size_t,
                     is_pmemp: *mut c_int);
    fn pmem_unmap(addr: *mut c_void, len: size_t) -> c_int;
}