47 lines · c
1// SPDX-License-Identifier: GPL-2.02#define _GNU_SOURCE3#define __EXPORTED_HEADERS__4 5#include <stdio.h>6#include <stdlib.h>7#include <linux/fcntl.h>8#include <linux/memfd.h>9#include <unistd.h>10#include <sys/syscall.h>11 12#include "common.h"13 14int hugetlbfs_test = 0;15 16/*17 * Copied from mlock2-tests.c18 */19unsigned long default_huge_page_size(void)20{21 unsigned long hps = 0;22 char *line = NULL;23 size_t linelen = 0;24 FILE *f = fopen("/proc/meminfo", "r");25 26 if (!f)27 return 0;28 while (getline(&line, &linelen, f) > 0) {29 if (sscanf(line, "Hugepagesize: %lu kB", &hps) == 1) {30 hps <<= 10;31 break;32 }33 }34 35 free(line);36 fclose(f);37 return hps;38}39 40int sys_memfd_create(const char *name, unsigned int flags)41{42 if (hugetlbfs_test)43 flags |= MFD_HUGETLB;44 45 return syscall(__NR_memfd_create, name, flags);46}47