#include #include #include #include #include #include #include #include #include #include #include #include #define ONE_MEG (1024UL*1024UL) #define ONE_GIG (1024UL * ONE_MEG) int main(int argc, char * argv[]) { char s[32]; int NumaNode; void *virtaddr; virtaddr = mmap(NULL, ONE_GIG, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB , -1, 0); if (virtaddr == -1) { printf("mmap return failed\n"); perror("mmap"); exit(1); } *(char *)virtaddr = 0; if (syscall(SYS_move_pages, 0, 1, &virtaddr, NULL, &NumaNode, 0) != 0) { printf("Get virtual address 0x%p on NumaNode failed \n", virtaddr); } printf("create shared memory with mmap, virtaddr 0x%lx on Node %d, errno %d \n", virtaddr,NumaNode, errno); return 0; }