From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-1?Q?Andreas_F=E4rber?= Subject: Re: [RFC 16/19] target-ppc: Refactor debug output macros Date: Sun, 27 Jan 2013 15:54:55 +0100 Message-ID: <51053FBF.7000202@suse.de> References: <1359293537-8251-1-git-send-email-afaerber@suse.de> <1359293537-8251-17-git-send-email-afaerber@suse.de> <87txq2sofb.fsf@codemonkey.ws> <51053B1C.8080205@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Overall , Gleb Natapov , Marcelo Tosatti , qemu-devel@nongnu.org, PowerPC , Anthony Liguori To: Alexander Graf Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org List-Id: kvm.vger.kernel.org Am 27.01.2013 15:46, schrieb Alexander Graf: >=20 > On 27.01.2013, at 15:35, Andreas F=E4rber wrote: >=20 >> Am 27.01.2013 15:14, schrieb Anthony Liguori: >>> Andreas F=E4rber writes: >>>> diff --git a/target-ppc/excp_helper.c b/target-ppc/excp_helper.c >>>> index 0a1ac86..54722c4 100644 >>>> --- a/target-ppc/excp_helper.c >>>> +++ b/target-ppc/excp_helper.c >>>> @@ -21,14 +21,14 @@ >>>> >>>> #include "helper_regs.h" >>>> >>>> -//#define DEBUG_OP >>>> -//#define DEBUG_EXCEPTIONS >>>> +#define DEBUG_OP 0 >>>> +#define DEBUG_EXCEPTIONS 0 >>>> >>>> -#ifdef DEBUG_EXCEPTIONS >>>> -# define LOG_EXCP(...) qemu_log(__VA_ARGS__) >>>> -#else >>>> -# define LOG_EXCP(...) do { } while (0) >>>> -#endif >>>> +#define LOG_EXCP(...) G_STMT_START \ >>>> + if (DEBUG_EXCEPTIONS) { \ >>>> + qemu_log(__VA_ARGS__); \ >>>> + } \ >>>> + G_STMT_END >>> >>> Just thinking out loud a bit.. This form becomes pretty common and i= t's >>> ashame to use a macro here if we don't have to. >>> >>> I think: >>> >>> static inline void LOG_EXCP(const char *fmt, ...) >>> { >>> if (debug_exceptions) { >>> va_list ap; >>> va_start(ap, fmt); >>> qemu_logv(fmt, ap); >>> va_end(ap); >>> } >>> } >>> >>> Probably would have equivalent performance. debug_exception would be >>> read-mostly and ought to be very predictable as a result. I strongly >>> expect that the compiler would actually inline LOG_EXCP too. >> >> Thanks for your early feedback. I merely tried to stay close to the >> original code. I wouldn't mind inline functions either. Or even more >> harmonization for that matter. >=20 > I fully agree. Just recently Scott revamped the openpic debug print cod= e: >=20 >=20 > //#define DEBUG_OPENPIC >=20 > #ifdef DEBUG_OPENPIC > static const int debug_openpic =3D 1; > #else > static const int debug_openpic =3D 0; > #endif >=20 > #define DPRINTF(fmt, ...) do { \ > if (debug_openpic) { \ > printf(fmt , ## __VA_ARGS__); \ > } \ > } while (0) Like :) I'll wait for more feedback from affected maintainers though before I redo or widen this series. Or were you proposing to do a ppc-only refactoring =E0 la Scott for 1.4? Andreas > I like that approach. It keeps all users identical. The #define stays i= dentical. The callers stay identical. But we do get proper compile time c= hecks. Of course Anthony's approach works too, but the thing I'd definite= ly like to see is that the #defines don't become numerical, but rather st= ay of an #ifdef basis. >=20 >=20 > Alex --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg