This consolidates the duplicated oom_check() functions, as well as
splitting them into OS dependant versions to avoid the #ifdef
grossness that was present in the old osdep.c version.
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
obj-y = main.o syscall.o strace.o mmap.o signal.o thunk.o \
elfload.o linuxload.o uaccess.o gdbstub.o cpu-uname.o \
QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
obj-y = main.o syscall.o strace.o mmap.o signal.o thunk.o \
elfload.o linuxload.o uaccess.o gdbstub.o cpu-uname.o \
+ qemu-malloc.o $(oslib-obj-y)
obj-$(TARGET_HAS_BFLT) += flatload.o
obj-$(TARGET_HAS_BFLT) += flatload.o
#include "trace.h"
#include "qemu_socket.h"
#include "trace.h"
#include "qemu_socket.h"
-#if !defined(_POSIX_C_SOURCE) || defined(__sun__)
-static void *oom_check(void *ptr)
+void *qemu_oom_check(void *ptr)
{
if (ptr == NULL) {
fprintf(stderr, "Failed to allocate memory: %s\n", strerror(errno));
{
if (ptr == NULL) {
fprintf(stderr, "Failed to allocate memory: %s\n", strerror(errno));
void *qemu_memalign(size_t alignment, size_t size)
{
void *qemu_memalign(size_t alignment, size_t size)
{
abort();
}
#elif defined(CONFIG_BSD)
abort();
}
#elif defined(CONFIG_BSD)
- ptr = oom_check(valloc(size));
+ ptr = qemu_oom_check(valloc(size));
- ptr = oom_check(memalign(alignment, size));
+ ptr = qemu_oom_check(memalign(alignment, size));
#endif
trace_qemu_memalign(alignment, size, ptr);
return ptr;
#endif
trace_qemu_memalign(alignment, size, ptr);
return ptr;
#include "trace.h"
#include "qemu_socket.h"
#include "trace.h"
#include "qemu_socket.h"
-static void *oom_check(void *ptr)
+void *qemu_oom_check(void *ptr)
{
if (ptr == NULL) {
fprintf(stderr, "Failed to allocate memory: %lu\n", GetLastError());
{
if (ptr == NULL) {
fprintf(stderr, "Failed to allocate memory: %lu\n", GetLastError());
- ptr = oom_check(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE));
+ ptr = qemu_oom_check(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE));
trace_qemu_memalign(alignment, size, ptr);
return ptr;
}
trace_qemu_memalign(alignment, size, ptr);
return ptr;
}
- ptr = oom_check(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE));
+ ptr = qemu_oom_check(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE));
trace_qemu_vmalloc(size, ptr);
return ptr;
}
trace_qemu_vmalloc(size, ptr);
return ptr;
}
+void *qemu_oom_check(void *ptr);
void *qemu_malloc(size_t size);
void *qemu_realloc(void *ptr, size_t size);
void *qemu_mallocz(size_t size);
void *qemu_malloc(size_t size);
void *qemu_realloc(void *ptr, size_t size);
void *qemu_mallocz(size_t size);
#include "trace.h"
#include <stdlib.h>
#include "trace.h"
#include <stdlib.h>
-static void *oom_check(void *ptr)
-{
- if (ptr == NULL) {
- abort();
- }
- return ptr;
-}
-
void qemu_free(void *ptr)
{
trace_qemu_free(ptr);
void qemu_free(void *ptr)
{
trace_qemu_free(ptr);
if (!size && !allow_zero_malloc()) {
abort();
}
if (!size && !allow_zero_malloc()) {
abort();
}
- ptr = oom_check(malloc(size ? size : 1));
+ ptr = qemu_oom_check(malloc(size ? size : 1));
trace_qemu_malloc(size, ptr);
return ptr;
}
trace_qemu_malloc(size, ptr);
return ptr;
}
if (!size && !allow_zero_malloc()) {
abort();
}
if (!size && !allow_zero_malloc()) {
abort();
}
- newptr = oom_check(realloc(ptr, size ? size : 1));
+ newptr = qemu_oom_check(realloc(ptr, size ? size : 1));
trace_qemu_realloc(ptr, size, newptr);
return newptr;
}
trace_qemu_realloc(ptr, size, newptr);
return newptr;
}
if (!size && !allow_zero_malloc()) {
abort();
}
if (!size && !allow_zero_malloc()) {
abort();
}
- return oom_check(calloc(1, size ? size : 1));
+ return qemu_oom_check(calloc(1, size ? size : 1));
}
char *qemu_strdup(const char *str)
}
char *qemu_strdup(const char *str)