From bb756eebdac6fd24e8919e2c43f7d2c8c4091f59 Mon Sep 17 00:00:00 2001 From: RajithaY Date: Tue, 25 Apr 2017 03:31:15 -0700 Subject: Adding qemu as a submodule of KVMFORNFV This Patch includes the changes to add qemu as a submodule to kvmfornfv repo and make use of the updated latest qemu for the execution of all testcase Change-Id: I1280af507a857675c7f81d30c95255635667bdd7 Signed-off-by:RajithaY --- qemu/util/memfd.c | 162 ------------------------------------------------------ 1 file changed, 162 deletions(-) delete mode 100644 qemu/util/memfd.c (limited to 'qemu/util/memfd.c') diff --git a/qemu/util/memfd.c b/qemu/util/memfd.c deleted file mode 100644 index 7c406914c..000000000 --- a/qemu/util/memfd.c +++ /dev/null @@ -1,162 +0,0 @@ -/* - * memfd.c - * - * Copyright (c) 2015 Red Hat, Inc. - * - * QEMU library functions on POSIX which are shared between QEMU and - * the QEMU tools. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include "qemu/osdep.h" - -#include -#include - -#include - -#include "qemu/memfd.h" - -#ifdef CONFIG_MEMFD -#include -#elif defined CONFIG_LINUX -#include -#include - -static int memfd_create(const char *name, unsigned int flags) -{ -#ifdef __NR_memfd_create - return syscall(__NR_memfd_create, name, flags); -#else - return -1; -#endif -} -#endif - -#ifndef MFD_CLOEXEC -#define MFD_CLOEXEC 0x0001U -#endif - -#ifndef MFD_ALLOW_SEALING -#define MFD_ALLOW_SEALING 0x0002U -#endif - -/* - * This is a best-effort helper for shared memory allocation, with - * optional sealing. The helper will do his best to allocate using - * memfd with sealing, but may fallback on other methods without - * sealing. - */ -void *qemu_memfd_alloc(const char *name, size_t size, unsigned int seals, - int *fd) -{ - void *ptr; - int mfd = -1; - - *fd = -1; - -#ifdef CONFIG_LINUX - if (seals) { - mfd = memfd_create(name, MFD_ALLOW_SEALING | MFD_CLOEXEC); - } - - if (mfd == -1) { - /* some systems have memfd without sealing */ - mfd = memfd_create(name, MFD_CLOEXEC); - seals = 0; - } -#endif - - if (mfd != -1) { - if (ftruncate(mfd, size) == -1) { - perror("ftruncate"); - close(mfd); - return NULL; - } - - if (seals && fcntl(mfd, F_ADD_SEALS, seals) == -1) { - perror("fcntl"); - close(mfd); - return NULL; - } - } else { - const char *tmpdir = g_get_tmp_dir(); - gchar *fname; - - fname = g_strdup_printf("%s/memfd-XXXXXX", tmpdir); - mfd = mkstemp(fname); - unlink(fname); - g_free(fname); - - if (mfd == -1) { - perror("mkstemp"); - return NULL; - } - - if (ftruncate(mfd, size) == -1) { - perror("ftruncate"); - close(mfd); - return NULL; - } - } - - ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, mfd, 0); - if (ptr == MAP_FAILED) { - perror("mmap"); - close(mfd); - return NULL; - } - - *fd = mfd; - return ptr; -} - -void qemu_memfd_free(void *ptr, size_t size, int fd) -{ - if (ptr) { - munmap(ptr, size); - } - - if (fd != -1) { - close(fd); - } -} - -enum { - MEMFD_KO, - MEMFD_OK, - MEMFD_TODO -}; - -bool qemu_memfd_check(void) -{ - static int memfd_check = MEMFD_TODO; - - if (memfd_check == MEMFD_TODO) { - int fd; - void *ptr; - - ptr = qemu_memfd_alloc("test", 4096, 0, &fd); - memfd_check = ptr ? MEMFD_OK : MEMFD_KO; - qemu_memfd_free(ptr, 4096, fd); - } - - return memfd_check == MEMFD_OK; -} -- cgit 1.2.3-korg