159
The memkind API
The memkind API functions related to persistent memory programming are shown in
Listing 10-1 and described in this section. The complete memkind API is available in the
memkind man pages (http://memkind.github.io/memkind/man_pages/memkind.html).
Listing 10-1. Persistent memory-related memkind API functions
KIND CREATION MANAGEMENT:
int memkind_create_pmem(const char *dir, size_t max_size, memkind_t *kind);
int memkind_create_pmem_with_config(struct memkind_config *cfg, memkind_t
*kind);
memkind_t memkind_detect_kind(void *ptr);
int memkind_destroy_kind(memkind_t kind);
KIND HEAP MANAGEMENT:
void *memkind_malloc(memkind_t kind, size_t size);
void *memkind_calloc(memkind_t kind, size_t num, size_t size);
void *memkind_realloc(memkind_t kind, void *ptr, size_t size);
void memkind_free(memkind_t kind, void *ptr);
size_t memkind_malloc_usable_size(memkind_t kind, void *ptr);
memkind_t memkind_detect_kind(void *ptr);
KIND CONFIGURATION MANAGEMENT:
struct memkind_config *memkind_config_new();
void memkind_config_delete(struct memkind_config *cfg);
void memkind_config_set_path(struct memkind_config *cfg, const char
*pmem_dir);
void memkind_config_set_size(struct memkind_config *cfg, size_t pmem_size);
void memkind_config_set_memory_usage_policy(struct memkind_config *cfg,
memkind_mem_usage_policy policy);
Kind Management API
The memkind library supports a plug-in architecture to incorporate new memory kinds,
which are referred to as dynamic kinds. The memkind library provides the API to create
and manage the heap for the dynamic kinds.
Chapter 10 Volatile Use of persistent MeMory
The memkind API
The memkind API functions related to persistent memory programming are shown in
Listing 10-1 and described in this section. The complete memkind API is available in the
memkind man pages (http://memkind.github.io/memkind/man_pages/memkind.html).
Listing 10-1. Persistent memory-related memkind API functions
KIND CREATION MANAGEMENT:
int memkind_create_pmem(const char *dir, size_t max_size, memkind_t *kind);
int memkind_create_pmem_with_config(struct memkind_config *cfg, memkind_t
*kind);
memkind_t memkind_detect_kind(void *ptr);
int memkind_destroy_kind(memkind_t kind);
KIND HEAP MANAGEMENT:
void *memkind_malloc(memkind_t kind, size_t size);
void *memkind_calloc(memkind_t kind, size_t num, size_t size);
void *memkind_realloc(memkind_t kind, void *ptr, size_t size);
void memkind_free(memkind_t kind, void *ptr);
size_t memkind_malloc_usable_size(memkind_t kind, void *ptr);
memkind_t memkind_detect_kind(void *ptr);
KIND CONFIGURATION MANAGEMENT:
struct memkind_config *memkind_config_new();
void memkind_config_delete(struct memkind_config *cfg);
void memkind_config_set_path(struct memkind_config *cfg, const char
*pmem_dir);
void memkind_config_set_size(struct memkind_config *cfg, size_t pmem_size);
void memkind_config_set_memory_usage_policy(struct memkind_config *cfg,
memkind_mem_usage_policy policy);
Kind Management API
The memkind library supports a plug-in architecture to incorporate new memory kinds,
which are referred to as dynamic kinds. The memkind library provides the API to create
and manage the heap for the dynamic kinds.
Chapter 10 Volatile Use of persistent MeMory
