summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <grothoff@gnunet.org>2022-03-26 07:17:12 +0100
committerChristian Grothoff <grothoff@gnunet.org>2022-03-26 07:17:32 +0100
commite598ffe0a3a3d3db0df1fcc04f52bbefe93d3779 (patch)
tree5aa6266185d790886d46ec8d4a5ff7b38a33cac2
parent104473d4e270ca5979c79d540c9144bb72121a36 (diff)
add GNUNET_TIME_absolute_round_down() function
-rw-r--r--src/include/gnunet_time_lib.h12
-rw-r--r--src/util/time.c14
2 files changed, 26 insertions, 0 deletions
diff --git a/src/include/gnunet_time_lib.h b/src/include/gnunet_time_lib.h
index 55af62b72..d59eb984d 100644
--- a/src/include/gnunet_time_lib.h
+++ b/src/include/gnunet_time_lib.h
@@ -482,6 +482,18 @@ GNUNET_TIME_absolute_max (struct GNUNET_TIME_Absolute t1,
/**
+ * Round down absolute time @a at to multiple of @a rt.
+ *
+ * @param at absolute time to round
+ * @param rt multiple to round to (non-zero)
+ * @return rounded time
+ */
+struct GNUNET_TIME_Absolute
+GNUNET_TIME_absolute_round_down (struct GNUNET_TIME_Absolute at,
+ struct GNUNET_TIME_Relative rt);
+
+
+/**
* Return the maximum of two timestamps.
*
* @param t1 first timestamp
diff --git a/src/util/time.c b/src/util/time.c
index aeec2b3f9..cf072aebf 100644
--- a/src/util/time.c
+++ b/src/util/time.c
@@ -386,6 +386,20 @@ GNUNET_TIME_timestamp_min (struct GNUNET_TIME_Timestamp t1,
}
+struct GNUNET_TIME_Absolute
+GNUNET_TIME_absolute_round_down (struct GNUNET_TIME_Absolute at,
+ struct GNUNET_TIME_Relative rt)
+{
+ struct GNUNET_TIME_Absolute ret;
+
+ GNUNET_assert (! GNUNET_TIME_relative_is_zero (rt));
+ ret.abs_value_us
+ = at.abs_value_us
+ - at.abs_value_us % rt.rel_value_us;
+ return ret;
+}
+
+
struct GNUNET_TIME_Relative
GNUNET_TIME_absolute_get_remaining (struct GNUNET_TIME_Absolute future)
{