|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 6/7] xen/console: use s_time_t for time accounting in do_printk_ratelimit()
From: Denis Mukhin <dmukhin@xxxxxxxx>
Use appropriate s_time_t for time window calculation in the rate limiting
algorithm.
Signed-off-by: Denis Mukhin <dmukhin@xxxxxxxx>
---
Changes since v1:
- new patch
---
xen/drivers/char/console.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index e3962512d282..536b883d5dcf 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -1291,12 +1291,10 @@ static bool do_printk_ratelimit(unsigned int
ratelimit_ms,
unsigned int ratelimit_burst)
{
static DEFINE_SPINLOCK(ratelimit_lock);
- static unsigned long toks;
- static unsigned long last_msg;
+ static s_time_t toks, last_msg;
+ s_time_t now, ms;
static unsigned int missed;
unsigned long flags;
- unsigned long long now;
- unsigned long ms;
if ( !printk_ratelimit_burst || !printk_ratelimit_burst )
return true;
@@ -1305,13 +1303,12 @@ static bool do_printk_ratelimit(unsigned int
ratelimit_ms,
toks = printk_ratelimit_burst * printk_ratelimit_ms;
now = NOW(); /* ns */
- do_div(now, 1000000);
- ms = (unsigned long)now;
+ ms = do_div(now, MILLISECS(1));
spin_lock_irqsave(&ratelimit_lock, flags);
toks += ms - last_msg;
last_msg = ms;
- toks = min(toks, (unsigned long)(ratelimit_burst * ratelimit_ms));
+ toks = min(toks, (s_time_t)(ratelimit_burst * ratelimit_ms));
if ( toks >= ratelimit_ms )
{
unsigned int lost = missed;
--
2.52.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |