Add a couple of new time API calls - ast_tvdiff_sec and ast_tvdiff_usec
authorRussell Bryant <russell@russellbryant.com>
Wed, 19 Dec 2007 19:29:14 +0000 (19:29 +0000)
committerRussell Bryant <russell@russellbryant.com>
Wed, 19 Dec 2007 19:29:14 +0000 (19:29 +0000)
(closes issue #11270)
Reported by: dimas
Patches:
      tvdiff_us-4.patch uploaded by dimas (license 88)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@94029 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/time.h

index 3b94cd6..4b7ca00 100644 (file)
@@ -37,6 +37,39 @@ typedef typeof(tv.tv_sec) ast_time_t;
 typedef typeof(tv.tv_usec) ast_suseconds_t;
 
 /*!
+ * \brief Computes the difference (in seconds) between two \c struct \c timeval instances.
+ * \param end the end of the time period
+ * \param start the beginning of the time period
+ * \return the difference in seconds
+ */
+AST_INLINE_API(
+int ast_tvdiff_sec(struct timeval end, struct timeval start),
+{
+       int result = end.tv_sec - start.tv_sec;
+       if (result > 0 && end.tv_usec < start.tv_usec)
+               result--;
+       else if (result < 0 && end.tv_usec > start.tv_usec)
+               result++;
+
+       return result;
+}
+)
+
+/*!
+ * \brief Computes the difference (in microseconds) between two \c struct \c timeval instances.
+ * \param end the end of the time period
+ * \param start the beginning of the time period
+ * \return the difference in microseconds
+ */
+AST_INLINE_API(
+int64_t ast_tvdiff_us(struct timeval end, struct timeval start),
+{
+       return (end.tv_sec - start.tv_sec) * (int64_t) 1000000 +
+               end.tv_usec - start.tv_usec;
+}
+)
+
+/*!
  * \brief Computes the difference (in milliseconds) between two \c struct \c timeval instances.
  * \param end end of the time period
  * \param start beginning of the time period