forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
814 B
46 lines
814 B
// SPDX-License-Identifier: GPL-2.0 |
|
#define _GNU_SOURCE |
|
#define __EXPORTED_HEADERS__ |
|
|
|
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <linux/fcntl.h> |
|
#include <linux/memfd.h> |
|
#include <unistd.h> |
|
#include <sys/syscall.h> |
|
|
|
#include "common.h" |
|
|
|
int hugetlbfs_test = 0; |
|
|
|
/* |
|
* Copied from mlock2-tests.c |
|
*/ |
|
unsigned long default_huge_page_size(void) |
|
{ |
|
unsigned long hps = 0; |
|
char *line = NULL; |
|
size_t linelen = 0; |
|
FILE *f = fopen("/proc/meminfo", "r"); |
|
|
|
if (!f) |
|
return 0; |
|
while (getline(&line, &linelen, f) > 0) { |
|
if (sscanf(line, "Hugepagesize: %lu kB", &hps) == 1) { |
|
hps <<= 10; |
|
break; |
|
} |
|
} |
|
|
|
free(line); |
|
fclose(f); |
|
return hps; |
|
} |
|
|
|
int sys_memfd_create(const char *name, unsigned int flags) |
|
{ |
|
if (hugetlbfs_test) |
|
flags |= MFD_HUGETLB; |
|
|
|
return syscall(__NR_memfd_create, name, flags); |
|
}
|
|
|