summaryrefslogtreecommitdiff
path: root/src/tracing/agent.h
diff options
context:
space:
mode:
authormisterpoe <raymondksi@gmail.com>2016-08-05 14:04:25 -0700
committerMatt Loring <mattloring@google.com>2016-12-20 12:31:09 -0800
commitba4847e879424ad173289e8fb96cc86a09ee899b (patch)
treea0d4d9135b3f3872325517a226bb6bcd7b751923 /src/tracing/agent.h
parent613798335c4313176dfa9f3bafc1fada82293428 (diff)
downloadandroid-node-v8-ba4847e879424ad173289e8fb96cc86a09ee899b.tar.gz
android-node-v8-ba4847e879424ad173289e8fb96cc86a09ee899b.tar.bz2
android-node-v8-ba4847e879424ad173289e8fb96cc86a09ee899b.zip
src: Node Tracing Controller
This commit adds support for trace-event tracing to Node.js. It provides a mechanism to centralize tracing information generated by V8, Node core, and userspace code. It includes: - A trace writer responsible for serializing traces and cycling the output files so that no individual file becomes to large. - A buffer for aggregating traces to allow for batched flushes. - An agent which initializes the tracing controller and ensures that trace serialization is done on a separate thread. - A set of macros for generating trace events. - Tests and documentation. Author: Raymond Kang <raymondksi@gmail.com> Author: Kelvin Jin <kelvinjin@google.com> Author: Matthew Loring <mattloring@google.com> Author: Jason Ginchereau <jasongin@microsoft.com> PR-URL: https://github.com/nodejs/node/pull/9304 Reviewed-By: Trevor Norris <trev.norris@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Josh Gavant <josh.gavant@outlook.com>
Diffstat (limited to 'src/tracing/agent.h')
-rw-r--r--src/tracing/agent.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/tracing/agent.h b/src/tracing/agent.h
new file mode 100644
index 0000000000..098f955192
--- /dev/null
+++ b/src/tracing/agent.h
@@ -0,0 +1,31 @@
+#ifndef SRC_TRACING_AGENT_H_
+#define SRC_TRACING_AGENT_H_
+
+#include "tracing/node_trace_buffer.h"
+#include "tracing/node_trace_writer.h"
+#include "uv.h"
+#include "v8.h"
+
+namespace node {
+namespace tracing {
+
+class Agent {
+ public:
+ explicit Agent();
+ void Start(v8::Platform* platform, const char* enabled_categories);
+ void Stop();
+
+ private:
+ bool IsStarted() { return platform_ != nullptr; }
+ static void ThreadCb(void* arg);
+
+ uv_thread_t thread_;
+ uv_loop_t tracing_loop_;
+ v8::Platform* platform_ = nullptr;
+ TracingController* tracing_controller_;
+};
+
+} // namespace tracing
+} // namespace node
+
+#endif // SRC_TRACING_AGENT_H_