linux/tools/testing/selftests/memfd/common.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2#define _GNU_SOURCE
   3#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.c
  18 */
  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