math64: New DIV_U64_ROUND_CLOSEST helper
Provide DIV_U64_ROUND_CLOSEST helper which uses div_u64 to perform division rounded to the closest integer using unsigned 64bit dividend and unsigned 32bit divisor. Reviewed-by: Marek Behún <kabel@kernel.org> Signed-off-by: Pali Rohár <pali@kernel.org> Signed-off-by: Marek Behún <kabel@kernel.org> Link: https://lore.kernel.org/r/20220219152818.4319-2-kabel@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
679875d1d8
commit
2c861b73a2
@ -300,6 +300,19 @@ u64 mul_u64_u64_div_u64(u64 a, u64 mul, u64 div);
|
|||||||
#define DIV64_U64_ROUND_CLOSEST(dividend, divisor) \
|
#define DIV64_U64_ROUND_CLOSEST(dividend, divisor) \
|
||||||
({ u64 _tmp = (divisor); div64_u64((dividend) + _tmp / 2, _tmp); })
|
({ u64 _tmp = (divisor); div64_u64((dividend) + _tmp / 2, _tmp); })
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DIV_U64_ROUND_CLOSEST - unsigned 64bit divide with 32bit divisor rounded to nearest integer
|
||||||
|
* @dividend: unsigned 64bit dividend
|
||||||
|
* @divisor: unsigned 32bit divisor
|
||||||
|
*
|
||||||
|
* Divide unsigned 64bit dividend by unsigned 32bit divisor
|
||||||
|
* and round to closest integer.
|
||||||
|
*
|
||||||
|
* Return: dividend / divisor rounded to nearest integer
|
||||||
|
*/
|
||||||
|
#define DIV_U64_ROUND_CLOSEST(dividend, divisor) \
|
||||||
|
({ u32 _tmp = (divisor); div_u64((u64)(dividend) + _tmp / 2, _tmp); })
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DIV_S64_ROUND_CLOSEST - signed 64bit divide with 32bit divisor rounded to nearest integer
|
* DIV_S64_ROUND_CLOSEST - signed 64bit divide with 32bit divisor rounded to nearest integer
|
||||||
* @dividend: signed 64bit dividend
|
* @dividend: signed 64bit dividend
|
||||||
|
Loading…
x
Reference in New Issue
Block a user