aboutsummaryrefslogtreecommitdiff
path: root/src/util/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/time.c')
-rw-r--r--src/util/time.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/util/time.c b/src/util/time.c
index eb168d531..89b0c2d44 100644
--- a/src/util/time.c
+++ b/src/util/time.c
@@ -446,6 +446,32 @@ GNUNET_TIME_relative_multiply (struct GNUNET_TIME_Relative rel,
446 446
447 447
448/** 448/**
449 * Saturating multiply relative time by a given factor.
450 *
451 * @param rel some duration
452 * @param factor integer to multiply with
453 * @return FOREVER if rel=FOREVER or on overflow; otherwise rel*factor
454 */
455struct GNUNET_TIME_Relative
456GNUNET_TIME_relative_saturating_multiply (struct GNUNET_TIME_Relative rel,
457 unsigned long long factor)
458{
459 struct GNUNET_TIME_Relative ret;
460
461 if (0 == factor)
462 return GNUNET_TIME_UNIT_ZERO;
463 if (rel.rel_value_us == GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us)
464 return GNUNET_TIME_UNIT_FOREVER_REL;
465 ret.rel_value_us = rel.rel_value_us * factor;
466 if (ret.rel_value_us / factor != rel.rel_value_us)
467 {
468 return GNUNET_TIME_UNIT_FOREVER_REL;
469 }
470 return ret;
471}
472
473
474/**
449 * Divide relative time by a given factor. 475 * Divide relative time by a given factor.
450 * 476 *
451 * @param rel some duration 477 * @param rel some duration