informative message about low memory on /dev/shm

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1388 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2005-04-23 20:44:25 +00:00
parent 74c161bd17
commit 6bae7ed8b9

27
osdep.c
View File

@ -323,6 +323,7 @@ void qemu_vfree(void *ptr)
#elif defined(USE_KQEMU)
#include <sys/vfs.h>
#include <sys/mman.h>
#include <fcntl.h>
@ -333,11 +334,37 @@ void *qemu_vmalloc(size_t size)
const char *tmpdir;
char phys_ram_file[1024];
void *ptr;
struct statfs stfs;
if (phys_ram_fd < 0) {
tmpdir = getenv("QEMU_TMPDIR");
if (!tmpdir)
tmpdir = "/dev/shm";
if (statfs(tmpdir, &stfs) == 0) {
int64_t free_space;
int ram_mb;
extern int ram_size;
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"
"umount /dev/shm\n"
"mount -t tmpfs -o size=%dm none /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");
}
exit(1);
}
}
snprintf(phys_ram_file, sizeof(phys_ram_file), "%s/qemuXXXXXX",
tmpdir);
if (mkstemp(phys_ram_file) < 0) {