Skip to content

Commit bef78a2

Browse files
joyeecheungBethGriggs
authored andcommittedSep 21, 2021
src: register external references of dtrace for snapshot
PR-URL: #39961 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Michael Dawson <midawson@redhat.com>
1 parent 381293f commit bef78a2

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed
 

‎src/node_dtrace.cc

+22-9
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444

4545
#include "env-inl.h"
4646
#include "node_errors.h"
47+
#include "node_external_reference.h"
4748

4849
#include <cstring>
4950

@@ -288,23 +289,35 @@ void InitDTrace(Environment* env) {
288289
}, env);
289290
}
290291

292+
#define NODE_PROBES(V) \
293+
V(DTRACE_NET_SERVER_CONNECTION) \
294+
V(DTRACE_NET_STREAM_END) \
295+
V(DTRACE_HTTP_SERVER_REQUEST) \
296+
V(DTRACE_HTTP_SERVER_RESPONSE) \
297+
V(DTRACE_HTTP_CLIENT_REQUEST) \
298+
V(DTRACE_HTTP_CLIENT_RESPONSE)
299+
291300
void InitializeDTrace(Local<Object> target,
292301
Local<Value> unused,
293302
Local<Context> context,
294303
void* priv) {
295304
Environment* env = Environment::GetCurrent(context);
296305

297306
#if defined HAVE_DTRACE || defined HAVE_ETW
298-
# define NODE_PROBE(name) env->SetMethod(target, #name, name);
299-
NODE_PROBE(DTRACE_NET_SERVER_CONNECTION)
300-
NODE_PROBE(DTRACE_NET_STREAM_END)
301-
NODE_PROBE(DTRACE_HTTP_SERVER_REQUEST)
302-
NODE_PROBE(DTRACE_HTTP_SERVER_RESPONSE)
303-
NODE_PROBE(DTRACE_HTTP_CLIENT_REQUEST)
304-
NODE_PROBE(DTRACE_HTTP_CLIENT_RESPONSE)
305-
# undef NODE_PROBE
306-
#endif
307+
#define V(name) env->SetMethod(target, #name, name);
308+
NODE_PROBES(V)
309+
#undef V
310+
#endif // defined HAVE_DTRACE || defined HAVE_ETW
311+
}
312+
313+
void RegisterDtraceExternalReferences(ExternalReferenceRegistry* registry) {
314+
#if defined HAVE_DTRACE || defined HAVE_ETW
315+
#define V(name) registry->Register(name);
316+
NODE_PROBES(V)
317+
#undef V
318+
#endif // defined HAVE_DTRACE || defined HAVE_ETW
307319
}
308320

309321
} // namespace node
310322
NODE_MODULE_CONTEXT_AWARE_INTERNAL(dtrace, node::InitializeDTrace)
323+
NODE_MODULE_EXTERNAL_REFERENCE(dtrace, node::RegisterDtraceExternalReferences)

‎src/node_external_reference.h

+8-1
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,17 @@ class ExternalReferenceRegistry {
9292
#define EXTERNAL_REFERENCE_BINDING_LIST_INSPECTOR(V)
9393
#endif // HAVE_INSPECTOR
9494

95+
#if HAVE_DTRACE || HAVE_ETW
96+
#define EXTERNAL_REFERENCE_BINDING_LIST_DTRACE(V) V(dtrace)
97+
#else
98+
#define EXTERNAL_REFERENCE_BINDING_LIST_DTRACE(V)
99+
#endif
100+
95101
#define EXTERNAL_REFERENCE_BINDING_LIST(V) \
96102
EXTERNAL_REFERENCE_BINDING_LIST_BASE(V) \
97103
EXTERNAL_REFERENCE_BINDING_LIST_INSPECTOR(V) \
98-
EXTERNAL_REFERENCE_BINDING_LIST_I18N(V)
104+
EXTERNAL_REFERENCE_BINDING_LIST_I18N(V) \
105+
EXTERNAL_REFERENCE_BINDING_LIST_DTRACE(V)
99106

100107
} // namespace node
101108

0 commit comments

Comments
 (0)
Please sign in to comment.