Re: [PATCH 1/5] perf: Wrap perf_lock_task_context using__cond_lock()

From: Frederic Weisbecker
Date: Mon Sep 27 2010 - 09:46:53 EST


On Mon, Sep 27, 2010 at 07:39:53PM +0900, Namhyung Kim wrote:
> perf_lock_task_context() conditionally grabs ctx->lock in case of
> returning non-NULL. Rename and wrap it using __cond_lock to make
> sparse happy.
>
> Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxx>
> ---
> kernel/perf_event.c | 10 +++++++++-
> 1 files changed, 9 insertions(+), 1 deletions(-)
>
> diff --git a/kernel/perf_event.c b/kernel/perf_event.c
> index db5b560..c058a42 100644
> --- a/kernel/perf_event.c
> +++ b/kernel/perf_event.c
> @@ -151,7 +151,7 @@ static u64 primary_event_id(struct perf_event *event)
> * the context could get moved to another task.
> */
> static struct perf_event_context *
> -perf_lock_task_context(struct task_struct *task, unsigned long *flags)
> +__perf_lock_task_context(struct task_struct *task, unsigned long *flags)
> {
> struct perf_event_context *ctx;
>
> @@ -184,6 +184,14 @@ perf_lock_task_context(struct task_struct *task, unsigned long *flags)
> return ctx;
> }
>
> +static inline struct perf_event_context *
> +perf_lock_task_context(struct task_struct *task, unsigned long *flags)
> +{
> + struct perf_event_context *ctx;
> + __cond_lock(&ctx->lock, ctx = __perf_lock_task_context(task, flags));
> + return ctx;
> +}



That's a pity we need to make the code less readable just to make a tool
happy.

How do functions like mutex_lock_interruptible() that may
or may not lock? I don't see __cond_lock adds there.

Thanks.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/