void pmem_dump2console(void) { struct pmem_region query, result; int status; query.start = 0; query.end = 0xfffffffffffffffful; /* ULONG_MAX */ pmem_region_unset_all(&query); print("Physical Memory Map:\n"); while ((status = pmem_query(&query, &result)) == 0) { print(" [%#016lx, %#016lx) %-10s numa_node=%d alloc=%d\n", result.start, result.end, (result.type_is_set) ? pmem_type_to_string(result.type) : "UNSET", (result.numa_node_is_set) ? (int) result.numa_node : -1, (result.allocated_is_set) ? (int) result.allocated : -1 ); query.start = result.end; } }
static int pmem_api_test(void) { struct pmem_region query, result; unsigned long bytes_umem = 0; int status; printf("\n"); printf("TEST BEGIN: Physical Memory Management\n"); query.start = 0; query.end = ULONG_MAX; pmem_region_unset_all(&query); printf(" Physical Memory Map:\n"); while ((status = pmem_query(&query, &result)) == 0) { printf(" [%#016lx, %#016lx) %-10s numa_node=%u\n", result.start, result.end, (result.type_is_set) ? pmem_type_to_string(result.type) : "UNSET", (result.numa_node_is_set) ? result.numa_node : 0 ); if (result.type == PMEM_TYPE_UMEM) bytes_umem += (result.end - result.start); query.start = result.end; } if (status != -ENOENT) { printf("ERROR: pmem_query() status=%d\n", status); return -1; } printf(" Total User-Level Managed Memory: %lu bytes\n", bytes_umem); printf("TEST END: Physical Memory Management\n"); return 0; }