Remove osdep.c/qemu-img code duplication
PATCH 1/1 Remove osdep.c/qemu-img code duplication
There are few helper functions (e.g. qemu_malloc) in osdep.c which are not OS dependent at all. Even the first CVS commit comment for osdep.c says "most functions are generic in fact". They are duplicated in qemu-img because osdep.c isn't used there.
This patch moves those functions to cutils.c and removes the duplicates from qemu-img.
Makefile.target +1 -0
@@ -430,6 +430,7 @@ endif OBJS+= libqemu.a +OBJS+= ../libqemu_common.a # Note: this is a workaround. The real fix is to avoid compiling # cpu_signal_handler() in cpu-exec.c.
osdep.c +0 -35
@@ -45,21 +45,6 @@#include <malloc.h> #endif -void *get_mmap_addr (unsigned long size) -{ -return NULL ; -} - -void qemu_free (void *ptr) -{ -free (ptr); -} - -void *qemu_malloc (size_t size) -{ -return malloc (size); -} -#if defined(_WIN32)void *qemu_memalign (size_t alignment,size_t size) {
@@ -217,26 +202,6 @@#endif -void *qemu_mallocz (size_t size) -{ -void *ptr; - ptr =qemu_malloc (size); -if (!ptr) -return NULL ; -memset (ptr,0 , size); -return ptr; -} - -char *qemu_strdup (const char *str) -{ -char *ptr; - ptr =qemu_malloc (strlen (str) +1 ); -if (!ptr) -return NULL ; -strcpy (ptr, str); -return ptr; -} -int qemu_create_pidfile (const char *filename) {char buffer[128 ];
osdep.h +0 -7
@@ -47,17 +47,10 @@#define qemu_printf printf -void *qemu_malloc (size_t size); -void *qemu_mallocz (size_t size); -void qemu_free (void *ptr); -char *qemu_strdup (const char *str); -void *qemu_memalign (size_t alignment,size_t size);void *qemu_vmalloc (size_t size);void qemu_vfree (void *ptr); -void *get_mmap_addr (unsigned long size); -int qemu_create_pidfile (const char *filename);#ifdef _WIN32
cutils.c +35 -0
@@ -95,3 +95,38 @@ t +=3600 * tm->tm_hour +60 * tm->tm_min + tm->tm_sec;return t; } + +void *get_mmap_addr (unsigned long size) +{ +return NULL ; +} + +void qemu_free (void *ptr) +{ +free (ptr); +} + +void *qemu_malloc (size_t size) +{ +return malloc (size); +} + +void *qemu_mallocz (size_t size) +{ +void *ptr; + ptr =qemu_malloc (size); +if (!ptr) +return NULL ; +memset (ptr,0 , size); +return ptr; +} + +char *qemu_strdup (const char *str) +{ +char *ptr; + ptr =qemu_malloc (strlen (str) +1 ); +if (!ptr) +return NULL ; +strcpy (ptr, str); +return ptr; +}
qemu-common.h +8 -0
@@ -86,6 +86,14 @@int stristart (const char *str,const char *val,const char **ptr);time_t mktimegm (struct tm *tm); +void *qemu_malloc (size_t size); +void *qemu_mallocz (size_t size); +void qemu_free (void *ptr); +char *qemu_strdup (const char *str); + +void *get_mmap_addr (unsigned long size); + +/* Error handling. */ void hw_error (const char *fmt, ...)
qemu-img.c +0 -35
@@ -30,41 +30,6 @@#include <windows.h> #endif -void *get_mmap_addr (unsigned long size) -{ -return NULL ; -} - -void qemu_free (void *ptr) -{ -free (ptr); -} - -void *qemu_malloc (size_t size) -{ -return malloc (size); -} - -void *qemu_mallocz (size_t size) -{ -void *ptr; - ptr =qemu_malloc (size); -if (!ptr) -return NULL ; -memset (ptr,0 , size); -return ptr; -} - -char *qemu_strdup (const char *str) -{ -char *ptr; - ptr =qemu_malloc (strlen (str) +1 ); -if (!ptr) -return NULL ; -strcpy (ptr, str); -return ptr; -} -static void __attribute__((noreturn))error (const char *fmt, ...) {va_list ap;
Quoted 7 lines · Kevin Wolf
There are few helper functions (e.g.
qemu_malloc) inosdep.cwhich are not OS dependent at all. Even the first CVS commit comment forosdep.csays "most functions are generic in fact". They are duplicated in qemu-img becauseosdep.cisn't used there.This patch moves those functions to
cutils.cand removes the duplicates from qemu-img.
After applying this patch, some files in tcg/ starts to emit warning about undefined function.
The patch is a good idea though.
Quoted 195 lines
Index: Makefile.target
===================================================================Makefile.target +1
-0@@ -430,6 +430,7 @@ endif OBJS+= libqemu.a +OBJS+= ../libqemu_common.a # Note: this is a workaround. The real fix is to avoid compiling # cpu_signal_handler() in cpu-exec.c.Index:
osdep.c
===================================================================osdep.c +0
-35@@ -45,21 +45,6 @@#include <malloc.h> #endif -void *get_mmap_addr (unsigned long size) -{ -return NULL ; -} - -void qemu_free (void *ptr) -{ -free (ptr); -} - -void *qemu_malloc (size_t size) -{ -return malloc (size); -} -#if defined(_WIN32)void *qemu_memalign (size_t alignment,size_t size) {@@ -217,26 +202,6 @@#endif -void *qemu_mallocz (size_t size) -{ -void *ptr; - ptr =qemu_malloc (size); -if (!ptr) -return NULL ; -memset (ptr,0 , size); -return ptr; -} - -char *qemu_strdup (const char *str) -{ -char *ptr; - ptr =qemu_malloc (strlen (str) +1 ); -if (!ptr) -return NULL ; -strcpy (ptr, str); -return ptr; -} -int qemu_create_pidfile (const char *filename) {char buffer[128 ];Index:
osdep.h
===================================================================osdep.h +0
-7@@ -47,17 +47,10 @@#define qemu_printf printf -void *qemu_malloc (size_t size); -void *qemu_mallocz (size_t size); -void qemu_free (void *ptr); -char *qemu_strdup (const char *str); -void *qemu_memalign (size_t alignment,size_t size);void *qemu_vmalloc (size_t size);void qemu_vfree (void *ptr); -void *get_mmap_addr (unsigned long size); -int qemu_create_pidfile (const char *filename);#ifdef _WIN32Index:
cutils.c
===================================================================cutils.c +35
-0@@ -95,3 +95,38 @@ t +=3600 * tm->tm_hour +60 * tm->tm_min + tm->tm_sec;return t; } + +void *get_mmap_addr (unsigned long size) +{ +return NULL ; +} + +void qemu_free (void *ptr) +{ +free (ptr); +} + +void *qemu_malloc (size_t size) +{ +return malloc (size); +} + +void *qemu_mallocz (size_t size) +{ +void *ptr; + ptr =qemu_malloc (size); +if (!ptr) +return NULL ; +memset (ptr,0 , size); +return ptr; +} + +char *qemu_strdup (const char *str) +{ +char *ptr; + ptr =qemu_malloc (strlen (str) +1 ); +if (!ptr) +return NULL ; +strcpy (ptr, str); +return ptr; +}Index:
qemu-common.h
===================================================================qemu-common.h +8
-0@@ -86,6 +86,14 @@int stristart (const char *str,const char *val,const char **ptr);time_t mktimegm (struct tm *tm); +void *qemu_malloc (size_t size); +void *qemu_mallocz (size_t size); +void qemu_free (void *ptr); +char *qemu_strdup (const char *str); + +void *get_mmap_addr (unsigned long size); + +/* Error handling. */ void hw_error (const char *fmt, ...)Index:
qemu-img.c
===================================================================qemu-img.c +0
-35@@ -30,41 +30,6 @@#include <windows.h> #endif -void *get_mmap_addr (unsigned long size) -{ -return NULL ; -} - -void qemu_free (void *ptr) -{ -free (ptr); -} - -void *qemu_malloc (size_t size) -{ -return malloc (size); -} - -void *qemu_mallocz (size_t size) -{ -void *ptr; - ptr =qemu_malloc (size); -if (!ptr) -return NULL ; -memset (ptr,0 , size); -return ptr; -} - -char *qemu_strdup (const char *str) -{ -char *ptr; - ptr =qemu_malloc (strlen (str) +1 ); -if (!ptr) -return NULL ; -strcpy (ptr, str); -return ptr; -} -static void __attribute__((noreturn))error (const char *fmt, ...) {va_list ap;
Signature · 4 lines
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' [email protected] | [email protected] `- people.debian.org/~aurel32 | www.aurel32.net
Quoted 11 lines · Aurelien Jarno
Quoted 7 lines · Kevin Wolf
There are few helper functions (e.g.
qemu_malloc) inosdep.cwhich are not OS dependent at all. Even the first CVS commit comment forosdep.csays "most functions are generic in fact". They are duplicated in qemu-img becauseosdep.cisn't used there.This patch moves those functions to
cutils.cand removes the duplicates from qemu-img.After applying this patch, some files in tcg/ starts to emit warning about undefined function.
Oops... Actually, there are quite a few more files which don't include the header but should now. And I found even a bit more of cutils.c code duplicated in tcg.c while checking the warnings. New patch is attached.
Kevin
translate.c +1 -0
@@ -32,6 +32,7 @@#include "exec-all.h" #include "disas.h" #include "tcg-op.h" +#include "qemu-common.h" typedef struct DisasContext { struct TranslationBlock *tb;
translate.c +1 -0
@@ -32,6 +32,7 @@#include "tcg-op.h" #include "helper.h" #include "crisv32-decode.h" +#include "qemu-common.h" #define CRIS_STATS 0#if CRIS_STATS
Makefile.target +1 -0
@@ -430,6 +430,7 @@ endif OBJS+= libqemu.a +OBJS+= ../libqemu_common.a # Note: this is a workaround. The real fix is to avoid compiling # cpu_signal_handler() in cpu-exec.c.
translate.c +1 -0
@@ -26,6 +26,7 @@#include "exec-all.h" #include "disas.h" #include "tcg-op.h" +#include "qemu-common.h" #define DO_SINGLE_STEP #define GENERATE_NOP
helper.c +1 -0
@@ -27,6 +27,7 @@#include "cpu.h" #include "exec-all.h" +#include "qemu-common.h" //#define DEBUG_MMU
helper.c +1 -0
@@ -25,6 +25,7 @@#include "config.h" #include "cpu.h" #include "exec-all.h" +#include "qemu-common.h" enum m68k_cpuid {M68K_CPUID_M5206 ,
main.c +1 -0
@@ -25,6 +25,7 @@#include <unistd.h> #include "qemu.h" +#include "qemu-common.h" #define DEBUG_LOGFILE "/tmp/qemu.log"
osdep.c +0 -35
@@ -45,21 +45,6 @@#include <malloc.h> #endif -void *get_mmap_addr (unsigned long size) -{ -return NULL ; -} - -void qemu_free (void *ptr) -{ -free (ptr); -} - -void *qemu_malloc (size_t size) -{ -return malloc (size); -} -#if defined(_WIN32)void *qemu_memalign (size_t alignment,size_t size) {
@@ -217,26 +202,6 @@#endif -void *qemu_mallocz (size_t size) -{ -void *ptr; - ptr =qemu_malloc (size); -if (!ptr) -return NULL ; -memset (ptr,0 , size); -return ptr; -} - -char *qemu_strdup (const char *str) -{ -char *ptr; - ptr =qemu_malloc (strlen (str) +1 ); -if (!ptr) -return NULL ; -strcpy (ptr, str); -return ptr; -} -int qemu_create_pidfile (const char *filename) {char buffer[128 ];
osdep.h +0 -7
@@ -47,17 +47,10 @@#define qemu_printf printf -void *qemu_malloc (size_t size); -void *qemu_mallocz (size_t size); -void qemu_free (void *ptr); -char *qemu_strdup (const char *str); -void *qemu_memalign (size_t alignment,size_t size);void *qemu_vmalloc (size_t size);void qemu_vfree (void *ptr); -void *get_mmap_addr (unsigned long size); -int qemu_create_pidfile (const char *filename);#ifdef _WIN32
helper.c +1 -0
@@ -28,6 +28,7 @@#include "cpu.h" #include "exec-all.h" #include "helper_regs.h" +#include "qemu-common.h" //#define DEBUG_MMU //#define DEBUG_BATS
translate.c +1 -0
@@ -27,6 +27,7 @@#include "exec-all.h" #include "disas.h" #include "tcg-op.h" +#include "qemu-common.h" /* Include definitions for instructions classes and implementations flags */ //#define DO_SINGLE_STEP
cutils.c +35 -0
@@ -95,3 +95,38 @@ t +=3600 * tm->tm_hour +60 * tm->tm_min + tm->tm_sec;return t; } + +void *get_mmap_addr (unsigned long size) +{ +return NULL ; +} + +void qemu_free (void *ptr) +{ +free (ptr); +} + +void *qemu_malloc (size_t size) +{ +return malloc (size); +} + +void *qemu_mallocz (size_t size) +{ +void *ptr; + ptr =qemu_malloc (size); +if (!ptr) +return NULL ; +memset (ptr,0 , size); +return ptr; +} + +char *qemu_strdup (const char *str) +{ +char *ptr; + ptr =qemu_malloc (strlen (str) +1 ); +if (!ptr) +return NULL ; +strcpy (ptr, str); +return ptr; +}
translate.c +1 -0
@@ -30,6 +30,7 @@#include "exec-all.h" #include "disas.h" #include "tcg-op.h" +#include "qemu-common.h" //#define MIPS_DEBUG_DISAS //#define MIPS_DEBUG_SIGN_EXTENSIONS
tcg.c +1 -31
@@ -39,7 +39,7 @@#endif #include "config.h" -#include "osdep.h" +#include "qemu-common.h" /* Note: the long term plan is to reduce the dependancies on the QEMU CPU definitions. Currently they are used for qemu_ld/st
@@ -147,36 +147,6 @@#include "tcg-target.c" -/* XXX: factorize */ -static void pstrcpy (char *buf,int buf_size,const char *str) -{ -int c; -char *q = buf; - -if (buf_size <=0 ) -return ; - -for (;;) { - c = *str++; -if (c ==0 || q >= buf + buf_size -1 ) -break ; - *q++ = c; - } - *q ='\0' ; -} - -#if TCG_TARGET_REG_BITS ==32 -/* strcat and truncate. */ -static char *pstrcat (char *buf,int buf_size,const char *s) -{ -int len; - len =strlen (buf); -if (len < buf_size) -pstrcpy (buf + len, buf_size - len, s); -return buf; -} -#endif -/* pool based memory allocation */ void *tcg_malloc_internal (TCGContext *s,int size) {
qemu-common.h +8 -0
@@ -86,6 +86,14 @@int stristart (const char *str,const char *val,const char **ptr);time_t mktimegm (struct tm *tm); +void *qemu_malloc (size_t size); +void *qemu_mallocz (size_t size); +void qemu_free (void *ptr); +char *qemu_strdup (const char *str); + +void *get_mmap_addr (unsigned long size); + +/* Error handling. */ void hw_error (const char *fmt, ...)
exec.c +1 -0
@@ -35,6 +35,7 @@#include "cpu.h" #include "exec-all.h" +#include "qemu-common.h" #if defined(CONFIG_USER_ONLY )#include <qemu.h> #endif
helper2.c +1 -0
@@ -28,6 +28,7 @@#include "cpu.h" #include "exec-all.h" #include "svm.h" +#include "qemu-common.h" //#define DEBUG_MMU
qemu-img.c +0 -35
@@ -30,41 +30,6 @@#include <windows.h> #endif -void *get_mmap_addr (unsigned long size) -{ -return NULL ; -} - -void qemu_free (void *ptr) -{ -free (ptr); -} - -void *qemu_malloc (size_t size) -{ -return malloc (size); -} - -void *qemu_mallocz (size_t size) -{ -void *ptr; - ptr =qemu_malloc (size); -if (!ptr) -return NULL ; -memset (ptr,0 , size); -return ptr; -} - -char *qemu_strdup (const char *str) -{ -char *ptr; - ptr =qemu_malloc (strlen (str) +1 ); -if (!ptr) -return NULL ; -strcpy (ptr, str); -return ptr; -} -static void __attribute__((noreturn))error (const char *fmt, ...) {va_list ap;
helper.c +1 -0
@@ -6,6 +6,7 @@#include "exec-all.h" #include "gdbstub.h" #include "helpers.h" +#include "qemu-common.h" static uint32_t cortexa8_cp15_c0_c1[8 ] = {0x1031 ,0x11 ,0x400 ,0 ,0x31100003 ,0x20000000 ,0x01202000 ,0x11 };
kqemu.c +1 -0
@@ -40,6 +40,7 @@#include "cpu.h" #include "exec-all.h" +#include "qemu-common.h" #ifdef USE_KQEMU