Message ID | 20210603160433.35816-1-andriy.shevchenko@linux.intel.com |
---|---|
State | Superseded |
Headers | show |
Series | [resend,v1,1/3] units: Add SI metric prefix definitions | expand |
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. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > include/linux/units.h | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/include/linux/units.h b/include/linux/units.h > index dcc30a53fa93..7366fcd45ec2 100644 > --- a/include/linux/units.h > +++ b/include/linux/units.h > @@ -4,6 +4,22 @@ > > #include <linux/math.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. Might lead to confusion with these defines if idea is to multiply with KILO but divide with MILLI? Jarkko
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. -- With Best Regards, Andy Shevchenko
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
diff --git a/include/linux/units.h b/include/linux/units.h index dcc30a53fa93..7366fcd45ec2 100644 --- a/include/linux/units.h +++ b/include/linux/units.h @@ -4,6 +4,22 @@ #include <linux/math.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 + #define MILLIWATT_PER_WATT 1000L #define MICROWATT_PER_MILLIWATT 1000L #define MICROWATT_PER_WATT 1000000L
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. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- include/linux/units.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)