math.h: Introduce data types for fractional numbers

Introduce a macro to produce data types like

	struct TYPE_fract {
		__TYPE numerator;
		__TYPE denominator;
	};

to be used in the code wherever it's needed.

In the following changes convert some users to it.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20220126135353.24007-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
Andy Shevchenko 2022-01-26 15:53:50 +02:00 committed by Jonathan Cameron
parent de645b2791
commit e820a33748
1 changed files with 12 additions and 0 deletions

View File

@ -2,6 +2,7 @@
#ifndef _LINUX_MATH_H
#define _LINUX_MATH_H
#include <linux/types.h>
#include <asm/div64.h>
#include <uapi/linux/kernel.h>
@ -106,6 +107,17 @@
} \
)
#define __STRUCT_FRACT(type) \
struct type##_fract { \
__##type numerator; \
__##type denominator; \
};
__STRUCT_FRACT(s16)
__STRUCT_FRACT(u16)
__STRUCT_FRACT(s32)
__STRUCT_FRACT(u32)
#undef __STRUCT_FRACT
/*
* Multiplies an integer by a fraction, while avoiding unnecessary
* overflow or loss of precision.