Subject: [PATCH] Conditional compilation updates in kernel/lockdep.c

This patch removes the following warning:

kernel/lockdep.c:580: warning: ‘print_lock_dependencies’ defined but not used

Now functions print_lock_dependencies and print_lock_class_header are now
compiled only if both CONFIG_TRACE_IRQFLAGS and CONFIG_PROVE_LOCKING
are defined; function lockdep_dependency_visit and variable
lockdep_dependency_gen_id are compiled only if CONFIG_PROVE_LOCKING
is defined

Signed-off-by: Luis Henriques <[email protected]>
---
kernel/lockdep.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 46a4041..f2eebc7 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -381,6 +381,7 @@ unsigned int nr_process_chains;
unsigned int max_lockdep_depth;
unsigned int max_recursion_depth;

+#ifdef CONFIG_PROVE_LOCKING
static unsigned int lockdep_dependency_gen_id;

static bool lockdep_dependency_visit(struct lock_class *source,
@@ -393,6 +394,7 @@ static bool lockdep_dependency_visit(struct lock_class *source,
source->dep_gen_id = lockdep_dependency_gen_id;
return false;
}
+#endif

#ifdef CONFIG_DEBUG_LOCKDEP
/*
@@ -549,6 +551,8 @@ static void lockdep_print_held_locks(struct task_struct *curr)
}
}

+#if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_PROVE_LOCKING)
+
static void print_lock_class_header(struct lock_class *class, int depth)
{
int bit;
@@ -599,6 +603,7 @@ static void print_lock_dependencies(struct lock_class *class, int depth)
printk("\n");
}
}
+#endif

static void print_kernel_version(void)
{
--
Luis Henriques


2008-12-16 21:04:00

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] Conditional compilation updates in kernel/lockdep.c


* Luis Henriques <[email protected]> wrote:

> This patch removes the following warning:
>
> kernel/lockdep.c:580: warning: ‘print_lock_dependencies’ defined but not used
>
> Now functions print_lock_dependencies and print_lock_class_header are now
> compiled only if both CONFIG_TRACE_IRQFLAGS and CONFIG_PROVE_LOCKING
> are defined; function lockdep_dependency_visit and variable
> lockdep_dependency_gen_id are compiled only if CONFIG_PROVE_LOCKING
> is defined
>
> Signed-off-by: Luis Henriques <[email protected]>
> ---
> kernel/lockdep.c | 5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/kernel/lockdep.c b/kernel/lockdep.c
> index 46a4041..f2eebc7 100644
> --- a/kernel/lockdep.c
> +++ b/kernel/lockdep.c
> @@ -381,6 +381,7 @@ unsigned int nr_process_chains;
> unsigned int max_lockdep_depth;
> unsigned int max_recursion_depth;
>
> +#ifdef CONFIG_PROVE_LOCKING
> static unsigned int lockdep_dependency_gen_id;
>
> static bool lockdep_dependency_visit(struct lock_class *source,
> @@ -393,6 +394,7 @@ static bool lockdep_dependency_visit(struct lock_class *source,
> source->dep_gen_id = lockdep_dependency_gen_id;
> return false;
> }
> +#endif
>
> #ifdef CONFIG_DEBUG_LOCKDEP
> /*
> @@ -549,6 +551,8 @@ static void lockdep_print_held_locks(struct task_struct *curr)
> }
> }
>
> +#if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_PROVE_LOCKING)
> +
> static void print_lock_class_header(struct lock_class *class, int depth)
> {
> int bit;
> @@ -599,6 +603,7 @@ static void print_lock_dependencies(struct lock_class *class, int depth)
> printk("\n");
> }
> }
> +#endif

hm, these many #ifdefs are ugly. Could we somehow improve the structure of
this code by moving bits of it out into separate .c files, or by merging
needless Kconfig options?

Ingo