Node.js  v8.x
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine
node_lttng_provider.h
Go to the documentation of this file.
1 #ifndef SRC_NODE_LTTNG_PROVIDER_H_
2 #define SRC_NODE_LTTNG_PROVIDER_H_
3 
4 #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5 
6 #define TRACEPOINT_CREATE_PROBES
7 #define TRACEPOINT_DEFINE
8 #include "node_lttng_tp.h"
9 
10 namespace node {
11 
12 #define FOR_ALL_GC_TYPES(APPLY) \
13  APPLY(kGCTypeScavenge) \
14  APPLY(kGCTypeMarkSweepCompact) \
15  APPLY(kGCTypeAll)
16 
17 #define FOR_ALL_GC_CALLBACK_FLAGS(APPLY) \
18  APPLY(kNoGCCallbackFlags) \
19  APPLY(kGCCallbackFlagConstructRetainedObjectInfos) \
20  APPLY(kGCCallbackFlagForced) \
21  APPLY(kGCCallbackFlagSynchronousPhantomCallbackProcessing)
22 
23 void NODE_HTTP_SERVER_REQUEST(node_lttng_http_server_request_t* req,
24  node_lttng_connection_t* conn,
25  const char *remote, int port,
26  const char *method, const char *url,
27  int fd) {
28  tracepoint(node, http_server_request, req->url, req->method, \
29  req->forwarded_for);
30 }
31 
32 void NODE_HTTP_SERVER_RESPONSE(node_lttng_connection_t* conn,
33  const char *remote, int port, int fd) {
34  tracepoint(node, http_server_response, port, conn->remote, fd);
35 }
36 
37 void NODE_HTTP_CLIENT_REQUEST(node_lttng_http_client_request_t* req,
38  node_lttng_connection_t* conn,
39  const char *remote, int port,
40  const char *method, const char *url,
41  int fd) {
42  tracepoint(node, http_client_request, req->url, req->method);
43 }
44 
45 void NODE_HTTP_CLIENT_RESPONSE(node_lttng_connection_t* conn,
46  const char *remote, int port, int fd) {
47  tracepoint(node, http_client_response, port, conn->remote, fd);
48 }
49 
50 void NODE_NET_SERVER_CONNECTION(node_lttng_connection_t* conn,
51  const char *remote, int port, int fd) {
52  tracepoint(node, net_server_connection, conn->remote, port, fd, \
53  conn->buffered);
54 }
55 
56 void NODE_NET_STREAM_END(node_lttng_connection_t* conn,
57  const char *remote, int port, int fd) {
58  tracepoint(node, net_stream_end, conn->remote, port, fd);
59 }
60 
61 void NODE_GC_START(v8::GCType type,
62  v8::GCCallbackFlags flags,
63  v8::Isolate* isolate) {
64  const char* typeStr = "Unknown GC Type";
65  const char* flagsStr = "Unknown GC Flag";
66 
67 #define BUILD_IF(f) if (type == v8::GCType::f) { typeStr = #f; }
68  FOR_ALL_GC_TYPES(BUILD_IF);
69 #undef BUILD_IF
70 
71 #define BUILD_IF(f) if (flags == v8::GCCallbackFlags::f) { flagsStr = #f; }
72  FOR_ALL_GC_CALLBACK_FLAGS(BUILD_IF);
73 #undef BUILD_IF
74 
75  tracepoint(node, gc_start, typeStr, flagsStr);
76 }
77 
78 void NODE_GC_DONE(v8::GCType type,
79  v8::GCCallbackFlags flags,
80  v8::Isolate* isolate) {
81  const char* typeStr = "Unknown GC Type";
82  const char* flagsStr = "Unknown GC Flag";
83 
84 #define BUILD_IF(f) if (type == v8::GCType::f) { typeStr = #f; }
85  FOR_ALL_GC_TYPES(BUILD_IF);
86 #undef BUILD_IF
87 
88 #define BUILD_IF(f) if (flags == v8::GCCallbackFlags::f) { flagsStr = #f; }
89  FOR_ALL_GC_CALLBACK_FLAGS(BUILD_IF);
90 #undef BUILD_IF
91 
92  tracepoint(node, gc_done, typeStr, flagsStr);
93 }
94 
95 bool NODE_HTTP_SERVER_REQUEST_ENABLED() { return true; }
96 bool NODE_HTTP_SERVER_RESPONSE_ENABLED() { return true; }
97 bool NODE_HTTP_CLIENT_REQUEST_ENABLED() { return true; }
98 bool NODE_HTTP_CLIENT_RESPONSE_ENABLED() { return true; }
99 bool NODE_NET_SERVER_CONNECTION_ENABLED() { return true; }
100 bool NODE_NET_STREAM_END_ENABLED() { return true; }
101 
102 } // namespace node
103 
104 #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
105 
106 #endif // SRC_NODE_LTTNG_PROVIDER_H_
#define NODE_HTTP_CLIENT_RESPONSE(arg0)
Definition: node_dtrace.cc:36
#define NODE_NET_STREAM_END_ENABLED()
Definition: node_dtrace.cc:41
#define NODE_NET_STREAM_END(arg0)
Definition: node_dtrace.cc:40
#define NODE_GC_DONE(arg0, arg1, arg2)
Definition: node_dtrace.cc:43
#define NODE_HTTP_CLIENT_REQUEST(arg0, arg1)
Definition: node_dtrace.cc:34
#define NODE_HTTP_SERVER_REQUEST_ENABLED()
Definition: node_dtrace.cc:31
#define NODE_NET_SERVER_CONNECTION_ENABLED()
Definition: node_dtrace.cc:39
#define NODE_HTTP_CLIENT_REQUEST_ENABLED()
Definition: node_dtrace.cc:35
#define NODE_HTTP_SERVER_RESPONSE_ENABLED()
Definition: node_dtrace.cc:33
#define NODE_HTTP_CLIENT_RESPONSE_ENABLED()
Definition: node_dtrace.cc:37
uv_fs_t req
Definition: node_file.cc:374
method
Definition: node.d:195
#define NODE_NET_SERVER_CONNECTION(arg0)
Definition: node_dtrace.cc:38
#define NODE_GC_START(arg0, arg1, arg2)
Definition: node_dtrace.cc:42
#define NODE_HTTP_SERVER_RESPONSE(arg0)
Definition: node_dtrace.cc:32
#define NODE_HTTP_SERVER_REQUEST(arg0, arg1)
Definition: node_dtrace.cc:30