Re: [PATCH] [v2] Documentation: document ktime_get_*() APIs

From: Jonathan Cameron
Date: Sun Jul 15 2018 - 05:27:38 EST


On Fri, 13 Jul 2018 09:24:52 +0200
Linus Walleij <linus.walleij@xxxxxxxxxx> wrote:

> On Tue, Jul 10, 2018 at 4:48 PM Arnd Bergmann <arnd@xxxxxxxx> wrote:
>
> > As Dave Chinner points out, we don't have a proper documentation for the
> > ktime_get() family of interfaces, making it rather unclear which of the
> > over 30 (!) interfaces one should actually use in a driver or elsewhere
> > in the kernel.
> >
> > I wrote up an explanation from how I personally see the interfaces,
> > documenting what each of the functions do and hopefully making it a bit
> > clearer which should be used where.
> >
> > This is the first time I tried writing .rst format documentation, so
> > in addition to any mistakes in the content, I probably also introduce
> > nonstandard formatting ;-)
> >
> > I first tried to add an extra section to
> > Documentation/timers/timekeeping.txt, but this is currently not included
> > in the generated API, and it seems useful to have the API docs as part
> > of what gets generated in
> > https://www.kernel.org/doc/html/latest/core-api/index.html#core-utilities
> > instead, so I started a new file there.
> >
> > I also considered adding the documentation inline in the
> > include/linux/timekeeping.h header, but couldn't figure out how to do
> > that in a way that would result both in helpful inline comments as
> > well as readable html output, so I settled for the latter, with
> > a small note pointing to it from the header.
> >
> > Cc: Dave Chinner <david@xxxxxxxxxxxxx>
> > Cc: John Stultz <john.stultz@xxxxxxxxxx>
> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> > Cc: Stephen Boyd <sboyd@xxxxxxxxxx>
> > Cc: Linus Walleij <linus.walleij@xxxxxxxxxx>
> > Tested-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
> > Reviewed-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
> > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> > ---
> > v2: minor changes suggested by Randy
>
> Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
>
> This brings into question commit bc2b7dab629a5
> "iio:core: timestamping clock selection support"
> that has bothered me for some time. Now that is ABI, but
> we might be able to do some recommendations based on the
> time base and have a sensible default moving forward.
>
> As I want to make that clock base parsing similar for GPIO
> I first thought it was a good idea to support the same clocks,
> but now it seems like a bad idea.
>
> IIRC you told me to simply hammer down the clock that
> makes the most sense.
>
> At the same time userspace libraries (such as GNU radio) will
> be confused if they can't match the timestamping clocks,
> as correlating GPIO and IIO events is something they will
> want to do. And I guess these clocks are there for a reason.
>
> So asking Lars-Peter and Gregor: from a userspace point
> of view, what makes most sense for the usecases you
> have seen? Having one consistent time base or all of these
> as we currently have? Different clocks under different
> circumstances?

Yeah, this mess in IIO was all a silly mistake I made years
ago, though we may have messed up how to 'fix' it.

Basically I should probably have gone with a monotonic clock
but I didn't. This leads to some really odd algorithm issues
when the non monotonic clocks are updated.

Still when we originally looked at it, the answer is that there
are different 'right' choices depending largely on what timescales
you are working at.

There are systems where you want to sample fairly infrequently enough
that you are not going to see the non monotonic jumps, and where your
biggest requirement is absolute precision on the time stamp. In these
you would be frequently updating your clock.

Others are running at high speed and you need a best estimate smoothed
result that doesn't ever go backwards.

The right answer was probably to limit it to a couple of 'almost'
right choices - but that's hind sight. Certainly don't copy this
without a lot of thought!

Now I wonder which of those clocks choices we can remove without anyone
ever noticing?

Jonathan

>
> Yours,
> Linus Walleij
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html