Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751766AbbEPRB5 (ORCPT ); Sat, 16 May 2015 13:01:57 -0400 Received: from mail-wi0-f176.google.com ([209.85.212.176]:34924 "EHLO mail-wi0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751177AbbEPRBz (ORCPT ); Sat, 16 May 2015 13:01:55 -0400 MIME-Version: 1.0 X-Originating-IP: [213.57.247.249] From: Leon Romanovsky Date: Sat, 16 May 2015 20:01:33 +0300 Message-ID: Subject: [RFC] Refactor kenter/kleave/kdebug macros To: dhowells@redhat.com, Linux-MM , "linux-kernel@vger.kernel.org" , linux-cachefs@redhat.com, linux-afs@lists.infradead.org Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2377 Lines: 64 Dear David, During my work on NOMMU system (mm/nommu.c), I saw definition and usage of kenter/kleave/kdebug macros. These macros are compiled as empty because of "#if 0" construction. 45 #if 0 46 #define kenter(FMT, ...) \ 47 printk(KERN_DEBUG "==> %s("FMT")\n", __func__, ##__VA_ARGS__) 48 #define kleave(FMT, ...) \ 49 printk(KERN_DEBUG "<== %s()"FMT"\n", __func__, ##__VA_ARGS__) 50 #define kdebug(FMT, ...) \ 51 printk(KERN_DEBUG "xxx" FMT"yyy\n", ##__VA_ARGS__) 52 #else 53 #define kenter(FMT, ...) \ 54 no_printk(KERN_DEBUG "==> %s("FMT")\n", __func__, ##__VA_ARGS__) 55 #define kleave(FMT, ...) \ 56 no_printk(KERN_DEBUG "<== %s()"FMT"\n", __func__, ##__VA_ARGS__) 57 #define kdebug(FMT, ...) \ 58 no_printk(KERN_DEBUG FMT"\n", ##__VA_ARGS__) 59 #endif This code was changed in 2009 [1] and similar definitions can be found in 9 other files [2]. The protection of these definitions is slightly different. There are places with "#if 0" protection and others with "#if defined(__KDEBUG)" protection. __KDEBUG is supposed to be inserted by GCC. My question is how we should handle such duplicated debug print code? As possible solutions, I see five options: 1. Leave it as is. 2. Move it to general include file (for example linux/printk.h) and commonize the output to be consistent between different kdebug users. 3. Add CONFIG_*_DEBUG definition for every kdebug user. 4. Move everything to "#if 0" construction. 5. Move everything to "#if defined(__KDEBUG)" construction. What do you think? [1] commit 8feae13110d60cc6287afabc2887366b0eb226c2 Author: David Howells Date: Thu Jan 8 12:04:47 2009 +0000 [2] List of all files there kdebug was defined: * arch/mn10300/kernel/mn10300-serial.c * arch/mn10300/mm/misalignment.c * fs/cachefiles/internal.h * fs/afs/internal.h * fs/fscache/internal.h * fs/binfmt_elf_fdpic.c * kernel/cred.c * mm/nommu.c * net/rxrpc/ar-internal.h * security/keys/internal.h Thank you. -- Leon Romanovsky | Independent Linux Consultant www.leon.nu | leon@leon.nu -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/