LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [patch 01/10] compiler: define __attribute_unused__
@ 2007-05-02 4:28 David Rientjes
2007-05-02 4:28 ` [patch 02/10] i386 pci: type may be unused David Rientjes
` (2 more replies)
0 siblings, 3 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
For all supported versions of gcc (major version 3 and above), functions
and variables may be declared with __attribute__((unused)) to suppress
warnings if they are declared but unused.
This shouldn't be confused with functions being declared with
__attribute__((used)). This specifies that the function code shall still
be emitted even if it appears to be unreferenced, normally used if
embedded in inline assembly. For gcc 3.4 and later, unreferenced static
variables and functions are not emitted so this attribute is necessary to
force variables and functions to be output. Earlier versions of gcc can
simply use __attribute__((unused)) to suppress warnings about such
variables: we do not require any special classification to ensure they are
emitted.
We introduce __attribute_unused__ for variables that should not produce a
compile warning if they can, due to preprocessor macros, go unreferenced.
Signed-off-by: David Rientjes <rientjes@google.com>
---
include/linux/compiler-gcc.h | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -37,3 +37,19 @@
#define noinline __attribute__((noinline))
#define __attribute_pure__ __attribute__((pure))
#define __attribute_const__ __attribute__((__const__))
+
+/*
+ * __attribute_unused__ shall be used for functions or variables to suppress
+ * warnings when they may be declared but, due to preprocessor macros,
+ * commenting, etc., go unreferenced.
+ *
+ * In contrast, __attribute_used__ shall be used only for functions. gcc <3.4
+ * emits code for static functions that are unreferenced and outputs a warning.
+ * __attribute_used__ will correctly suppress this warning. gcc >=3.4 does not
+ * emit code for static functions that are unreferenced (and thus there is no
+ * warning), but __attribute_used__ forces the function code to be output. Use
+ * __attribute_unused__ to suppress warnings about functions being unused or
+ * __attribute_used__ to ensure code is emitted when it is referenced only in
+ * inline assembly.
+ */
+#define __attribute_unused__ __attribute__((unused))
^ permalink raw reply [flat|nested] 40+ messages in thread
* [patch 02/10] i386 pci: type may be unused
2007-05-02 4:28 [patch 01/10] compiler: define __attribute_unused__ David Rientjes
@ 2007-05-02 4:28 ` David Rientjes
2007-05-02 4:28 ` [patch 03/10] sh: dma: use __attribute_unused__ David Rientjes
2007-05-02 10:35 ` [patch 02/10] i386 pci: type may be unused Andi Kleen
2007-05-02 5:17 ` [patch 01/10] compiler: define __attribute_unused__ Alexey Dobriyan
2007-05-02 5:40 ` Rusty Russell
2 siblings, 2 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: Andi Kleen, linux-kernel
In the case of !CONFIG_PCI_DIRECT && !CONFIG_PCI_MMCONFIG, type is
unreferened.
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: David Rientjes <rientjes@google.com>
---
arch/i386/pci/init.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/i386/pci/init.c b/arch/i386/pci/init.c
--- a/arch/i386/pci/init.c
+++ b/arch/i386/pci/init.c
@@ -6,7 +6,7 @@
in the right sequence from here. */
static __init int pci_access_init(void)
{
- int type = 0;
+ int type __attribute_unused__ = 0;
#ifdef CONFIG_PCI_DIRECT
type = pci_direct_probe();
^ permalink raw reply [flat|nested] 40+ messages in thread
* [patch 04/10] scsi: fix ambiguous gdthtable definition
2007-05-02 4:28 ` [patch 03/10] sh: dma: use __attribute_unused__ David Rientjes
@ 2007-05-02 4:28 ` David Rientjes
2007-05-02 4:28 ` [patch 05/10] frv: gdb: use __attribute_unused__ David Rientjes
2007-05-07 1:28 ` [patch 03/10] sh: dma: " Paul Mundt
1 sibling, 1 reply; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: Achim Leubner, linux-kernel
Labeling a variable as __attribute_used__ is ambiguous: it means
__attribute__((unused)) for gcc <3.4 and __attribute__((used)) for
gcc >=3.4. There is no such thing as labeling a variable as
__attribute__((used)). We assume that we're simply suppressing a warning
here if gdthtable[] is declared but unreferenced.
Cc: Achim Leubner <achim_leubner@adaptec.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
drivers/scsi/gdth.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -876,7 +876,7 @@ static int __init gdth_search_pci(gdth_pci_str *pcistr)
/* Vortex only makes RAID controllers.
* We do not really want to specify all 550 ids here, so wildcard match.
*/
-static struct pci_device_id gdthtable[] __attribute_used__ = {
+static struct pci_device_id gdthtable[] __attribute_unused__ = {
{PCI_VENDOR_ID_VORTEX,PCI_ANY_ID,PCI_ANY_ID, PCI_ANY_ID},
{PCI_VENDOR_ID_INTEL,PCI_DEVICE_ID_INTEL_SRC,PCI_ANY_ID,PCI_ANY_ID},
{PCI_VENDOR_ID_INTEL,PCI_DEVICE_ID_INTEL_SRC_XSCALE,PCI_ANY_ID,PCI_ANY_ID},
^ permalink raw reply [flat|nested] 40+ messages in thread
* [patch 06/10] i386: voyager: use __attribute_unused__
2007-05-02 4:28 ` [patch 05/10] frv: gdb: use __attribute_unused__ David Rientjes
@ 2007-05-02 4:28 ` David Rientjes
2007-05-02 4:28 ` [patch 07/10] mips: excite: " David Rientjes
0 siblings, 1 reply; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: James Bottomley, linux-kernel
Replace automatic variable instances of __attribute__((unused)) with
__attribute_unused__ in mca_nmi_hook().
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
arch/i386/mach-voyager/voyager_basic.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/i386/mach-voyager/voyager_basic.c b/arch/i386/mach-voyager/voyager_basic.c
--- a/arch/i386/mach-voyager/voyager_basic.c
+++ b/arch/i386/mach-voyager/voyager_basic.c
@@ -292,8 +292,8 @@ machine_emergency_restart(void)
void
mca_nmi_hook(void)
{
- __u8 dumpval __attribute__((unused)) = inb(0xf823);
- __u8 swnmi __attribute__((unused)) = inb(0xf813);
+ __u8 dumpval __attribute_unused__ = inb(0xf823);
+ __u8 swnmi __attribute_unused__ = inb(0xf813);
/* FIXME: assume dump switch pressed */
/* check to see if the dump switch was pressed */
^ permalink raw reply [flat|nested] 40+ messages in thread
* [patch 07/10] mips: excite: use __attribute_unused__
2007-05-02 4:28 ` [patch 06/10] i386: voyager: " David Rientjes
@ 2007-05-02 4:28 ` David Rientjes
2007-05-02 4:28 ` [patch 08/10] mips: tlbex: " David Rientjes
2007-05-03 17:23 ` [patch 07/10] mips: excite: " Ralf Baechle
0 siblings, 2 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: Ralf Baechle, Thomas Koeller, linux-kernel
Replace variable instances of __attribute__((unused)) with
__attribute_unused__.
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Thomas Koeller <thomas.koeller@baslerweb.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
arch/mips/basler/excite/excite_device.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/arch/mips/basler/excite/excite_device.c b/arch/mips/basler/excite/excite_device.c
--- a/arch/mips/basler/excite/excite_device.c
+++ b/arch/mips/basler/excite/excite_device.c
@@ -68,7 +68,7 @@ enum {
static struct resource
- excite_ctr_resource __attribute__((unused)) = {
+ excite_ctr_resource __attribute_unused__ = {
.name = "GPI counters",
.start = 0,
.end = 5,
@@ -77,7 +77,7 @@ static struct resource
.sibling = NULL,
.child = NULL
},
- excite_gpislice_resource __attribute__((unused)) = {
+ excite_gpislice_resource __attribute_unused__ = {
.name = "GPI slices",
.start = 0,
.end = 1,
@@ -86,7 +86,7 @@ static struct resource
.sibling = NULL,
.child = NULL
},
- excite_mdio_channel_resource __attribute__((unused)) = {
+ excite_mdio_channel_resource __attribute_unused__ = {
.name = "MDIO channels",
.start = 0,
.end = 1,
@@ -95,7 +95,7 @@ static struct resource
.sibling = NULL,
.child = NULL
},
- excite_fifomem_resource __attribute__((unused)) = {
+ excite_fifomem_resource __attribute_unused__ = {
.name = "FIFO memory",
.start = 0,
.end = 767,
@@ -104,7 +104,7 @@ static struct resource
.sibling = NULL,
.child = NULL
},
- excite_scram_resource __attribute__((unused)) = {
+ excite_scram_resource __attribute_unused__ = {
.name = "Scratch RAM",
.start = EXCITE_PHYS_SCRAM,
.end = EXCITE_PHYS_SCRAM + EXCITE_SIZE_SCRAM - 1,
@@ -113,7 +113,7 @@ static struct resource
.sibling = NULL,
.child = NULL
},
- excite_fpga_resource __attribute__((unused)) = {
+ excite_fpga_resource __attribute_unused__ = {
.name = "System FPGA",
.start = EXCITE_PHYS_FPGA,
.end = EXCITE_PHYS_FPGA + EXCITE_SIZE_FPGA - 1,
@@ -122,7 +122,7 @@ static struct resource
.sibling = NULL,
.child = NULL
},
- excite_nand_resource __attribute__((unused)) = {
+ excite_nand_resource __attribute_unused__ = {
.name = "NAND flash control",
.start = EXCITE_PHYS_NAND,
.end = EXCITE_PHYS_NAND + EXCITE_SIZE_NAND - 1,
@@ -131,7 +131,7 @@ static struct resource
.sibling = NULL,
.child = NULL
},
- excite_titan_resource __attribute__((unused)) = {
+ excite_titan_resource __attribute_unused__ = {
.name = "TITAN registers",
.start = EXCITE_PHYS_TITAN,
.end = EXCITE_PHYS_TITAN + EXCITE_SIZE_TITAN - 1,
^ permalink raw reply [flat|nested] 40+ messages in thread
* [patch 09/10] powerpc: ps3: use __attribute_unused__
2007-05-02 4:28 ` [patch 08/10] mips: tlbex: " David Rientjes
@ 2007-05-02 4:28 ` David Rientjes
2007-05-02 4:28 ` [patch 10/10] i386 mmzone: " David Rientjes
2007-05-02 15:42 ` [patch 09/10] powerpc: ps3: " Geoff Levand
2007-05-03 17:23 ` [patch 08/10] mips: tlbex: " Ralf Baechle
1 sibling, 2 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: Geoff Levand, linux-kernel
Replace function instances of __attribute__ ((unused)) with
__attribute_unused__.
Cc: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
arch/powerpc/platforms/ps3/interrupt.c | 4 ++--
arch/powerpc/platforms/ps3/time.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c
--- a/arch/powerpc/platforms/ps3/interrupt.c
+++ b/arch/powerpc/platforms/ps3/interrupt.c
@@ -434,7 +434,7 @@ static void _dump_64_bmp(const char *header, const u64 *p, unsigned cpu,
*p & 0xffff);
}
-static void __attribute__ ((unused)) _dump_256_bmp(const char *header,
+static void __attribute_unused__ _dump_256_bmp(const char *header,
const u64 *p, unsigned cpu, const char* func, int line)
{
pr_debug("%s:%d: %s %u {%016lx:%016lx:%016lx:%016lx}\n",
@@ -453,7 +453,7 @@ static void _dump_bmp(struct ps3_private* pd, const char* func, int line)
}
#define dump_mask(_x) _dump_mask(_x, __func__, __LINE__)
-static void __attribute__ ((unused)) _dump_mask(struct ps3_private* pd,
+static void __attribute_unused__ _dump_mask(struct ps3_private* pd,
const char* func, int line)
{
unsigned long flags;
diff --git a/arch/powerpc/platforms/ps3/time.c b/arch/powerpc/platforms/ps3/time.c
--- a/arch/powerpc/platforms/ps3/time.c
+++ b/arch/powerpc/platforms/ps3/time.c
@@ -39,7 +39,7 @@ static void _dump_tm(const struct rtc_time *tm, const char* func, int line)
}
#define dump_time(_a) _dump_time(_a, __func__, __LINE__)
-static void __attribute__ ((unused)) _dump_time(int time, const char* func,
+static void __attribute_unused__ _dump_time(int time, const char* func,
int line)
{
struct rtc_time tm;
^ permalink raw reply [flat|nested] 40+ messages in thread
* [patch 10/10] i386 mmzone: use __attribute_unused__
2007-05-02 4:28 ` [patch 09/10] powerpc: ps3: " David Rientjes
@ 2007-05-02 4:28 ` David Rientjes
2007-05-02 15:42 ` [patch 09/10] powerpc: ps3: " Geoff Levand
1 sibling, 0 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: Andy Whitcroft, linux-kernel
Replace automatic variable instances of __attribute__ ((unused)) with
__attribute_unused__.
Cc: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: David Rientjes <rientjes@google.com>
---
include/asm-i386/mmzone.h | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/asm-i386/mmzone.h b/include/asm-i386/mmzone.h
--- a/include/asm-i386/mmzone.h
+++ b/include/asm-i386/mmzone.h
@@ -122,21 +122,21 @@ static inline int pfn_valid(int pfn)
__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0)
#define alloc_bootmem_node(pgdat, x) \
({ \
- struct pglist_data __attribute__ ((unused)) \
+ struct pglist_data __attribute_unused__ \
*__alloc_bootmem_node__pgdat = (pgdat); \
__alloc_bootmem_node(NODE_DATA(0), (x), SMP_CACHE_BYTES, \
__pa(MAX_DMA_ADDRESS)); \
})
#define alloc_bootmem_pages_node(pgdat, x) \
({ \
- struct pglist_data __attribute__ ((unused)) \
+ struct pglist_data __attribute_unused__ \
*__alloc_bootmem_node__pgdat = (pgdat); \
__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, \
__pa(MAX_DMA_ADDRESS)) \
})
#define alloc_bootmem_low_pages_node(pgdat, x) \
({ \
- struct pglist_data __attribute__ ((unused)) \
+ struct pglist_data __attribute_unused__ \
*__alloc_bootmem_node__pgdat = (pgdat); \
__alloc_bootmem_node(NODE_DATA(0), (x), PAGE_SIZE, 0); \
})
^ permalink raw reply [flat|nested] 40+ messages in thread
* [patch 08/10] mips: tlbex: use __attribute_unused__
2007-05-02 4:28 ` [patch 07/10] mips: excite: " David Rientjes
@ 2007-05-02 4:28 ` David Rientjes
2007-05-02 4:28 ` [patch 09/10] powerpc: ps3: " David Rientjes
2007-05-03 17:23 ` [patch 08/10] mips: tlbex: " Ralf Baechle
2007-05-03 17:23 ` [patch 07/10] mips: excite: " Ralf Baechle
1 sibling, 2 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: Ralf Baechle, linux-kernel
Replace function instances of __attribute__((unused)) with
__attribute_unused__.
Cc: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: David Rientjes <rientjes@google.com>
---
arch/mips/mm/tlbex.c | 36 ++++++++++++++++++------------------
1 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -35,24 +35,24 @@
#include <asm/smp.h>
#include <asm/war.h>
-static __init int __attribute__((unused)) r45k_bvahwbug(void)
+static __init int __attribute_unused__ r45k_bvahwbug(void)
{
/* XXX: We should probe for the presence of this bug, but we don't. */
return 0;
}
-static __init int __attribute__((unused)) r4k_250MHZhwbug(void)
+static __init int __attribute_unused__ r4k_250MHZhwbug(void)
{
/* XXX: We should probe for the presence of this bug, but we don't. */
return 0;
}
-static __init int __attribute__((unused)) bcm1250_m3_war(void)
+static __init int __attribute_unused__ bcm1250_m3_war(void)
{
return BCM1250_M3_WAR;
}
-static __init int __attribute__((unused)) r10000_llsc_war(void)
+static __init int __attribute_unused__ r10000_llsc_war(void)
{
return R10000_LLSC_WAR;
}
@@ -511,18 +511,18 @@ L_LA(_r3000_write_probe_fail)
#define i_ehb(buf) i_sll(buf, 0, 0, 3)
#ifdef CONFIG_64BIT
-static __init int __attribute__((unused)) in_compat_space_p(long addr)
+static __init int __attribute_unused__ in_compat_space_p(long addr)
{
/* Is this address in 32bit compat space? */
return (((addr) & 0xffffffff00000000L) == 0xffffffff00000000L);
}
-static __init int __attribute__((unused)) rel_highest(long val)
+static __init int __attribute_unused__ rel_highest(long val)
{
return ((((val + 0x800080008000L) >> 48) & 0xffff) ^ 0x8000) - 0x8000;
}
-static __init int __attribute__((unused)) rel_higher(long val)
+static __init int __attribute_unused__ rel_higher(long val)
{
return ((((val + 0x80008000L) >> 32) & 0xffff) ^ 0x8000) - 0x8000;
}
@@ -556,8 +556,8 @@ static __init void i_LA_mostly(u32 **buf, unsigned int rs, long addr)
i_lui(buf, rs, rel_hi(addr));
}
-static __init void __attribute__((unused)) i_LA(u32 **buf, unsigned int rs,
- long addr)
+static __init void __attribute_unused__ i_LA(u32 **buf, unsigned int rs,
+ long addr)
{
i_LA_mostly(buf, rs, addr);
if (rel_lo(addr))
@@ -636,8 +636,8 @@ static __init void copy_handler(struct reloc *rel, struct label *lab,
move_labels(lab, first, end, off);
}
-static __init int __attribute__((unused)) insn_has_bdelay(struct reloc *rel,
- u32 *addr)
+static __init int __attribute_unused__ insn_has_bdelay(struct reloc *rel,
+ u32 *addr)
{
for (; rel->lab != label_invalid; rel++) {
if (rel->addr == addr
@@ -650,15 +650,15 @@ static __init int __attribute__((unused)) insn_has_bdelay(struct reloc *rel,
}
/* convenience functions for labeled branches */
-static void __init __attribute__((unused))
+static void __init __attribute_unused__
il_bltz(u32 **p, struct reloc **r, unsigned int reg, enum label_id l)
{
r_mips_pc16(r, *p, l);
i_bltz(p, reg, 0);
}
-static void __init __attribute__((unused)) il_b(u32 **p, struct reloc **r,
- enum label_id l)
+static void __init __attribute_unused__ il_b(u32 **p, struct reloc **r,
+ enum label_id l)
{
r_mips_pc16(r, *p, l);
i_b(p, 0);
@@ -671,7 +671,7 @@ static void __init il_beqz(u32 **p, struct reloc **r, unsigned int reg,
i_beqz(p, reg, 0);
}
-static void __init __attribute__((unused))
+static void __init __attribute_unused__
il_beqzl(u32 **p, struct reloc **r, unsigned int reg, enum label_id l)
{
r_mips_pc16(r, *p, l);
@@ -692,7 +692,7 @@ static void __init il_bgezl(u32 **p, struct reloc **r, unsigned int reg,
i_bgezl(p, reg, 0);
}
-static void __init __attribute__((unused))
+static void __init __attribute_unused__
il_bgez(u32 **p, struct reloc **r, unsigned int reg, enum label_id l)
{
r_mips_pc16(r, *p, l);
@@ -810,7 +810,7 @@ static __initdata u32 final_handler[64];
*
* As if we MIPS hackers wouldn't know how to nop pipelines happy ...
*/
-static __init void __attribute__((unused)) build_tlb_probe_entry(u32 **p)
+static __init void __attribute_unused__ build_tlb_probe_entry(u32 **p)
{
switch (current_cpu_data.cputype) {
/* Found by experiment: R4600 v2.0 needs this, too. */
@@ -1098,7 +1098,7 @@ build_get_pgd_vmalloc64(u32 **p, struct label **l, struct reloc **r,
* TMP and PTR are scratch.
* TMP will be clobbered, PTR will hold the pgd entry.
*/
-static __init void __attribute__((unused))
+static __init void __attribute_unused__
build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr)
{
long pgdc = (long)pgd_current;
^ permalink raw reply [flat|nested] 40+ messages in thread
* [patch 05/10] frv: gdb: use __attribute_unused__
2007-05-02 4:28 ` [patch 04/10] scsi: fix ambiguous gdthtable definition David Rientjes
@ 2007-05-02 4:28 ` David Rientjes
2007-05-02 4:28 ` [patch 06/10] i386: voyager: " David Rientjes
0 siblings, 1 reply; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: David Howells, linux-kernel
Replace function instances of __attribute__((unused)) with
__attribute_unused__ to suppress warnings.
Cc: David Howells <dhowells@redhat.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
arch/frv/kernel/gdb-stub.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/frv/kernel/gdb-stub.c b/arch/frv/kernel/gdb-stub.c
--- a/arch/frv/kernel/gdb-stub.c
+++ b/arch/frv/kernel/gdb-stub.c
@@ -1195,7 +1195,7 @@ static void gdbstub_check_breakpoint(void)
/*
*
*/
-static void __attribute__((unused)) gdbstub_show_regs(void)
+static void __attribute_unused__ gdbstub_show_regs(void)
{
unsigned long *reg;
int loop;
@@ -1223,7 +1223,7 @@ static void __attribute__((unused)) gdbstub_show_regs(void)
/*
* dump debugging regs
*/
-static void __attribute__((unused)) gdbstub_dump_debugregs(void)
+static void __attribute_unused__ gdbstub_dump_debugregs(void)
{
gdbstub_printk("DCR %08lx ", __debug_status.dcr);
gdbstub_printk("BRR %08lx\n", __debug_status.brr);
@@ -2079,25 +2079,25 @@ void gdbstub_exit(int status)
* GDB wants to call malloc() and free() to allocate memory for calling kernel
* functions directly from its command line
*/
-static void *malloc(size_t size) __attribute__((unused));
+static void *malloc(size_t size) __attribute_unused__;
static void *malloc(size_t size)
{
return kmalloc(size, GFP_ATOMIC);
}
-static void free(void *p) __attribute__((unused));
+static void free(void *p) __attribute_unused__;
static void free(void *p)
{
kfree(p);
}
-static uint32_t ___get_HSR0(void) __attribute__((unused));
+static uint32_t ___get_HSR0(void) __attribute_unused__;
static uint32_t ___get_HSR0(void)
{
return __get_HSR(0);
}
-static uint32_t ___set_HSR0(uint32_t x) __attribute__((unused));
+static uint32_t ___set_HSR0(uint32_t x) __attribute_unused__;
static uint32_t ___set_HSR0(uint32_t x)
{
__set_HSR(0, x);
^ permalink raw reply [flat|nested] 40+ messages in thread
* [patch 03/10] sh: dma: use __attribute_unused__
2007-05-02 4:28 ` [patch 02/10] i386 pci: type may be unused David Rientjes
@ 2007-05-02 4:28 ` David Rientjes
2007-05-02 4:28 ` [patch 04/10] scsi: fix ambiguous gdthtable definition David Rientjes
2007-05-07 1:28 ` [patch 03/10] sh: dma: " Paul Mundt
2007-05-02 10:35 ` [patch 02/10] i386 pci: type may be unused Andi Kleen
1 sibling, 2 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 4:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: Paul Mundt, linux-kernel
There is no such thing as labeling a variable as __attribute__((used)).
Since ts_shift is not referenced in inline assembly, we assume that we're
simply suppressing a warning here if the variable is declared but
unreferenced.
Cc: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: David Rientjes <rientjes@google.com>
---
include/asm-sh/cpu-sh3/dma.h | 2 +-
include/asm-sh/cpu-sh4/dma-sh7780.h | 2 +-
include/asm-sh/cpu-sh4/dma.h | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/asm-sh/cpu-sh3/dma.h b/include/asm-sh/cpu-sh3/dma.h
--- a/include/asm-sh/cpu-sh3/dma.h
+++ b/include/asm-sh/cpu-sh3/dma.h
@@ -26,7 +26,7 @@ enum {
XMIT_SZ_128BIT,
};
-static unsigned int ts_shift[] __attribute__ ((used)) = {
+static unsigned int ts_shift[] __attribute_unused__ = {
[XMIT_SZ_8BIT] = 0,
[XMIT_SZ_16BIT] = 1,
[XMIT_SZ_32BIT] = 2,
diff --git a/include/asm-sh/cpu-sh4/dma-sh7780.h b/include/asm-sh/cpu-sh4/dma-sh7780.h
--- a/include/asm-sh/cpu-sh4/dma-sh7780.h
+++ b/include/asm-sh/cpu-sh4/dma-sh7780.h
@@ -28,7 +28,7 @@ enum {
/*
* The DMA count is defined as the number of bytes to transfer.
*/
-static unsigned int __attribute__ ((used)) ts_shift[] = {
+static unsigned int ts_shift[] __attribute_unused__ = {
[XMIT_SZ_8BIT] = 0,
[XMIT_SZ_16BIT] = 1,
[XMIT_SZ_32BIT] = 2,
diff --git a/include/asm-sh/cpu-sh4/dma.h b/include/asm-sh/cpu-sh4/dma.h
--- a/include/asm-sh/cpu-sh4/dma.h
+++ b/include/asm-sh/cpu-sh4/dma.h
@@ -53,7 +53,7 @@ enum {
/*
* The DMA count is defined as the number of bytes to transfer.
*/
-static unsigned int ts_shift[] __attribute__ ((used)) = {
+static unsigned int ts_shift[] __attribute_unused__ = {
[XMIT_SZ_64BIT] = 3,
[XMIT_SZ_8BIT] = 0,
[XMIT_SZ_16BIT] = 1,
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 4:28 [patch 01/10] compiler: define __attribute_unused__ David Rientjes
2007-05-02 4:28 ` [patch 02/10] i386 pci: type may be unused David Rientjes
@ 2007-05-02 5:17 ` Alexey Dobriyan
2007-05-02 5:53 ` David Rientjes
2007-05-02 7:02 ` Robert P. J. Day
2007-05-02 5:40 ` Rusty Russell
2 siblings, 2 replies; 40+ messages in thread
From: Alexey Dobriyan @ 2007-05-02 5:17 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, linux-kernel
On Tue, May 01, 2007 at 09:28:18PM -0700, David Rientjes wrote:
> +#define __attribute_unused__ __attribute__((unused))
Suggest __unused which is shorter and looks compiler-neutral.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 4:28 [patch 01/10] compiler: define __attribute_unused__ David Rientjes
2007-05-02 4:28 ` [patch 02/10] i386 pci: type may be unused David Rientjes
2007-05-02 5:17 ` [patch 01/10] compiler: define __attribute_unused__ Alexey Dobriyan
@ 2007-05-02 5:40 ` Rusty Russell
2007-05-02 6:06 ` David Rientjes
2 siblings, 1 reply; 40+ messages in thread
From: Rusty Russell @ 2007-05-02 5:40 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, linux-kernel
On Tue, 2007-05-01 at 21:28 -0700, David Rientjes wrote:
> For all supported versions of gcc (major version 3 and above), functions
> and variables may be declared with __attribute__((unused)) to suppress
> warnings if they are declared but unused.
Adding this macro doesn't give us anything that simply saying
"__attribute__((unused))" doesn't give. But it does add a layer of
kernel-specific indirection.
If we're going to get kernel-specific, I'd prefer to see:
__needed: suppress warning and don't discard,
__unneeded: suppress warning and might discard.
For me this fits better with how I think.
Rusty.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 5:17 ` [patch 01/10] compiler: define __attribute_unused__ Alexey Dobriyan
@ 2007-05-02 5:53 ` David Rientjes
2007-05-02 6:08 ` Andrew Morton
2007-05-02 6:33 ` WANG Cong
2007-05-02 7:02 ` Robert P. J. Day
1 sibling, 2 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 5:53 UTC (permalink / raw)
To: Alexey Dobriyan; +Cc: Andrew Morton, linux-kernel
On Wed, 2 May 2007, Alexey Dobriyan wrote:
> On Tue, May 01, 2007 at 09:28:18PM -0700, David Rientjes wrote:
> > +#define __attribute_unused__ __attribute__((unused))
>
> Suggest __unused which is shorter and looks compiler-neutral.
>
So you would also suggest renaming __attribute_used__ and all 48 of its
uses to __used?
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 5:40 ` Rusty Russell
@ 2007-05-02 6:06 ` David Rientjes
2007-05-02 6:25 ` David Rientjes
2007-05-02 6:29 ` Rusty Russell
0 siblings, 2 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 6:06 UTC (permalink / raw)
To: Rusty Russell; +Cc: Andrew Morton, linux-kernel
On Wed, 2 May 2007, Rusty Russell wrote:
> Adding this macro doesn't give us anything that simply saying
> "__attribute__((unused))" doesn't give. But it does add a layer of
> kernel-specific indirection.
>
That's obviously true since we're defining __attribute_unused__ to be
__attribute__((unused)).
We were trying to clean up the misconception that the current
__attribute_used__ was created to suppress warnings when, in fact, that
was not its purpose. It was created to emit the code for a function that
appeared to be unreferenced and only suppressed warnings as a side-effect
in gcc <3.4.
> If we're going to get kernel-specific, I'd prefer to see:
>
> __needed: suppress warning and don't discard,
That would be the current definition of __attribute_used__ (i.e. we're
saying that we use the function in inline assembly even though it appears
we don't use it at all).
> __unneeded: suppress warning and might discard.
>
That would be the patched definition of __attribute_unused__.
So let's go back to the problem this was initially supposed to fix from
arch/i386/pci/init.c:
static __init int pci_access_init(void)
{
int type = 0;
#ifdef CONFIG_PCI_DIRECT
type = pci_direct_probe();
#endif
#ifdef CONFIG_PCI_MMCONFIG
pci_mmcfg_init(type);
#endif
...
and type is unreferenced for the remainder of the function. Obviously we
could add #if defined(CONFIG_PCI_DIRECT) || defined(CONFIG_PCI_MMCONFIG)
before the declaration of 'type', but that becomes sloppy pretty quickly.
The patched version makes this:
int type __attribute_unused__ = 0;
which definitely tells you that you're using a compiler attribute that
will be attached to that automatic. In your case:
int type __unneeded = 0;
doesn't say anything in this case. It doesn't resemble any attribute that
a programmer might be familiar with and begs the question of why we've
declared it if it's truly "unneeded"?
By the way, there are tons of these instances where __attribute__((used))
needs to be added in driver code to suppress unreferenced warnings.
David
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 5:53 ` David Rientjes
@ 2007-05-02 6:08 ` Andrew Morton
2007-05-02 6:46 ` Nick Piggin
2007-05-02 6:33 ` WANG Cong
1 sibling, 1 reply; 40+ messages in thread
From: Andrew Morton @ 2007-05-02 6:08 UTC (permalink / raw)
To: David Rientjes; +Cc: Alexey Dobriyan, linux-kernel
On Tue, 1 May 2007 22:53:52 -0700 (PDT) David Rientjes <rientjes@google.com> wrote:
> On Wed, 2 May 2007, Alexey Dobriyan wrote:
>
> > On Tue, May 01, 2007 at 09:28:18PM -0700, David Rientjes wrote:
> > > +#define __attribute_unused__ __attribute__((unused))
> >
> > Suggest __unused which is shorter and looks compiler-neutral.
> >
>
> So you would also suggest renaming __attribute_used__ and all 48 of its
> uses to __used?
Or __needed or __unneeded. None of them mean much to me and I'd be forever
going back to the definition to work out what was intended.
We're still in search of a name, IMO. But once we have it, yeah, we should
update all present users. We can do that over time: retain the old and new
definitions for a while.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 6:06 ` David Rientjes
@ 2007-05-02 6:25 ` David Rientjes
2007-05-02 6:29 ` Rusty Russell
1 sibling, 0 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 6:25 UTC (permalink / raw)
To: Rusty Russell; +Cc: Andrew Morton, linux-kernel
On Tue, 1 May 2007, David Rientjes wrote:
> The patched version makes this:
>
> int type __attribute_unused__ = 0;
>
> which definitely tells you that you're using a compiler attribute that
> will be attached to that automatic. In your case:
>
> int type __unneeded = 0;
>
> doesn't say anything in this case. It doesn't resemble any attribute that
> a programmer might be familiar with and begs the question of why we've
> declared it if it's truly "unneeded"?
>
One possible way to remedy this situation is with __needed and
__maybe_unneeded.
__needed would be defined to __attribute__ ((used)), which would apply to
functions only and specify that its code needs to be emitted anyway even
though it appears to be unreferenced. This is needed for gcc >=3.4. In
gcc <3.4, this gets defined to be __attribute__ ((unused)) to simply
suppress the warning. So now all functions that are unreferenced except
in inline assembly get __needed appended.
__maybe_unneeded would be defined to __attribute__ ((unused)). It can
apply to either functions or variables to suppress the warning if they are
unused.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 6:06 ` David Rientjes
2007-05-02 6:25 ` David Rientjes
@ 2007-05-02 6:29 ` Rusty Russell
2007-05-02 6:41 ` David Rientjes
1 sibling, 1 reply; 40+ messages in thread
From: Rusty Russell @ 2007-05-02 6:29 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, linux-kernel
On Tue, 2007-05-01 at 23:06 -0700, David Rientjes wrote:
> On Wed, 2 May 2007, Rusty Russell wrote:
>
> > Adding this macro doesn't give us anything that simply saying
> > "__attribute__((unused))" doesn't give. But it does add a layer of
> > kernel-specific indirection.
> >
>
> That's obviously true since we're defining __attribute_unused__ to be
> __attribute__((unused)).
Hi David,
I'm horribly familiar with this issue, BTW, so we don't need so many
words 8)
> The patched version makes this:
>
> int type __attribute_unused__ = 0;
>
> which definitely tells you that you're using a compiler attribute that
> will be attached to that automatic. In your case:
>
> int type __unneeded = 0;
>
> doesn't say anything in this case. It doesn't resemble any attribute that
> a programmer might be familiar with and begs the question of why we've
> declared it if it's truly "unneeded"?
Your version makes one wonder why they didn't use
"__attribute__((unused))". Obviously the __attribute_unused__ macro
exists for a reason, so they wonder what's the difference between that
and the attribute? The answer: nothing.
OTOH, your point about "__unneeded" is well taken. "__needed" and
"__optional" perhaps? But their feature is *exactly* that the don't
look like the gcc attributes, hence avoid their semantic screwage.
> By the way, there are tons of these instances where __attribute__((used))
> needs to be added in driver code to suppress unreferenced warnings.
Sure; historically we refactor around it. But warnings are now so
commonplace few people care 8(
Cheers,
Rusty.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 5:53 ` David Rientjes
2007-05-02 6:08 ` Andrew Morton
@ 2007-05-02 6:33 ` WANG Cong
1 sibling, 0 replies; 40+ messages in thread
From: WANG Cong @ 2007-05-02 6:33 UTC (permalink / raw)
To: David Rientjes; +Cc: Alexey Dobriyan, Andrew Morton, linux-kernel
On Tue, May 01, 2007 at 10:53:52PM -0700, David Rientjes wrote:
>On Wed, 2 May 2007, Alexey Dobriyan wrote:
>
>> On Tue, May 01, 2007 at 09:28:18PM -0700, David Rientjes wrote:
>> > +#define __attribute_unused__ __attribute__((unused))
>>
>> Suggest __unused which is shorter and looks compiler-neutral.
>>
>
>So you would also suggest renaming __attribute_used__ and all 48 of its
>uses to __used?
I suggest. ;-p
'__attribute_unused__' is really long. I would prefer '__attribute__((unused))', since your macro doesn't let me type much less characters.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 6:29 ` Rusty Russell
@ 2007-05-02 6:41 ` David Rientjes
2007-05-02 6:52 ` Andrew Morton
2007-05-02 7:04 ` Rusty Russell
0 siblings, 2 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 6:41 UTC (permalink / raw)
To: Rusty Russell; +Cc: Andrew Morton, linux-kernel
On Wed, 2 May 2007, Rusty Russell wrote:
> OTOH, your point about "__unneeded" is well taken. "__needed" and
> "__optional" perhaps? But their feature is *exactly* that the don't
> look like the gcc attributes, hence avoid their semantic screwage.
>
Hmm, __optional doesn't sound appropriate either. Since this is going to
be defined to be __attribute__ ((unused)), it can apply to both functions
and variables. It should be applied to a function if it truly is
unreferenced within the tree (and there are several examples of this
current HEAD) and we don't want to use __needed because it still emits the
function code even though it suppresses the warning. So saying a function
that has no callers is "__optional" makes no sense since its code isn't
going to be emitted in gcc >=3.4.
What's your opinion of my __needed and __maybe_unused idea such as the
following?
compiler: define __maybe_unused
Define __maybe_unused to apply to both functions or variables as
__attribute__((unused)). This will not emit a compile-time warning when
a function or variable is declared but unreferenced.
We eventually want to change the name of __attribute_used__ to __used.
Signed-off-by: David Rientjes <rientjes@google.com>
---
include/linux/compiler-gcc.h | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -37,3 +37,4 @@
#define noinline __attribute__((noinline))
#define __attribute_pure__ __attribute__((pure))
#define __attribute_const__ __attribute__((__const__))
+#define __maybe_unused __attribute__((unused))
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 6:08 ` Andrew Morton
@ 2007-05-02 6:46 ` Nick Piggin
0 siblings, 0 replies; 40+ messages in thread
From: Nick Piggin @ 2007-05-02 6:46 UTC (permalink / raw)
To: Andrew Morton; +Cc: David Rientjes, Alexey Dobriyan, linux-kernel
Andrew Morton wrote:
> On Tue, 1 May 2007 22:53:52 -0700 (PDT) David Rientjes <rientjes@google.com> wrote:
>
>
>>On Wed, 2 May 2007, Alexey Dobriyan wrote:
>>
>>
>>>On Tue, May 01, 2007 at 09:28:18PM -0700, David Rientjes wrote:
>>>
>>>>+#define __attribute_unused__ __attribute__((unused))
>>>
>>>Suggest __unused which is shorter and looks compiler-neutral.
>>>
>>
>>So you would also suggest renaming __attribute_used__ and all 48 of its
>>uses to __used?
>
>
> Or __needed or __unneeded. None of them mean much to me and I'd be forever
> going back to the definition to work out what was intended.
>
> We're still in search of a name, IMO. But once we have it, yeah, we should
> update all present users. We can do that over time: retain the old and new
> definitions for a while.
maybe_unused?
The used attribute IMO is a bit easier to parse, so I don't think that
needs to be renamed.
Regarding the used vs needed thing, I don't think needed adds very much
and deviates from gcc terminology. Presumably if something is used it is
needed, and vice versa; similarly for unused.
--
SUSE Labs, Novell Inc.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 6:41 ` David Rientjes
@ 2007-05-02 6:52 ` Andrew Morton
2007-05-02 7:04 ` Rusty Russell
1 sibling, 0 replies; 40+ messages in thread
From: Andrew Morton @ 2007-05-02 6:52 UTC (permalink / raw)
To: David Rientjes; +Cc: Rusty Russell, linux-kernel
On Tue, 1 May 2007 23:41:34 -0700 (PDT) David Rientjes <rientjes@google.com> wrote:
> compiler: define __maybe_unused
>
> Define __maybe_unused to apply to both functions or variables as
> __attribute__((unused)). This will not emit a compile-time warning when
> a function or variable is declared but unreferenced.
>
> We eventually want to change the name of __attribute_used__ to __used.
>
> Signed-off-by: David Rientjes <rientjes@google.com>
> ---
> include/linux/compiler-gcc.h | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
> --- a/include/linux/compiler-gcc.h
> +++ b/include/linux/compiler-gcc.h
> @@ -37,3 +37,4 @@
> #define noinline __attribute__((noinline))
> #define __attribute_pure__ __attribute__((pure))
> #define __attribute_const__ __attribute__((__const__))
> +#define __maybe_unused __attribute__((unused))
Seems sane to me. We'd need a definition in compiler-intel.h too. I don't
know if ICC implements __attribute__((unused)) - probably it does.
I guess we can get by without any commentary describing __maybe_unused, but
I think __used would need one - it's pretty obscure.
+@cindex @code{used} attribute.
+@item used
+This attribute, attached to a function, means that code must be emitted
+for the function even if it appears that the function is not referenced.
+This is useful, for example, when the function is referenced only in
+inline assembly.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 5:17 ` [patch 01/10] compiler: define __attribute_unused__ Alexey Dobriyan
2007-05-02 5:53 ` David Rientjes
@ 2007-05-02 7:02 ` Robert P. J. Day
2007-05-02 7:17 ` David Rientjes
1 sibling, 1 reply; 40+ messages in thread
From: Robert P. J. Day @ 2007-05-02 7:02 UTC (permalink / raw)
To: Alexey Dobriyan; +Cc: David Rientjes, Andrew Morton, linux-kernel
On Wed, 2 May 2007, Alexey Dobriyan wrote:
> On Tue, May 01, 2007 at 09:28:18PM -0700, David Rientjes wrote:
> > +#define __attribute_unused__ __attribute__((unused))
>
> Suggest __unused which is shorter and looks compiler-neutral.
not only that, but there are numerous files that *already* use
"__unused":
$ grep -rw __unused *
... snip lots of output here ...
as well as a few files that can now have their definition of that
removed:
$ grep -r "define __unused" *
drivers/net/defxx.c:#define __unused __attribute__ ((unused))
drivers/net/declance.c:#define __unused __attribute__ ((unused))
drivers/misc/thinkpad_acpi.c:#define __unused __attribute__ ((unused))
i think "__unused" is the clear choice here.
rday
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA
http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 6:41 ` David Rientjes
2007-05-02 6:52 ` Andrew Morton
@ 2007-05-02 7:04 ` Rusty Russell
2007-05-02 7:22 ` David Rientjes
1 sibling, 1 reply; 40+ messages in thread
From: Rusty Russell @ 2007-05-02 7:04 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, linux-kernel
On Tue, 2007-05-01 at 23:41 -0700, David Rientjes wrote:
> On Wed, 2 May 2007, Rusty Russell wrote:
>
> > OTOH, your point about "__unneeded" is well taken. "__needed" and
> > "__optional" perhaps? But their feature is *exactly* that the don't
> > look like the gcc attributes, hence avoid their semantic screwage.
> >
>
> Hmm, __optional doesn't sound appropriate either. Since this is going to
> be defined to be __attribute__ ((unused)), it can apply to both functions
> and variables. It should be applied to a function if it truly is
> unreferenced within the tree (and there are several examples of this
> current HEAD) and we don't want to use __needed because it still emits the
> function code even though it suppresses the warning. So saying a function
> that has no callers is "__optional" makes no sense since its code isn't
> going to be emitted in gcc >=3.4.
Hi David,
That sounds exactly right to me! If the author says it's optional, it
might be discarded. If they say it's needed, it won't be. At least,
when I'm coding and gcc warns me something is unused, this is the
decision I have to make ("is this really needed or not?").
> What's your opinion of my __needed and __maybe_unused idea such as the
> following?
You mean __used and __maybe_unused? I still think there's a gap between
what the author wants to say ("No, you really have to keep this!" or
"OK, this might not be necessary") and the concept of "used" and
"unused".
Cheers,
Rusty.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 7:02 ` Robert P. J. Day
@ 2007-05-02 7:17 ` David Rientjes
2007-05-02 7:47 ` Robert P. J. Day
0 siblings, 1 reply; 40+ messages in thread
From: David Rientjes @ 2007-05-02 7:17 UTC (permalink / raw)
To: Robert P. J. Day; +Cc: Alexey Dobriyan, Andrew Morton, linux-kernel
On Wed, 2 May 2007, Robert P. J. Day wrote:
> not only that, but there are numerous files that *already* use
> "__unused":
>
> $ grep -rw __unused *
> ... snip lots of output here ...
>
> as well as a few files that can now have their definition of that
> removed:
>
> $ grep -r "define __unused" *
> drivers/net/defxx.c:#define __unused __attribute__ ((unused))
> drivers/net/declance.c:#define __unused __attribute__ ((unused))
> drivers/misc/thinkpad_acpi.c:#define __unused __attribute__ ((unused))
>
> i think "__unused" is the clear choice here.
>
No, it's not the clear choice. This would apply to both functions and
variables so the suppress a compiler warning for a variable whose use
depends on preprocessor macros, I would have to use __unused even though
it may be used.
Hence, I recommend __maybe_unused.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 7:04 ` Rusty Russell
@ 2007-05-02 7:22 ` David Rientjes
2007-05-02 7:51 ` Rusty Russell
2007-05-02 14:55 ` Adrian Bunk
0 siblings, 2 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 7:22 UTC (permalink / raw)
To: Rusty Russell; +Cc: Andrew Morton, linux-kernel
On Wed, 2 May 2007, Rusty Russell wrote:
> That sounds exactly right to me! If the author says it's optional, it
> might be discarded. If they say it's needed, it won't be. At least,
> when I'm coding and gcc warns me something is unused, this is the
> decision I have to make ("is this really needed or not?").
>
Hi Rusty,
There are many instances in the tree of functions that have no callers
whatsoever because they've been commented out temporarily, disabled
through configuration, etc. These are marked __attribute__ ((unused))
right now so that the compiler doesn't emit a warning (and with gcc >=3.4
it doesn't even emit code for them). What's __optional about these
functions if they have no callers? They're unused. So we cover all our
bases with __maybe_unused.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 7:17 ` David Rientjes
@ 2007-05-02 7:47 ` Robert P. J. Day
0 siblings, 0 replies; 40+ messages in thread
From: Robert P. J. Day @ 2007-05-02 7:47 UTC (permalink / raw)
To: David Rientjes; +Cc: Alexey Dobriyan, Andrew Morton, linux-kernel
On Wed, 2 May 2007, David Rientjes wrote:
> On Wed, 2 May 2007, Robert P. J. Day wrote:
>
> > not only that, but there are numerous files that *already* use
> > "__unused":
> >
> > $ grep -rw __unused *
> > ... snip lots of output here ...
> >
> > as well as a few files that can now have their definition of that
> > removed:
> >
> > $ grep -r "define __unused" *
> > drivers/net/defxx.c:#define __unused __attribute__ ((unused))
> > drivers/net/declance.c:#define __unused __attribute__ ((unused))
> > drivers/misc/thinkpad_acpi.c:#define __unused __attribute__ ((unused))
> >
> > i think "__unused" is the clear choice here.
> >
>
> No, it's not the clear choice. This would apply to both functions
> and variables so the suppress a compiler warning for a variable
> whose use depends on preprocessor macros, I would have to use
> __unused even though it may be used.
>
> Hence, I recommend __maybe_unused.
sorry, i worded that badly. i suggested that "__unused" was the clear
choice only because it already had significant historical precedent
and people on this list are notorious for not liking major, disruptive
changes.
if no one objects to changing the existing occurrences, then no
problem.
rday
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA
http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 7:22 ` David Rientjes
@ 2007-05-02 7:51 ` Rusty Russell
2007-05-02 14:55 ` Adrian Bunk
1 sibling, 0 replies; 40+ messages in thread
From: Rusty Russell @ 2007-05-02 7:51 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, linux-kernel
On Wed, 2007-05-02 at 00:22 -0700, David Rientjes wrote:
> On Wed, 2 May 2007, Rusty Russell wrote:
>
> > That sounds exactly right to me! If the author says it's optional, it
> > might be discarded. If they say it's needed, it won't be. At least,
> > when I'm coding and gcc warns me something is unused, this is the
> > decision I have to make ("is this really needed or not?").
> >
>
> Hi Rusty,
>
> There are many instances in the tree of functions that have no callers
> whatsoever because they've been commented out temporarily, disabled
> through configuration, etc. These are marked __attribute__ ((unused))
> right now so that the compiler doesn't emit a warning (and with gcc >=3.4
> it doesn't even emit code for them). What's __optional about these
> functions if they have no callers? They're unused. So we cover all our
> bases with __maybe_unused.
Hi David,
If they're really unused, they should be deleted, not
warning-suppressed. The interesting case is where they may or may not
be used because of config options. ie. they're optional.
__maybe_unused does not, at a glance, tell me that it's OK for gcc to
drop them. __optional comes closer. However, it's better than
__unused, so I'll stop now 8)
Thanks,
Rusty.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 02/10] i386 pci: type may be unused
2007-05-02 4:28 ` [patch 02/10] i386 pci: type may be unused David Rientjes
2007-05-02 4:28 ` [patch 03/10] sh: dma: use __attribute_unused__ David Rientjes
@ 2007-05-02 10:35 ` Andi Kleen
2007-05-02 17:05 ` David Rientjes
1 sibling, 1 reply; 40+ messages in thread
From: Andi Kleen @ 2007-05-02 10:35 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, linux-kernel
On Wednesday 02 May 2007 06:28:22 David Rientjes wrote:
> In the case of !CONFIG_PCI_DIRECT && !CONFIG_PCI_MMCONFIG, type is
> unreferened.
The patch didn't compile on i386 defconfig. Fixed now but please
compile test future patches.
-Andi
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 7:22 ` David Rientjes
2007-05-02 7:51 ` Rusty Russell
@ 2007-05-02 14:55 ` Adrian Bunk
2007-05-02 15:05 ` Adrian Bunk
1 sibling, 1 reply; 40+ messages in thread
From: Adrian Bunk @ 2007-05-02 14:55 UTC (permalink / raw)
To: David Rientjes; +Cc: Rusty Russell, Andrew Morton, linux-kernel
On Wed, May 02, 2007 at 12:22:24AM -0700, David Rientjes wrote:
> On Wed, 2 May 2007, Rusty Russell wrote:
>
> > That sounds exactly right to me! If the author says it's optional, it
> > might be discarded. If they say it's needed, it won't be. At least,
> > when I'm coding and gcc warns me something is unused, this is the
> > decision I have to make ("is this really needed or not?").
> >
>
> Hi Rusty,
>
> There are many instances in the tree of functions that have no callers
> whatsoever because they've been commented out temporarily, disabled
> through configuration, etc. These are marked __attribute__ ((unused))
> right now so that the compiler doesn't emit a warning (and with gcc >=3.4
> it doesn't even emit code for them). What's __optional about these
> functions if they have no callers? They're unused. So we cover all our
> bases with __maybe_unused.
"many ... are marked __attribute__ ((unused))" is not true:
$ grep -r __attribute_used__ * | wc -l
60
$
static inline functions don't result in warnings.
And for global functions, it is technically impossible for gcc to figure
out whether a function has any users.
Unused static non-inline functions are the only functions resulting in
warnings when being unused.
If we don't want gcc to emit warnings for such, we could disable them
globally.
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 14:55 ` Adrian Bunk
@ 2007-05-02 15:05 ` Adrian Bunk
2007-05-02 17:16 ` David Rientjes
0 siblings, 1 reply; 40+ messages in thread
From: Adrian Bunk @ 2007-05-02 15:05 UTC (permalink / raw)
To: David Rientjes; +Cc: Rusty Russell, Andrew Morton, linux-kernel
On Wed, May 02, 2007 at 04:55:50PM +0200, Adrian Bunk wrote:
>
> "many ... are marked __attribute__ ((unused))" is not true:
> $ grep -r __attribute_used__ * | wc -l
> 60
> $
Sorry, my fault - I confused used and unused.
>...
> Unused static non-inline functions are the only functions resulting in
> warnings when being unused.
> If we don't want gcc to emit warnings for such, we could disable them
> globally.
But this point still stands:
If we don't want any warnings with CONFIG_PCI=n, CONFIG_SYSFS=n or
CONFIG_PROC_FS=n, we'd have to annotate _many_ functions.
If the lonterm goal is to compile the kernel with -Werror then we need
-Wno-unused-function, not annotating individual functions.
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 09/10] powerpc: ps3: use __attribute_unused__
2007-05-02 4:28 ` [patch 09/10] powerpc: ps3: " David Rientjes
2007-05-02 4:28 ` [patch 10/10] i386 mmzone: " David Rientjes
@ 2007-05-02 15:42 ` Geoff Levand
1 sibling, 0 replies; 40+ messages in thread
From: Geoff Levand @ 2007-05-02 15:42 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, linux-kernel
David Rientjes wrote:
> Replace function instances of __attribute__ ((unused)) with
> __attribute_unused__.
>
> Cc: Geoff Levand <geoffrey.levand@am.sony.com>
> Signed-off-by: David Rientjes <rientjes@google.com>
> ---
> arch/powerpc/platforms/ps3/interrupt.c | 4 ++--
> arch/powerpc/platforms/ps3/time.c | 2 +-
> 2 files changed, 3 insertions(+), 3 deletions(-)
Please give a better comment that explains why this change is
desirable.
-Geoff
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 02/10] i386 pci: type may be unused
2007-05-02 10:35 ` [patch 02/10] i386 pci: type may be unused Andi Kleen
@ 2007-05-02 17:05 ` David Rientjes
0 siblings, 0 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-02 17:05 UTC (permalink / raw)
To: Andi Kleen; +Cc: Andrew Morton, linux-kernel
On Wed, 2 May 2007, Andi Kleen wrote:
> On Wednesday 02 May 2007 06:28:22 David Rientjes wrote:
> > In the case of !CONFIG_PCI_DIRECT && !CONFIG_PCI_MMCONFIG, type is
> > unreferened.
>
> The patch didn't compile on i386 defconfig. Fixed now but please
> compile test future patches.
>
That's because it's dependent on the first patch in the series.
If it was fixed by replacing __attribute_unused__ with
__attribute__((unused)), then that's fine. __attribute_used__ would be
wrong, however.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 15:05 ` Adrian Bunk
@ 2007-05-02 17:16 ` David Rientjes
2007-05-03 17:51 ` Adrian Bunk
0 siblings, 1 reply; 40+ messages in thread
From: David Rientjes @ 2007-05-02 17:16 UTC (permalink / raw)
To: Adrian Bunk; +Cc: Rusty Russell, Andrew Morton, linux-kernel
On Wed, 2 May 2007, Adrian Bunk wrote:
> If we don't want any warnings with CONFIG_PCI=n, CONFIG_SYSFS=n or
> CONFIG_PROC_FS=n, we'd have to annotate _many_ functions.
>
> If the lonterm goal is to compile the kernel with -Werror then we need
> -Wno-unused-function, not annotating individual functions.
>
That's only addressing part of the issue. What about automatic or static
external variables that are declared but may go unreferenced depending on
preprocessor macros? You need to annotate them with __attribute__
((unused)) to suppress compiler warnings. Globally disabling such
warnings would eventually cause unused code to go unnoticed.
David
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 07/10] mips: excite: use __attribute_unused__
2007-05-02 4:28 ` [patch 07/10] mips: excite: " David Rientjes
2007-05-02 4:28 ` [patch 08/10] mips: tlbex: " David Rientjes
@ 2007-05-03 17:23 ` Ralf Baechle
1 sibling, 0 replies; 40+ messages in thread
From: Ralf Baechle @ 2007-05-03 17:23 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, Thomas Koeller, linux-kernel
On Tue, May 01, 2007 at 09:28:33PM -0700, David Rientjes wrote:
> Replace variable instances of __attribute__((unused)) with
> __attribute_unused__.
>
> Cc: Ralf Baechle <ralf@linux-mips.org>
> Cc: Thomas Koeller <thomas.koeller@baslerweb.com>
> Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Ralf
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 08/10] mips: tlbex: use __attribute_unused__
2007-05-02 4:28 ` [patch 08/10] mips: tlbex: " David Rientjes
2007-05-02 4:28 ` [patch 09/10] powerpc: ps3: " David Rientjes
@ 2007-05-03 17:23 ` Ralf Baechle
1 sibling, 0 replies; 40+ messages in thread
From: Ralf Baechle @ 2007-05-03 17:23 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, linux-kernel
On Tue, May 01, 2007 at 09:28:45PM -0700, David Rientjes wrote:
> Replace function instances of __attribute__((unused)) with
> __attribute_unused__.
>
> Cc: Ralf Baechle <ralf@linux-mips.org>
> Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Ralf
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-02 17:16 ` David Rientjes
@ 2007-05-03 17:51 ` Adrian Bunk
2007-05-03 18:56 ` David Rientjes
0 siblings, 1 reply; 40+ messages in thread
From: Adrian Bunk @ 2007-05-03 17:51 UTC (permalink / raw)
To: David Rientjes; +Cc: Rusty Russell, Andrew Morton, linux-kernel
On Wed, May 02, 2007 at 10:16:15AM -0700, David Rientjes wrote:
> On Wed, 2 May 2007, Adrian Bunk wrote:
>
> > If we don't want any warnings with CONFIG_PCI=n, CONFIG_SYSFS=n or
> > CONFIG_PROC_FS=n, we'd have to annotate _many_ functions.
> >
> > If the lonterm goal is to compile the kernel with -Werror then we need
> > -Wno-unused-function, not annotating individual functions.
>
> That's only addressing part of the issue. What about automatic or static
> external variables that are declared but may go unreferenced depending on
This is only about static code. For non-static code it would be
impossible for gcc to issue warnings.
> preprocessor macros? You need to annotate them with __attribute__
> ((unused)) to suppress compiler warnings. Globally disabling such
> warnings would eventually cause unused code to go unnoticed.
But looking at a kernel build it seems there are far few warnings than I
remembered, so it might actually be possible to annotate all code
accordingly.
> David
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-03 17:51 ` Adrian Bunk
@ 2007-05-03 18:56 ` David Rientjes
2007-05-03 19:05 ` Adrian Bunk
0 siblings, 1 reply; 40+ messages in thread
From: David Rientjes @ 2007-05-03 18:56 UTC (permalink / raw)
To: Adrian Bunk; +Cc: Rusty Russell, Andrew Morton, linux-kernel
On Thu, 3 May 2007, Adrian Bunk wrote:
> > That's only addressing part of the issue. What about automatic or static
> > external variables that are declared but may go unreferenced depending on
>
> This is only about static code. For non-static code it would be
> impossible for gcc to issue warnings.
>
static external variables are certainly still static code and gcc issues
the proper warnings if I do:
static struct bootnode nodes[MAX_NUMNODES];
and I never reference nodes.
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-03 18:56 ` David Rientjes
@ 2007-05-03 19:05 ` Adrian Bunk
2007-05-03 19:24 ` David Rientjes
0 siblings, 1 reply; 40+ messages in thread
From: Adrian Bunk @ 2007-05-03 19:05 UTC (permalink / raw)
To: David Rientjes; +Cc: Rusty Russell, Andrew Morton, linux-kernel
On Thu, May 03, 2007 at 11:56:34AM -0700, David Rientjes wrote:
> On Thu, 3 May 2007, Adrian Bunk wrote:
>
> > > That's only addressing part of the issue. What about automatic or static
> > > external variables that are declared but may go unreferenced depending on
> >
> > This is only about static code. For non-static code it would be
> > impossible for gcc to issue warnings.
>
> static external variables are certainly still static code and gcc issues
> the proper warnings if I do:
>
> static struct bootnode nodes[MAX_NUMNODES];
>
> and I never reference nodes.
No disagreement.
But you said:
What about automatic or static external variables that are declared but ...
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 01/10] compiler: define __attribute_unused__
2007-05-03 19:05 ` Adrian Bunk
@ 2007-05-03 19:24 ` David Rientjes
0 siblings, 0 replies; 40+ messages in thread
From: David Rientjes @ 2007-05-03 19:24 UTC (permalink / raw)
To: Adrian Bunk; +Cc: Rusty Russell, Andrew Morton, linux-kernel
On Thu, 3 May 2007, Adrian Bunk wrote:
> > static external variables are certainly still static code and gcc issues
> > the proper warnings if I do:
> >
> > static struct bootnode nodes[MAX_NUMNODES];
> >
> > and I never reference nodes.
>
> No disagreement.
>
> But you said:
> What about automatic or static external variables that are declared but ...
>
Ahh, I see the problem. I was talking about "automatic variables" and
"static external variables" implicitly, both of which emit compiler
warnings if they are unreferenced as we saw in the arch/i386/pci/init.c
case and the example above, respectively.
The only advantage this gives us as opposed to just removing an
unreferenced variable completely is the case when its usage depends on
multiple preprocessor macros. Like in the arch/i386/pci/init.c example,
the use of 'type' depends on CONFIG_PCI_DIRECT or CONFIG_PCI_MMCONFIG. It
gets sloppy pretty quickly when we're adding
#if defined(CONFIG_PCI_DIRECT) || defined(CONFIG_PCI_MMCONFIG)
around the variable declarations. Unfortunately we still have the
drawback of perhaps leaving abandoned declarations in the code but now
there will be an easy way to detect it: defining __maybe_unused and __used
to be empty. Then we won't have hardcoded __attribute__ ((unused)) text
sprinkled around the tree that would require examination on an individual
basis.
David
^ permalink raw reply [flat|nested] 40+ messages in thread
* Re: [patch 03/10] sh: dma: use __attribute_unused__
2007-05-02 4:28 ` [patch 03/10] sh: dma: use __attribute_unused__ David Rientjes
2007-05-02 4:28 ` [patch 04/10] scsi: fix ambiguous gdthtable definition David Rientjes
@ 2007-05-07 1:28 ` Paul Mundt
1 sibling, 0 replies; 40+ messages in thread
From: Paul Mundt @ 2007-05-07 1:28 UTC (permalink / raw)
To: David Rientjes; +Cc: Andrew Morton, linux-kernel
On Tue, May 01, 2007 at 09:28:56PM -0700, David Rientjes wrote:
> There is no such thing as labeling a variable as __attribute__((used)).
> Since ts_shift is not referenced in inline assembly, we assume that we're
> simply suppressing a warning here if the variable is declared but
> unreferenced.
>
> Cc: Paul Mundt <lethal@linux-sh.org>
> Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Paul Mundt <lethal@linux-sh.org>
^ permalink raw reply [flat|nested] 40+ messages in thread
end of thread, other threads:[~2007-05-07 1:28 UTC | newest]
Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-05-02 4:28 [patch 01/10] compiler: define __attribute_unused__ David Rientjes
2007-05-02 4:28 ` [patch 02/10] i386 pci: type may be unused David Rientjes
2007-05-02 4:28 ` [patch 03/10] sh: dma: use __attribute_unused__ David Rientjes
2007-05-02 4:28 ` [patch 04/10] scsi: fix ambiguous gdthtable definition David Rientjes
2007-05-02 4:28 ` [patch 05/10] frv: gdb: use __attribute_unused__ David Rientjes
2007-05-02 4:28 ` [patch 06/10] i386: voyager: " David Rientjes
2007-05-02 4:28 ` [patch 07/10] mips: excite: " David Rientjes
2007-05-02 4:28 ` [patch 08/10] mips: tlbex: " David Rientjes
2007-05-02 4:28 ` [patch 09/10] powerpc: ps3: " David Rientjes
2007-05-02 4:28 ` [patch 10/10] i386 mmzone: " David Rientjes
2007-05-02 15:42 ` [patch 09/10] powerpc: ps3: " Geoff Levand
2007-05-03 17:23 ` [patch 08/10] mips: tlbex: " Ralf Baechle
2007-05-03 17:23 ` [patch 07/10] mips: excite: " Ralf Baechle
2007-05-07 1:28 ` [patch 03/10] sh: dma: " Paul Mundt
2007-05-02 10:35 ` [patch 02/10] i386 pci: type may be unused Andi Kleen
2007-05-02 17:05 ` David Rientjes
2007-05-02 5:17 ` [patch 01/10] compiler: define __attribute_unused__ Alexey Dobriyan
2007-05-02 5:53 ` David Rientjes
2007-05-02 6:08 ` Andrew Morton
2007-05-02 6:46 ` Nick Piggin
2007-05-02 6:33 ` WANG Cong
2007-05-02 7:02 ` Robert P. J. Day
2007-05-02 7:17 ` David Rientjes
2007-05-02 7:47 ` Robert P. J. Day
2007-05-02 5:40 ` Rusty Russell
2007-05-02 6:06 ` David Rientjes
2007-05-02 6:25 ` David Rientjes
2007-05-02 6:29 ` Rusty Russell
2007-05-02 6:41 ` David Rientjes
2007-05-02 6:52 ` Andrew Morton
2007-05-02 7:04 ` Rusty Russell
2007-05-02 7:22 ` David Rientjes
2007-05-02 7:51 ` Rusty Russell
2007-05-02 14:55 ` Adrian Bunk
2007-05-02 15:05 ` Adrian Bunk
2007-05-02 17:16 ` David Rientjes
2007-05-03 17:51 ` Adrian Bunk
2007-05-03 18:56 ` David Rientjes
2007-05-03 19:05 ` Adrian Bunk
2007-05-03 19:24 ` David Rientjes
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).