static void *kqemu_vmalloc(size_t size)

{

    static int phys_ram_fd = -1;

    static int phys_ram_size = 0;

    void *ptr;



/* no need (?) for a dummy file on OpenBSD/FreeBSD */

#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)

    int map_anon = MAP_ANON;

#else

    int map_anon = 0;

    const char *tmpdir;

    char phys_ram_file[1024];

#ifdef CONFIG_SOLARIS

    struct statvfs stfs;

#else

    struct statfs stfs;

#endif



    if (!size) {

        abort ();

    }



    if (phys_ram_fd < 0) {

        tmpdir = getenv("QEMU_TMPDIR");

        if (!tmpdir)

#ifdef CONFIG_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__ || __FreeBSD__ || __DragonFly__) */

    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_vmalloc(size_t size)

{

    static int phys_ram_fd = -1;

    static int phys_ram_size = 0;

    void *ptr;





#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)

    int map_anon = MAP_ANON;

#else

    int map_anon = 0;

    const char *tmpdir;

    char phys_ram_file[1024];

#ifdef CONFIG_SOLARIS

    struct statvfs stfs;

#else

    struct statfs stfs;

#endif



    if (!size) {

        abort ();

    }



    if (phys_ram_fd < 0) {

        tmpdir = getenv("QEMU_TMPDIR");

        if (!tmpdir)

#ifdef CONFIG_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 

    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 *FUNC_0(size_t VAR_0)

{

    static int VAR_1 = -1;

    static int VAR_2 = 0;

    void *VAR_3;





#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)

    int VAR_4 = MAP_ANON;

#else

    int VAR_4 = 0;

    const char *VAR_5;

    char VAR_6[1024];

#ifdef CONFIG_SOLARIS

    struct statvfs VAR_7;

#else

    struct statfs VAR_7;

#endif



    if (!VAR_0) {

        abort ();

    }



    if (VAR_1 < 0) {

        VAR_5 = getenv("QEMU_TMPDIR");

        if (!VAR_5)

#ifdef CONFIG_SOLARIS

            VAR_5 = "/tmp";

        if (statvfs(VAR_5, &VAR_7) == 0) {

#else

            VAR_5 = "/dev/shm";

        if (statfs(VAR_5, &VAR_7) == 0) {

#endif

            int64_t free_space;

            int VAR_8;



            free_space = (int64_t)VAR_7.f_bavail * VAR_7.f_bsize;

            if ((ram_size + 8192 * 1024) >= free_space) {

                VAR_8 = (ram_size / (1024 * 1024));

                fprintf(stderr,

                        "You do not have enough space in '%s' for the %d MB of QEMU virtual RAM.\n",

                        VAR_5, VAR_8);

                if (strcmp(VAR_5, "/dev/shm") == 0) {

                    fprintf(stderr, "To have more space available provided you have enough RAM and swap, do as root:\n"

                            "mount -o remount,VAR_0=%dm /dev/shm\n",

                            VAR_8 + 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(VAR_6, sizeof(VAR_6), "%s/qemuXXXXXX",

                 VAR_5);

        VAR_1 = mkstemp(VAR_6);

        if (VAR_1 < 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",

                    VAR_5);

            snprintf(VAR_6, sizeof(VAR_6), "%s/qemuXXXXXX",

                     "/tmp");

            VAR_1 = mkstemp(VAR_6);

            if (VAR_1 < 0) {

                fprintf(stderr, "Could not create temporary memory file '%s'\n",

                        VAR_6);

                exit(1);

            }

        }

        unlink(VAR_6);

    }

    VAR_0 = (VAR_0 + 4095) & ~4095;

    ftruncate(VAR_1, VAR_2 + VAR_0);

#endif 

    VAR_3 = mmap(NULL,

               VAR_0,

               PROT_WRITE | PROT_READ, VAR_4 | MAP_SHARED,

               VAR_1, VAR_2);

    if (VAR_3 == MAP_FAILED) {

        fprintf(stderr, "Could not map physical memory\n");

        exit(1);

    }

    VAR_2 += VAR_0;

    return VAR_3;

}

static void *FUNC_0(size_t VAR_0)
{ static int VAR_1 = -1; static int VAR_2 = 0; void *VAR_3; #if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
int VAR_4 = MAP_ANON; #else
int VAR_4 = 0; const char *VAR_5; char VAR_6[1024]; #ifdef CONFIG_SOLARIS
struct statvfs VAR_7; #else
struct statfs VAR_7; #endif
if (!VAR_0) { abort (); } if (VAR_1 < 0) { VAR_5 = getenv("QEMU_TMPDIR"); if (!VAR_5)
#ifdef CONFIG_SOLARIS
VAR_5 = "/tmp"; if (statvfs(VAR_5, &VAR_7) == 0) { #else
VAR_5 = "/dev/shm"; if (statfs(VAR_5, &VAR_7) == 0) { #endif
int64_t free_space; int VAR_8; free_space = (int64_t)VAR_7.f_bavail * VAR_7.f_bsize; if ((ram_size + 8192 * 1024) >= free_space) { VAR_8 = (ram_size / (1024 * 1024)); fprintf(stderr,
"You do not have enough space in '%s' for the %d MB of QEMU virtual RAM.\n",
VAR_5, VAR_8); if (strcmp(VAR_5, "/dev/shm") == 0) { fprintf(stderr, "To have more space available provided you have enough RAM and swap, do as root:\n"
"mount -o remount,VAR_0=%dm /dev/shm\n",
VAR_8 + 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(VAR_6, sizeof(VAR_6), "%s/qemuXXXXXX",
VAR_5); VAR_1 = mkstemp(VAR_6); if (VAR_1 < 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",
VAR_5); snprintf(VAR_6, sizeof(VAR_6), "%s/qemuXXXXXX",
"/tmp"); VAR_1 = mkstemp(VAR_6); if (VAR_1 < 0) { fprintf(stderr, "Could not create temporary memory file '%s'\n",
VAR_6); exit(1); } } unlink(VAR_6); } VAR_0 = (VAR_0 + 4095) & ~4095; ftruncate(VAR_1, VAR_2 + VAR_0); #endif
VAR_3 = mmap(NULL,
VAR_0,
PROT_WRITE | PROT_READ, VAR_4 | MAP_SHARED,
VAR_1, VAR_2); if (VAR_3 == MAP_FAILED) { fprintf(stderr, "Could not map physical memory\n"); exit(1); } VAR_2 += VAR_0; return VAR_3; }