qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu.


From: Jan Kiszka
Subject: [Qemu-devel] Re: [PATCH 01/32] use anonymous memory for kqemu.
Date: Thu, 23 Oct 2008 15:35:45 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

Glauber Costa wrote:
> Signed-off-by: Glauber Costa <address@hidden>

-ENOREASON

What was the original idea behind using a named mem region? Why is it no
longer needed? Maybe I missed that point on the list, but then it would
still be nice-to-have in the changelog.

> ---
>  osdep.c |  111 
> ---------------------------------------------------------------
>  1 files changed, 0 insertions(+), 111 deletions(-)
> 
> diff --git a/osdep.c b/osdep.c
> index 683aad0..31c96e6 100644
> --- a/osdep.c
> +++ b/osdep.c
> @@ -68,112 +68,9 @@ void qemu_vfree(void *ptr)
>  
>  #else
>  
> -#if defined(USE_KQEMU)
> -
> -#ifdef __OpenBSD__
> -#include <sys/param.h>
> -#include <sys/types.h>
> -#include <sys/mount.h>
> -#else
> -#include <sys/vfs.h>
> -#endif
> -
>  #include <sys/mman.h>
>  #include <fcntl.h>
>  
> -static void *kqemu_vmalloc(size_t size)
> -{
> -    static int phys_ram_fd = -1;
> -    static int phys_ram_size = 0;
> -    void *ptr;
> -
> -#ifdef __OpenBSD__ /* no need (?) for a dummy file on OpenBSD */
> -    int map_anon = MAP_ANON;
> -#else
> -    int map_anon = 0;
> -    const char *tmpdir;
> -    char phys_ram_file[1024];
> -#ifdef HOST_SOLARIS
> -    struct statvfs stfs;
> -#else
> -    struct statfs stfs;
> -#endif
> -
> -    if (phys_ram_fd < 0) {
> -        tmpdir = getenv("QEMU_TMPDIR");
> -        if (!tmpdir)
> -#ifdef HOST_SOLARIS
> -            tmpdir = "/tmp";
> -        if (statvfs(tmpdir, &stfs) == 0) {
> -#else
> -            tmpdir = "/dev/shm";
> -        if (statfs(tmpdir, &stfs) == 0) {
> -#endif
> -            int64_t free_space;
> -            int ram_mb;
> -
> -            free_space = (int64_t)stfs.f_bavail * stfs.f_bsize;
> -            if ((ram_size + 8192 * 1024) >= free_space) {
> -                ram_mb = (ram_size / (1024 * 1024));
> -                fprintf(stderr,
> -                        "You do not have enough space in '%s' for the %d MB 
> of QEMU virtual RAM.\n",
> -                        tmpdir, ram_mb);
> -                if (strcmp(tmpdir, "/dev/shm") == 0) {
> -                    fprintf(stderr, "To have more space available provided 
> you have enough RAM and swap, do as root:\n"
> -                            "mount -o remount,size=%dm /dev/shm\n",
> -                            ram_mb + 16);
> -                } else {
> -                    fprintf(stderr,
> -                            "Use the '-m' option of QEMU to diminish the 
> amount of virtual RAM or use the\n"
> -                            "QEMU_TMPDIR environment variable to set another 
> directory where the QEMU\n"
> -                            "temporary RAM file will be opened.\n");
> -                }
> -                fprintf(stderr, "Or disable the accelerator module with 
> -no-kqemu\n");
> -                exit(1);
> -            }
> -        }
> -        snprintf(phys_ram_file, sizeof(phys_ram_file), "%s/qemuXXXXXX",
> -                 tmpdir);
> -        phys_ram_fd = mkstemp(phys_ram_file);
> -        if (phys_ram_fd < 0) {
> -            fprintf(stderr,
> -                    "warning: could not create temporary file in '%s'.\n"
> -                    "Use QEMU_TMPDIR to select a directory in a tmpfs 
> filesystem.\n"
> -                    "Using '/tmp' as fallback.\n",
> -                    tmpdir);
> -            snprintf(phys_ram_file, sizeof(phys_ram_file), "%s/qemuXXXXXX",
> -                     "/tmp");
> -            phys_ram_fd = mkstemp(phys_ram_file);
> -            if (phys_ram_fd < 0) {
> -                fprintf(stderr, "Could not create temporary memory file 
> '%s'\n",
> -                        phys_ram_file);
> -                exit(1);
> -            }
> -        }
> -        unlink(phys_ram_file);
> -    }
> -    size = (size + 4095) & ~4095;
> -    ftruncate(phys_ram_fd, phys_ram_size + size);
> -#endif /* !__OpenBSD__ */
> -    ptr = mmap(NULL,
> -               size,
> -               PROT_WRITE | PROT_READ, map_anon | MAP_SHARED,
> -               phys_ram_fd, phys_ram_size);
> -    if (ptr == MAP_FAILED) {
> -        fprintf(stderr, "Could not map physical memory\n");
> -        exit(1);
> -    }
> -    phys_ram_size += size;
> -    return ptr;
> -}
> -
> -static void kqemu_vfree(void *ptr)
> -{
> -    /* may be useful some day, but currently we do not need to free */
> -}
> -
> -#endif
> -
>  void *qemu_memalign(size_t alignment, size_t size)
>  {
>  #if defined(_POSIX_C_SOURCE)
> @@ -193,10 +90,6 @@ void *qemu_memalign(size_t alignment, size_t size)
>  /* alloc shared memory pages */
>  void *qemu_vmalloc(size_t size)
>  {
> -#if defined(USE_KQEMU)
> -    if (kqemu_allowed)
> -        return kqemu_vmalloc(size);
> -#endif
>  #ifdef _BSD
>      return valloc(size);
>  #else
> @@ -206,10 +99,6 @@ void *qemu_vmalloc(size_t size)
>  
>  void qemu_vfree(void *ptr)
>  {
> -#if defined(USE_KQEMU)
> -    if (kqemu_allowed)
> -        kqemu_vfree(ptr);
> -#endif
>      free(ptr);
>  }
>  

Jan

-- 
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux




reply via email to

[Prev in Thread] Current Thread [Next in Thread]