Re: Converting struct timer_list callback argument to struct timer_list *

From: Christoph Hellwig
Date: Sun Sep 03 2017 - 03:38:38 EST


On Fri, Sep 01, 2017 at 09:24:22AM -0700, Kees Cook wrote:
> #define list_entry(ptr, type, member) container_of(ptr, type, member)
> #define rb_entry(ptr, type, member) container_of(ptr, type, member)
>
> The use of a "timer_entry()" at the start of callbacks repeats the
> struct name, which I find irritating (and it usually results in split
> lines). For example:
>
> #define timer_entry(ptr, type, member) container_of(ptr, type, member)
>
> -static void snd_card_asihpi_timer_function(unsigned long data)
> +static void snd_card_asihpi_timer_function(struct timer_list *t)
> {
> - struct snd_card_asihpi_pcm *dpcm = (struct snd_card_asihpi_pcm *)data;
> + struct snd_card_asihpi_pcm *dpcm =
> + timer_entry(t, struct
> snd_card_asihpi_pcm, timer);
>
> I prefer to tie this directly to the variable, so how about renaming
> TIMER_CONTAINER to timer_of():

The TIMER_CONTAINER semantics are more useful indeed, and I which
we'd have a general purpose variant of that. But I was complaining
about the name anyway. timer_of sounds ok, but timer_entry still sounds
a bit more descriptive. As for the split lines: you'll generally
get a lot of these, even TIMER_CONTAINER has a quite a few. I generally
prefer to move everything right of the = to the next line as that
becomes a lot more redable.