[PATCH v2 5/8] timer: Allow delays with a 32-bit microsecond timer

Simon Glass sjg at chromium.org
Fri Jul 10 02:56:39 CEST 2020


Hi Bin,

On Thu, 9 Jul 2020 at 18:44, Bin Meng <bmeng.cn at gmail.com> wrote:
>
> Hi Simon,
>
> On Fri, Jul 10, 2020 at 8:28 AM Simon Glass <sjg at chromium.org> wrote:
> >
> > Hi Bin,
> >
> > On Tue, 7 Jul 2020 at 01:09, Bin Meng <bmeng.cn at gmail.com> wrote:
> > >
> > > Hi Simon,
> > >
> > > On Sat, Jul 4, 2020 at 12:38 AM Simon Glass <sjg at chromium.org> wrote:
> > > >
> > > > The current get_timer_us() uses 64-bit arithmetic. When implementing
> > > > microsecond-level timeouts, 32-bits is plenty. Add a new function to
> > > > support this.
> > > >
> > > > Signed-off-by: Simon Glass <sjg at chromium.org>
> > > > ---
> > > >
> > > > (no changes since v1)
> > > >
> > > >  include/time.h | 11 +++++++++++
> > > >  lib/time.c     |  5 +++++
> > > >  2 files changed, 16 insertions(+)
> > > >
> > > > diff --git a/include/time.h b/include/time.h
> > > > index e99f9c8012..434e63b075 100644
> > > > --- a/include/time.h
> > > > +++ b/include/time.h
> > > > @@ -17,6 +17,17 @@ unsigned long get_timer(unsigned long base);
> > > >  unsigned long timer_get_us(void);
> > > >  uint64_t get_timer_us(uint64_t base);
> > > >
> > > > +/**
> > > > + * get_timer_us_long() - Get the number of elapsed microseconds
> > > > + *
> > > > + * This uses 32-bit arithmetic on 32-bit machines, which is enough to handle
> > > > + * delays of over an hour.
> > > > + *
> > > > + *@base: Base time to consider
> > > > + *@return elapsed time since @base
> > > > + */
> > > > +unsigned long get_timer_us_long(unsigned long base);
> > >
> > > The function name does not clear indicates this is 32-bit value
> > > because unsigned long is still 64-bit when building for 64-bit U-Boot.
> >
> > Yes that's right. My purpose is to use the natural long time.
> >
> > Shall I update the commit message?
>
> I think we need to explicitly declare the return value to u32 or
> uint32_t to make a 32-bit variant function.

But that is not my objective here. I just want something that is
efficient on both 32- and 64-bit systems.

Regards,
Simon


More information about the U-Boot mailing list