Merge branch 'akpm' (patches from Andrew)
[linux-2.6-microblaze.git] / tools / testing / selftests / memfd / common.c
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 }