* [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs [not found] <1399964572-5376-1-git-send-email-marc.mari.barcelo@gmail.com> @ 2014-05-13 7:02 ` Marc Marí 2014-05-13 7:38 ` Andreas Färber ` (2 more replies) 0 siblings, 3 replies; 5+ messages in thread From: Marc Marí @ 2014-05-13 7:02 UTC (permalink / raw) To: qemu-devel Cc: Peter Crosthwaite, Andreas Färber, Stefan Hajnoczi, Marc Marí, open list:X86, open list:X86 Modify debug macros to have the same format through the codebase and use regular ifs instead of ifdef. As the debug printf is always put in code, some casting had to be added to avoid warnings treated as errors at compile time. Signed-off-by: Marc Marí <marc.mari.barcelo@gmail.com> --- hw/i386/kvm/pci-assign.c | 9 ++++----- hw/i386/multiboot.c | 6 ++++-- target-i386/kvm.c | 8 ++++---- xen-hvm.c | 12 ++++++------ xen-mapcache.c | 8 ++++---- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/hw/i386/kvm/pci-assign.c b/hw/i386/kvm/pci-assign.c index e55421a..35757ae 100644 --- a/hw/i386/kvm/pci-assign.c +++ b/hw/i386/kvm/pci-assign.c @@ -51,14 +51,13 @@ //#define DEVICE_ASSIGNMENT_DEBUG #ifdef DEVICE_ASSIGNMENT_DEBUG -#define DEBUG(fmt, ...) \ - do { \ - fprintf(stderr, "%s: " fmt, __func__ , __VA_ARGS__); \ - } while (0) +#define DEVICE_ASSIGNMENT_DEBUG_ENABLED 1 #else -#define DEBUG(fmt, ...) +#define DEVICE_ASSIGNMENT_DEBUG_ENABLED 0 #endif +#define DEBUG(fmt, ...) QEMU_DPRINTF(DEVICE_ASSIGNMENT_DEBUG_ENABLED, "pci_assign", fmt, ## __VA_ARGS__) + typedef struct PCIRegion { int type; /* Memory or port I/O */ int valid; diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c index 985ca1e..cd215dc 100644 --- a/hw/i386/multiboot.c +++ b/hw/i386/multiboot.c @@ -33,11 +33,13 @@ //#define DEBUG_MULTIBOOT #ifdef DEBUG_MULTIBOOT -#define mb_debug(a...) fprintf(stderr, ## a) +#define DEBUG_MULTIBOOT_ENABLED 1 #else -#define mb_debug(a...) +#define DEBUG_MULTIBOOT_ENABLED 0 #endif +#define mb_debug(a...) QEMU_DPRINTF(DEBUG_MULTIBOOT_ENABLED, "i386 multiboot", a) + #define MULTIBOOT_STRUCT_ADDR 0x9000 #if MULTIBOOT_STRUCT_ADDR > 0xf0000 diff --git a/target-i386/kvm.c b/target-i386/kvm.c index 4389959..d6cd89c 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -37,13 +37,13 @@ //#define DEBUG_KVM #ifdef DEBUG_KVM -#define DPRINTF(fmt, ...) \ - do { fprintf(stderr, fmt, ## __VA_ARGS__); } while (0) +#define DEBUG_KVM_ENABLED 1 #else -#define DPRINTF(fmt, ...) \ - do { } while (0) +#define DEBUG_KVM_ENABLED 0 #endif +#define DPRINTF(fmt, ...) QEMU_DPRINTF(DEBUG_KVM_ENABLED, "i386 kvm", fmt, ## __VA_ARGS__) + #define MSR_KVM_WALL_CLOCK 0x11 #define MSR_KVM_SYSTEM_TIME 0x12 diff --git a/xen-hvm.c b/xen-hvm.c index a64486c..ccce342 100644 --- a/xen-hvm.c +++ b/xen-hvm.c @@ -26,16 +26,16 @@ #include <xen/hvm/params.h> #include <xen/hvm/e820.h> -//#define DEBUG_XEN_HVM +//#define DEBUG_XEN -#ifdef DEBUG_XEN_HVM -#define DPRINTF(fmt, ...) \ - do { fprintf(stderr, "xen: " fmt, ## __VA_ARGS__); } while (0) +#ifdef DEBUG_XEN +#define DEBUG_XEN_ENABLED 1 #else -#define DPRINTF(fmt, ...) \ - do { } while (0) +#define DEBUG_XEN_ENABLED 0 #endif +#define DPRINTF(fmt, ...) QEMU_DPRINTF(DEBUG_XEN_ENABLED, "xen", fmt, ## __VA_ARGS__) + static MemoryRegion ram_memory, ram_640k, ram_lo, ram_hi; static MemoryRegion *framebuffer; static bool xen_in_migration; diff --git a/xen-mapcache.c b/xen-mapcache.c index eda914a..a50bb80 100644 --- a/xen-mapcache.c +++ b/xen-mapcache.c @@ -26,13 +26,13 @@ //#define MAPCACHE_DEBUG #ifdef MAPCACHE_DEBUG -# define DPRINTF(fmt, ...) do { \ - fprintf(stderr, "xen_mapcache: " fmt, ## __VA_ARGS__); \ -} while (0) +#define MAPCACHE_DEBUG_ENABLED 1 #else -# define DPRINTF(fmt, ...) do { } while (0) +#define MAPCACHE_DEBUG_ENABLED 0 #endif +#define DPRINTF(fmt, ...) QEMU_DPRINTF(MAPCACHE_DEBUG_ENABLED, "xen_mapcache", fmt, ## __VA_ARGS__) + #if defined(__i386__) # define MCACHE_BUCKET_SHIFT 16 # define MCACHE_MAX_SIZE (1UL<<31) /* 2GB Cap */ -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs 2014-05-13 7:02 ` [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs Marc Marí @ 2014-05-13 7:38 ` Andreas Färber 2014-05-13 14:38 ` [Qemu-devel] " Eric Blake 2014-05-13 15:15 ` Eric Blake 2 siblings, 0 replies; 5+ messages in thread From: Andreas Färber @ 2014-05-13 7:38 UTC (permalink / raw) To: Marc Marí, qemu-devel Cc: Peter Crosthwaite, Stefan Hajnoczi, kvm, xen-devel Am 13.05.2014 09:02, schrieb Marc Marí: > Modify debug macros to have the same format through the codebase and use regular > ifs instead of ifdef. > > As the debug printf is always put in code, some casting had to be added to avoid > warnings treated as errors at compile time. > > Signed-off-by: Marc Marí <marc.mari.barcelo@gmail.com> > --- > hw/i386/kvm/pci-assign.c | 9 ++++----- > hw/i386/multiboot.c | 6 ++++-- > target-i386/kvm.c | 8 ++++---- > xen-hvm.c | 12 ++++++------ > xen-mapcache.c | 8 ++++---- > 5 files changed, 22 insertions(+), 21 deletions(-) > > diff --git a/hw/i386/kvm/pci-assign.c b/hw/i386/kvm/pci-assign.c > index e55421a..35757ae 100644 > --- a/hw/i386/kvm/pci-assign.c > +++ b/hw/i386/kvm/pci-assign.c > @@ -51,14 +51,13 @@ > //#define DEVICE_ASSIGNMENT_DEBUG > > #ifdef DEVICE_ASSIGNMENT_DEBUG > -#define DEBUG(fmt, ...) \ > - do { \ > - fprintf(stderr, "%s: " fmt, __func__ , __VA_ARGS__); \ > - } while (0) > +#define DEVICE_ASSIGNMENT_DEBUG_ENABLED 1 > #else > -#define DEBUG(fmt, ...) > +#define DEVICE_ASSIGNMENT_DEBUG_ENABLED 0 > #endif > > +#define DEBUG(fmt, ...) QEMU_DPRINTF(DEVICE_ASSIGNMENT_DEBUG_ENABLED, "pci_assign", fmt, ## __VA_ARGS__) This is broken, QEMU_DPRINTF() is not defined yet. Looks like an ordering issue with 16/16. Regards, Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs 2014-05-13 7:02 ` [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs Marc Marí 2014-05-13 7:38 ` Andreas Färber @ 2014-05-13 14:38 ` Eric Blake 2014-05-15 9:44 ` Marc Marí 2014-05-13 15:15 ` Eric Blake 2 siblings, 1 reply; 5+ messages in thread From: Eric Blake @ 2014-05-13 14:38 UTC (permalink / raw) To: Marc Marí, qemu-devel Cc: Stefan Hajnoczi, Peter Crosthwaite, X86, Andreas Färber, X86 [-- Attachment #1.1: Type: text/plain, Size: 2320 bytes --] On 05/13/2014 01:02 AM, Marc Marí wrote: > Modify debug macros to have the same format through the codebase and use regular > ifs instead of ifdef. > > As the debug printf is always put in code, some casting had to be added to avoid > warnings treated as errors at compile time. Umm, where in this patch did you add casting? Don't add bogus lines to the commit message (I was assuming that it might be a case where the code has type mismatches, and where something like PRId32 would be better than adding a cast - but couldn't find where that was. Maybe other patches in the series are affected?) > > Signed-off-by: Marc Marí <marc.mari.barcelo@gmail.com> > --- > -#define DEBUG(fmt, ...) \ > - do { \ > - fprintf(stderr, "%s: " fmt, __func__ , __VA_ARGS__); \ > - } while (0) The old code was line-wrapped to fit in 80 columns... > +#define DEVICE_ASSIGNMENT_DEBUG_ENABLED 1 > #else > -#define DEBUG(fmt, ...) > +#define DEVICE_ASSIGNMENT_DEBUG_ENABLED 0 > #endif > > +#define DEBUG(fmt, ...) QEMU_DPRINTF(DEVICE_ASSIGNMENT_DEBUG_ENABLED, "pci_assign", fmt, ## __VA_ARGS__) the new code should probably try to do similar: #define DEBUG(fmt, ...) \ QEMU_DPRINTF(DEVICE_ASSIGNMENT_DEBUG_ENABLED, \ "pci_assign", fmt, ## __VA_ARGS__) Although __VA_ARGS__ is required by C99, the use of ##__VA_ARGS__ is a gcc extension; are you sure that all other supported compilers handle it? (I guess that's just clang) If you want something portable to C99, just use one fewer macro argument, so that you are guaranteed that __VA_ARGS__ will be non-empty (that is, subsume fmt into the ...): #define DEBUG(...) \ QEMU_DPRINTF(DEVICE_ASSIGNMENT_DEBUG_ENABLED, \ "pci_assign", __VA_ARGS__) > > +#define mb_debug(a...) QEMU_DPRINTF(DEBUG_MULTIBOOT_ENABLED, "i386 multiboot", a) Use of 'a...' as a named var-arg parameter is a gcc extension, not portable to C99. Again, will this compile on non-gcc? Unnamed ... coupled with __VA_ARGS__ is the only fully portable way to do var-args. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org [-- Attachment #1.2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 604 bytes --] [-- Attachment #2: Type: text/plain, Size: 126 bytes --] _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs 2014-05-13 14:38 ` [Qemu-devel] " Eric Blake @ 2014-05-15 9:44 ` Marc Marí 0 siblings, 0 replies; 5+ messages in thread From: Marc Marí @ 2014-05-15 9:44 UTC (permalink / raw) To: Eric Blake Cc: Peter Crosthwaite, X86, X86, Stefan Hajnoczi, qemu-devel, Andreas Färber El Tue, 13 May 2014 08:38:26 -0600 Eric Blake <eblake@redhat.com> escribió: > Although __VA_ARGS__ is required by C99, the use of ##__VA_ARGS__ is a > gcc extension; are you sure that all other supported compilers handle > it? (I guess that's just clang) > > If you want something portable to C99, just use one fewer macro > argument, so that you are guaranteed that __VA_ARGS__ will be > non-empty (that is, subsume fmt into the ...): > > #define DEBUG(...) \ > QEMU_DPRINTF(DEVICE_ASSIGNMENT_DEBUG_ENABLED, \ > "pci_assign", __VA_ARGS__) > I found some problems to convert from ## __VA_ARGS__ to __VA_ARGS__ in some parts, and as I asked in IRC, it was pointed that "our HACKING document recommends the fmt, ## __VA_ARGS__ approach, and it obviously works on all the compilers we care about". So I will leave this as it is now. Marc _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs 2014-05-13 7:02 ` [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs Marc Marí 2014-05-13 7:38 ` Andreas Färber 2014-05-13 14:38 ` [Qemu-devel] " Eric Blake @ 2014-05-13 15:15 ` Eric Blake 2 siblings, 0 replies; 5+ messages in thread From: Eric Blake @ 2014-05-13 15:15 UTC (permalink / raw) To: Marc Marí, qemu-devel Cc: Peter Crosthwaite, xen-devel, kvm, Stefan Hajnoczi, Andreas Färber [-- Attachment #1: Type: text/plain, Size: 2324 bytes --] On 05/13/2014 01:02 AM, Marc Marí wrote: > Modify debug macros to have the same format through the codebase and use regular > ifs instead of ifdef. > > As the debug printf is always put in code, some casting had to be added to avoid > warnings treated as errors at compile time. Umm, where in this patch did you add casting? Don't add bogus lines to the commit message (I was assuming that it might be a case where the code has type mismatches, and where something like PRId32 would be better than adding a cast - but couldn't find where that was. Maybe other patches in the series are affected?) > > Signed-off-by: Marc Marí <marc.mari.barcelo@gmail.com> > --- > -#define DEBUG(fmt, ...) \ > - do { \ > - fprintf(stderr, "%s: " fmt, __func__ , __VA_ARGS__); \ > - } while (0) The old code was line-wrapped to fit in 80 columns... > +#define DEVICE_ASSIGNMENT_DEBUG_ENABLED 1 > #else > -#define DEBUG(fmt, ...) > +#define DEVICE_ASSIGNMENT_DEBUG_ENABLED 0 > #endif > > +#define DEBUG(fmt, ...) QEMU_DPRINTF(DEVICE_ASSIGNMENT_DEBUG_ENABLED, "pci_assign", fmt, ## __VA_ARGS__) the new code should probably try to do similar: #define DEBUG(fmt, ...) \ QEMU_DPRINTF(DEVICE_ASSIGNMENT_DEBUG_ENABLED, \ "pci_assign", fmt, ## __VA_ARGS__) Although __VA_ARGS__ is required by C99, the use of ##__VA_ARGS__ is a gcc extension; are you sure that all other supported compilers handle it? (I guess that's just clang) If you want something portable to C99, just use one fewer macro argument, so that you are guaranteed that __VA_ARGS__ will be non-empty (that is, subsume fmt into the ...): #define DEBUG(...) \ QEMU_DPRINTF(DEVICE_ASSIGNMENT_DEBUG_ENABLED, \ "pci_assign", __VA_ARGS__) > > +#define mb_debug(a...) QEMU_DPRINTF(DEBUG_MULTIBOOT_ENABLED, "i386 multiboot", a) Use of 'a...' as a named var-arg parameter is a gcc extension, not portable to C99. Again, will this compile on non-gcc? Unnamed ... coupled with __VA_ARGS__ is the only fully portable way to do var-args. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 604 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-05-15 9:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1399964572-5376-1-git-send-email-marc.mari.barcelo@gmail.com>
2014-05-13 7:02 ` [PATCH v2 01/16] x86: Convert conditional compilation of debug printfs to regular ifs Marc Marí
2014-05-13 7:38 ` Andreas Färber
2014-05-13 14:38 ` [Qemu-devel] " Eric Blake
2014-05-15 9:44 ` Marc Marí
2014-05-13 15:15 ` Eric Blake
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).