cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

common.c (814B)


      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}