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) \
|
||||
({ 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
|
||||
* @dividend: signed 64bit dividend
|
||||
|
Loading…
x
Reference in New Issue
Block a user