46 lines · 814 B · C
RawDownload
// 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);}