Re: [PATCH 02/22 -v7] Add basic support for gcc profilerinstrumentation

From: Peter Zijlstra
Date: Wed Jan 30 2008 - 03:48:21 EST



On Tue, 2008-01-29 at 22:15 -0500, Steven Rostedt wrote:

> +int register_mcount_function(struct mcount_ops *ops)
> +{
> + unsigned long flags;
> +
> + spin_lock_irqsave(&mcount_func_lock, flags);
> + ops->next = mcount_list;
> + /* must have next seen before we update the list pointer */
> + smp_wmb();

That comment does not explain which race it closes; this is esp
important as there is no paired barrier to give hints.

> + mcount_list = ops;
> + /*
> + * For one func, simply call it directly.
> + * For more than one func, call the chain.
> + */
> + if (ops->next == &mcount_list_end)
> + mcount_trace_function = ops->func;
> + else
> + mcount_trace_function = mcount_list_func;
> + spin_unlock_irqrestore(&mcount_func_lock, flags);
> +
> + return 0;
> +}


--
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/