summaryrefslogtreecommitdiff
path: root/LibC
diff options
context:
space:
mode:
Diffstat (limited to 'LibC')
-rw-r--r--LibC/serenity.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/LibC/serenity.h b/LibC/serenity.h
new file mode 100644
index 0000000000..0854941942
--- /dev/null
+++ b/LibC/serenity.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include <stdio.h>
+#include <unistd.h>
+
+#ifdef __cplusplus
+
+struct Stopwatch {
+public:
+ Stopwatch(const char* name)
+ : m_name(name)
+ {
+ read_tsc(&m_start_lsw, &m_start_msw);
+ }
+
+ ~Stopwatch()
+ {
+ unsigned end_lsw;
+ unsigned end_msw;
+ read_tsc(&end_lsw, &end_msw);
+ if (m_start_msw != end_msw) {
+ dbgprintf("Stopwatch: differing msw, no result for %s\n", m_name);
+ }
+ unsigned diff = end_lsw - m_start_lsw;
+ dbgprintf("Stopwatch(%s): %u ticks\n", m_name, diff);
+ }
+
+private:
+ const char* m_name { nullptr };
+ unsigned m_start_lsw { 0 };
+ unsigned m_start_msw { 0 };
+};
+
+#endif // __cplusplus