mirror of
https://github.com/u-boot/u-boot.git
synced 2024-12-01 00:23:29 +08:00
4515992fc7
The Linux-compatible macro DIV_ROUND_CLOSEST is a bit more flexible and safer than DIV_ROUND. For example, foo = DIV_ROUND_CLOSEST(x, y++) works expectedly, but foo = DIV_ROUND(x, y++) does not. (y is incremented twice.) Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
23 lines
412 B
C
23 lines
412 B
C
/*
|
|
* (C) Copyright 2002-2006
|
|
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
#include <common.h>
|
|
|
|
char *strmhz (char *buf, unsigned long hz)
|
|
{
|
|
long l, n;
|
|
long m;
|
|
|
|
n = DIV_ROUND_CLOSEST(hz, 1000) / 1000L;
|
|
l = sprintf (buf, "%ld", n);
|
|
|
|
hz -= n * 1000000L;
|
|
m = DIV_ROUND_CLOSEST(hz, 1000L);
|
|
if (m != 0)
|
|
sprintf (buf + l, ".%03ld", m);
|
|
return (buf);
|
|
}
|