Commit 89c332e41b12a72d89de40d63bc568c56a2c336a

Edward Thomson 2016-09-13T16:16:20

Merge pull request #3929 from libgit2/vmg/time time: Export `git_time_monotonic`

diff --git a/include/git2/sys/time.h b/include/git2/sys/time.h
new file mode 100644
index 0000000..e4f87e6
--- /dev/null
+++ b/include/git2/sys/time.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+#ifndef INCLUDE_git_time_h__
+#define INCLUDE_git_time_h__
+
+#include "git2/common.h"
+
+GIT_BEGIN_DECL
+
+/**
+ * Return a monotonic time value, useful for measuring running time
+ * and setting up timeouts.
+ *
+ * The returned value is an arbitrary point in time -- it can only be
+ * used when comparing it to another `git_time_monotonic` call.
+ *
+ * The time is returned in seconds, with a decimal fraction that differs
+ * on accuracy based on the underlying system, but should be least
+ * accurate to Nanoseconds.
+ *
+ * This function cannot fail.
+ */
+GIT_EXTERN(double) git_time_monotonic(void);
+
+GIT_END_DECL
+#endif
+
diff --git a/src/util.c b/src/util.c
index e9cccea..76ca711 100644
--- a/src/util.c
+++ b/src/util.c
@@ -783,6 +783,11 @@ int git__utf8_iterate(const uint8_t *str, int str_len, int32_t *dst)
 	return length;
 }
 
+double git_time_monotonic(void)
+{
+	return git__timer();
+}
+
 #ifdef GIT_WIN32
 int git__getenv(git_buf *out, const char *name)
 {