Re: [PATCH resend v1 1/3] units: Add SI metric prefix definitions

From: Andy Shevchenko
Date: Mon Jun 07 2021 - 10:35:17 EST


On Mon, Jun 07, 2021 at 05:24:44PM +0300, Andy Shevchenko wrote:
> On Mon, Jun 07, 2021 at 03:33:31PM +0300, Jarkko Nikula wrote:
> > On 6/3/21 7:04 PM, Andy Shevchenko wrote:
> > > Sometimes it's useful to have well-defined SI metric prefix to be used
> > > to self-describe the formulas or equations.
> > >
> > > List most popular ones in the units.h.
>
> ...
>
> > > +/* Metric prefixes in accordance with Système international (d'unités) */
> > > +#define PETA 1000000000000000LL
> > > +#define TERA 1000000000000LL
> > > +#define GIGA 1000000000L
> > > +#define MEGA 1000000L
> > > +#define KILO 1000L
> > > +#define HECTO 100L
> > > +#define DECA 10L
> > > +#define DECI 10L
> > > +#define CENTI 100L
> > > +#define MILLI 1000L
> > > +#define MICRO 1000000L
> > > +#define NANO 1000000000L
> > > +#define PICO 1000000000000LL
> > > +#define FEMTO 1000000000000000LL
> >
> > For me milli is always 1/1000.
>
> For me as well. Kernel does not operate with float point numbers.
> That's why it's ordered like this.
>
> > Might lead to confusion with these defines if
> > idea is to multiply with KILO but divide with MILLI?
>
> If the author of the hypothetical driver doesn't understand this, maybe
> they can ask first, but I am an optimist here and I assume that whoever
> writes the driver for a sensor / etc has a minimum education to see
> what's needed for the certain case.

Writing this, I think that I'm not so educated :-)

What we have in I²C case is kHz * ns = 10^3 * 10^-9, so we need to divide by
10^-6 to normalize the numbers. Sounds like MICRO is the correct thing to use
there.

--
With Best Regards,
Andy Shevchenko