root/tools/testing/selftests/memfd/common.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. default_huge_page_size
  2. sys_memfd_create

   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 
  14 int hugetlbfs_test = 0;
  15 
  16 /*
  17  * Copied from mlock2-tests.c
  18  */
  19 unsigned 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 
  40 int 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 }

/* [<][>][^][v][top][bottom][index][help] */