.\" SPDX-License-Identifier: BSD-2-Clause .\" Copyright (C) 2014 - 2020 Intel Corporation. .\" .TH "MEMKIND_PMEM" 3 "2015-04-21" "Intel Corporation" "MEMKIND_PMEM" \" -*- nroff -*- .SH "NAME" memkind_pmem \- file-backed memory memkind operations. .br .BR Note: This is EXPERIMENTAL API. The functionality and the header file itself can be changed (including non-backward compatible changes) or removed. .SH "SYNOPSIS" .sp .BI "int memkind_pmem_create(struct memkind " "*kind" ", struct memkind_ops " "*ops" ", const char " "*name" ); .br .BI "int memkind_pmem_destroy(struct memkind " "*kind" ); .br .BI "void *memkind_pmem_mmap(struct memkind " "*kind" ", void " "*addr" ", size_t " "size" ); .br .BI "int memkind_pmem_get_mmap_flags(struct memkind " "*kind" ", int " "*flags" ); .br .BI "int memkind_pmem_validate_dir(const char " "*dir" ); .br .SH DESCRIPTION .PP The pmem memory memkind operations enable memory kinds built on memory-mapped files. These support traditional .B volatile memory allocation in a fashion similar to .BR libvmem (3) library. It uses the .BR mmap (2) system call to create a pool of volatile memory. Such memory may have different attributes, depending on the file system containing the memory-mapped files. (See also .IR http://pmem.io/pmdk/libvmem ). .PP The pmem kinds are most useful when used with DAX (direct mapping of persistent memory), which is memory-addressable persistent storage that supports load/store access without being paged via the system page cache. A Persistent Memory-aware file system is typically used to provide this type of access. .PP The most convenient way to create pmem kinds is to use .BR memkind_create_pmem () or .BR memkind_create_pmem_with_config () (see .BR memkind (3)). .PP .BR memkind_pmem_create () is an implementation of the memkind "create" operation for file-backed memory kinds. This allocates a space for some pmem-specific metadata, then calls .BR memkind_arena_create () (see .BR memkind_arena (3)) .PP .BR memkind_pmem_destroy () is an implementation of the memkind "destroy" operation for file-backed memory kinds. This releases all of the resources allocated by .BR memkind_pmem_create () and allows the file system space to be reclaimed. .PP .BR memkind_pmem_mmap () allocates the file system space for a block of .I size bytes in the memory-mapped file associated with given kind. The .I addr hint is ignored. The return value is the address of mapped memory region or .B MAP_FAILED in the case of an error. .PP .BR memkind_pmem_get_mmap_flags () sets .I flags to .BR "MAP_SHARED" . See .BR mmap (2) for more information about these flags. .PP .BR memkind_pmem_validate_dir () returns zero if file created in specified .I pmem_dir supports DAX (direct mapping of persistent memory) or an error code from the .B ERRORS if not. .TP .B MEMKIND_PMEM_CHUNK_SIZE The size of the PMEM chunk size. .SH "COPYRIGHT" Copyright (C) 2015 - 2020 Intel Corporation. All rights reserved. .SH "SEE ALSO" .BR memkind (3), .BR memkind_arena (3), .BR memkind_default (3), .BR memkind_hbw (3), .BR memkind_hugetlb (3), .BR libvmem (3), .BR jemalloc (3), .BR mbind (2), .BR mmap (2)