测试 code
# cat memkindpool.c
#include <stdio.h>
#include <memkind.h>
int main(int argc, char **argv){
printf("argc [%d] \n", argc);
struct memkind *pool = NULL;
int res = -1;
char *ptr = NULL;
size_t capacity = 1;
capacity = atoi(argv[1]);
// 测试 16字节对齐
size_t allocate_size = 17;
allocate_size = atoi(argv[2]);
printf("capacity [%d] , allocate_size [%d]\n", capacity, allocate_size);
if((res = memkind_create_pmem("/mnt/pmem1/", capacity*1024*1024*1024, &pool)) == 0) {
printf("CREATE OK, capacity [%d] \n", capacity);
} else {
printf("CREATE FAILED\n");
return -1;
}
if ((ptr = memkind_malloc(pool, allocate_size)) != NULL) {
printf("MALLOC OK\n");
} else {
printf("MALLOC FAILED\n");
return -1;
}
if ((res = memkind_malloc_usable_size(pool, ptr)) != 0) {
printf("GET USABLE SIZE OK [%d]\n", res);
} else {
printf("GET USABLE SIZE FAILED\n");
return -1;
}
sleep(10);
memkind_free(pool, ptr);
printf("FREE OK\n");
if((res = memkind_pmem_destroy(pool)) == 0) {
printf("DESTROY OK\n");
} else {
printf("DESTROY FAILED\n");
return -1;
}
}
编译程序
gcc -W -o memkindpool memkindpool.c -lmemkind
检查有没有memkind 库
# ldconfig -v| grep memkind
ldconfig: Can't stat /libx32: No such file or directory
ldconfig: Path `/usr/lib' given more than once
ldconfig: Path `/usr/lib64' given more than once
ldconfig: Can't stat /usr/libx32: No such file or directory
libmemkind.so.0 -> libmemkind.so.0.0.1
# ldd memkindpool
linux-vdso.so.1 (0x00007ffdc2a83000)
libmemkind.so.0 => /lib64/libmemkind.so.0 (0x00007fedd00dc000)
libc.so.6 => /lib64/libc.so.6 (0x00007fedcff16000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fedcff10000)
libnuma.so.1 => /lib64/libnuma.so.1 (0x00007fedcff02000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fedcfee1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fedd0387000)