Revision 841b7f53
configure | ||
---|---|---|
590 | 590 |
o['cflags'] += cflags.split() |
591 | 591 |
|
592 | 592 |
|
593 |
def configure_winsdk(o): |
|
594 |
if not sys.platform.startswith('win32'): |
|
595 |
return |
|
596 |
|
|
597 |
try: |
|
598 |
p = subprocess.Popen(['ctrpp.exe'], |
|
599 |
stdin=subprocess.PIPE, |
|
600 |
stdout=subprocess.PIPE, |
|
601 |
stderr=subprocess.PIPE) |
|
602 |
except OSError: |
|
603 |
return |
|
604 |
|
|
605 |
o['variables']['node_has_winsdk'] = 'true' |
|
606 |
|
|
607 |
|
|
593 | 608 |
output = { |
594 | 609 |
'variables': { 'python': sys.executable }, |
595 | 610 |
'include_dirs': [], |
... | ... | |
605 | 620 |
configure_libuv(output) |
606 | 621 |
configure_v8(output) |
607 | 622 |
configure_openssl(output) |
623 |
configure_winsdk(output) |
|
608 | 624 |
|
609 | 625 |
# variables should be a root level element, |
610 | 626 |
# move everything else to target_defaults |
node.gyp | ||
---|---|---|
7 | 7 |
'node_use_dtrace%': 'false', |
8 | 8 |
'node_use_etw%': 'false', |
9 | 9 |
'node_use_perfctr%': 'false', |
10 |
'node_has_winsdk%': 'false', |
|
10 | 11 |
'node_shared_v8%': 'false', |
11 | 12 |
'node_shared_zlib%': 'false', |
12 | 13 |
'node_shared_http_parser%': 'false', |
... | ... | |
72 | 73 |
|
73 | 74 |
'include_dirs': [ |
74 | 75 |
'src', |
76 |
'src/gen', |
|
75 | 77 |
'deps/uv/src/ares', |
76 | 78 |
'<(SHARED_INTERMEDIATE_DIR)' # for node_natives.h |
77 | 79 |
], |
... | ... | |
191 | 193 |
'src/node_win32_etw_provider-inl.h', |
192 | 194 |
'src/node_win32_etw_provider.cc', |
193 | 195 |
'src/node_dtrace.cc', |
194 |
'<(SHARED_INTERMEDIATE_DIR)/node_etw_provider.h',
|
|
195 |
'<(SHARED_INTERMEDIATE_DIR)/node_etw_provider.rc',
|
|
196 |
'src/gen/node_etw_provider.h',
|
|
197 |
'src/gen/node_etw_provider.rc',
|
|
196 | 198 |
] |
197 | 199 |
} ], |
198 | 200 |
[ 'node_use_perfctr=="true"', { |
... | ... | |
203 | 205 |
'src/node_win32_perfctr_provider.cc', |
204 | 206 |
'src/node_counters.cc', |
205 | 207 |
'src/node_counters.h', |
206 |
'<(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.rc',
|
|
208 |
'src/gen/node_perfctr_provider.rc',
|
|
207 | 209 |
] |
208 | 210 |
} ], |
209 | 211 |
[ 'node_shared_v8=="false"', { |
... | ... | |
286 | 288 |
'target_name': 'node_etw', |
287 | 289 |
'type': 'none', |
288 | 290 |
'conditions': [ |
289 |
[ 'node_use_etw=="true"', { |
|
291 |
[ 'node_use_etw=="true" and node_has_winsdk=="true"', {
|
|
290 | 292 |
'actions': [ |
291 | 293 |
{ |
292 | 294 |
'action_name': 'node_etw', |
293 | 295 |
'inputs': [ 'src/res/node_etw_provider.man' ], |
294 | 296 |
'outputs': [ |
295 |
'<(SHARED_INTERMEDIATE_DIR)/node_etw_provider.rc', |
|
296 |
'<(SHARED_INTERMEDIATE_DIR)/node_etw_provider.h', |
|
297 |
'src/gen/node_etw_provider.rc', |
|
298 |
'src/gen/node_etw_provider.h', |
|
299 |
'src/gen/node_etw_providerTEMP.BIN', |
|
297 | 300 |
], |
298 |
'action': [ 'mc <@(_inputs) -h <(SHARED_INTERMEDIATE_DIR) -r <(SHARED_INTERMEDIATE_DIR)' ]
|
|
301 |
'action': [ 'mc <@(_inputs) -h src/gen -r src/gen' ]
|
|
299 | 302 |
} |
300 | 303 |
] |
301 | 304 |
} ] |
... | ... | |
306 | 309 |
'target_name': 'node_perfctr', |
307 | 310 |
'type': 'none', |
308 | 311 |
'conditions': [ |
309 |
[ 'node_use_perfctr=="true"', { |
|
312 |
[ 'node_use_perfctr=="true" and node_has_winsdk=="true"', {
|
|
310 | 313 |
'actions': [ |
311 | 314 |
{ |
312 | 315 |
'action_name': 'node_perfctr_man', |
313 | 316 |
'inputs': [ 'src/res/node_perfctr_provider.man' ], |
314 | 317 |
'outputs': [ |
315 |
'<(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.h', |
|
316 |
'<(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.rc', |
|
318 |
'src/gen/node_perfctr_provider.h', |
|
319 |
'src/gen/node_perfctr_provider.rc', |
|
320 |
'src/gen/MSG00001.BIN', |
|
317 | 321 |
], |
318 | 322 |
'action': [ 'ctrpp <@(_inputs) ' |
319 |
'-o <(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.h '
|
|
320 |
'-rc <(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.rc'
|
|
323 |
'-o src/gen/node_perfctr_provider.h '
|
|
324 |
'-rc src/gen/node_perfctr_provider.rc'
|
|
321 | 325 |
] |
322 | 326 |
}, |
323 | 327 |
], |
src/gen/node_etw_provider.h | ||
---|---|---|
1 |
//**********************************************************************` |
|
2 |
//* This is an include file generated by Message Compiler. *` |
|
3 |
//* *` |
|
4 |
//* Copyright (c) Microsoft Corporation. All Rights Reserved. *` |
|
5 |
//**********************************************************************` |
|
6 |
#pragma once |
|
7 |
//+ |
|
8 |
// Provider NodeJS-ETW-provider Event Count 12 |
|
9 |
//+ |
|
10 |
EXTERN_C __declspec(selectany) const GUID NODE_ETW_PROVIDER = {0x77754e9b, 0x264b, 0x4d8d, {0xb9, 0x81, 0xe4, 0x13, 0x5c, 0x1e, 0xcb, 0x0c}}; |
|
11 |
|
|
12 |
// |
|
13 |
// Opcodes |
|
14 |
// |
|
15 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_HTTP_SERVER_REQUEST 0xa |
|
16 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_HTTP_SERVER_RESPONSE 0xb |
|
17 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_HTTP_CLIENT_REQUEST 0xc |
|
18 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_HTTP_CLIENT_RESPONSE 0xd |
|
19 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_NET_SERVER_CONNECTION 0xe |
|
20 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_NET_STREAM_END 0xf |
|
21 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_GC_START 0x10 |
|
22 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_GC_DONE 0x11 |
|
23 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_V8SYMBOL_REMOVE 0x15 |
|
24 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_V8SYMBOL_MOVE 0x16 |
|
25 |
#define NODE_ETW_PROVIDER_OPCODE_NODE_V8SYMBOL_RESET 0x17 |
|
26 |
#define JSCRIPT_METHOD_METHODLOAD_OPCODE 0xa |
|
27 |
|
|
28 |
// |
|
29 |
// Tasks |
|
30 |
// |
|
31 |
#define JSCRIPT_METHOD_RUNTIME_TASK 0x1 |
|
32 |
|
|
33 |
// |
|
34 |
// Event Descriptors |
|
35 |
// |
|
36 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_HTTP_SERVER_REQUEST_EVENT = {0x1, 0x0, 0x0, 0x4, 0xa, 0x0, 0x0}; |
|
37 |
#define NODE_HTTP_SERVER_REQUEST_EVENT_value 0x1 |
|
38 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_HTTP_SERVER_RESPONSE_EVENT = {0x2, 0x0, 0x0, 0x4, 0xb, 0x0, 0x0}; |
|
39 |
#define NODE_HTTP_SERVER_RESPONSE_EVENT_value 0x2 |
|
40 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_HTTP_CLIENT_REQUEST_EVENT = {0x3, 0x0, 0x0, 0x4, 0xc, 0x0, 0x0}; |
|
41 |
#define NODE_HTTP_CLIENT_REQUEST_EVENT_value 0x3 |
|
42 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_HTTP_CLIENT_RESPONSE_EVENT = {0x4, 0x0, 0x0, 0x4, 0xd, 0x0, 0x0}; |
|
43 |
#define NODE_HTTP_CLIENT_RESPONSE_EVENT_value 0x4 |
|
44 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_NET_SERVER_CONNECTION_EVENT = {0x5, 0x0, 0x0, 0x4, 0xe, 0x0, 0x0}; |
|
45 |
#define NODE_NET_SERVER_CONNECTION_EVENT_value 0x5 |
|
46 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_NET_STREAM_END_EVENT = {0x6, 0x0, 0x0, 0x4, 0xf, 0x0, 0x0}; |
|
47 |
#define NODE_NET_STREAM_END_EVENT_value 0x6 |
|
48 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_GC_START_EVENT = {0x7, 0x0, 0x0, 0x4, 0x10, 0x0, 0x0}; |
|
49 |
#define NODE_GC_START_EVENT_value 0x7 |
|
50 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_GC_DONE_EVENT = {0x8, 0x0, 0x0, 0x4, 0x11, 0x0, 0x0}; |
|
51 |
#define NODE_GC_DONE_EVENT_value 0x8 |
|
52 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR MethodLoad = {0x9, 0x0, 0x0, 0x4, 0xa, 0x1, 0x0}; |
|
53 |
#define MethodLoad_value 0x9 |
|
54 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_V8SYMBOL_REMOVE_EVENT = {0x15, 0x0, 0x0, 0x4, 0x15, 0x0, 0x0}; |
|
55 |
#define NODE_V8SYMBOL_REMOVE_EVENT_value 0x15 |
|
56 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_V8SYMBOL_MOVE_EVENT = {0x16, 0x0, 0x0, 0x4, 0x16, 0x0, 0x0}; |
|
57 |
#define NODE_V8SYMBOL_MOVE_EVENT_value 0x16 |
|
58 |
EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR NODE_V8SYMBOL_RESET_EVENT = {0x17, 0x0, 0x0, 0x4, 0x17, 0x0, 0x0}; |
|
59 |
#define NODE_V8SYMBOL_RESET_EVENT_value 0x17 |
src/gen/node_etw_provider.rc | ||
---|---|---|
1 |
LANGUAGE 0x9,0x1 |
|
2 |
1 11 "MSG00001.bin" |
|
3 |
1 WEVT_TEMPLATE "node_etw_providerTEMP.BIN" |
src/gen/node_perfctr_provider.h | ||
---|---|---|
1 |
/* This file was auto-generated from src\res\node_perfctr_provider.man by ctrpp.exe */ |
|
2 |
|
|
3 |
#pragma once |
|
4 |
|
|
5 |
|
|
6 |
EXTERN_C DECLSPEC_SELECTANY GUID NodeCounterProviderGuid = { 0x1e2e15d7, 0x3760, 0x470e, 0x86, 0x99, 0xb9, 0xdb, 0x52, 0x48, 0xed, 0xd5 }; |
|
7 |
|
|
8 |
EXTERN_C DECLSPEC_SELECTANY GUID NodeCounterSetGuid = { 0x3a22a8ec, 0x297c, 0x48ac, 0xab, 0x15, 0x33, 0xec, 0x93, 0x3, 0x3f, 0xd8 }; |
|
9 |
|
|
10 |
|
|
11 |
EXTERN_C DECLSPEC_SELECTANY HANDLE NodeCounterProvider = NULL; |
|
12 |
|
|
13 |
EXTERN_C DECLSPEC_SELECTANY struct { |
|
14 |
PERF_COUNTERSET_INFO CounterSet; |
|
15 |
PERF_COUNTER_INFO Counter0; |
|
16 |
PERF_COUNTER_INFO Counter1; |
|
17 |
PERF_COUNTER_INFO Counter2; |
|
18 |
PERF_COUNTER_INFO Counter3; |
|
19 |
PERF_COUNTER_INFO Counter4; |
|
20 |
PERF_COUNTER_INFO Counter5; |
|
21 |
PERF_COUNTER_INFO Counter6; |
|
22 |
PERF_COUNTER_INFO Counter7; |
|
23 |
PERF_COUNTER_INFO Counter8; |
|
24 |
PERF_COUNTER_INFO Counter9; |
|
25 |
} NodeCounterSetInfo = { |
|
26 |
{ { 0x3a22a8ec, 0x297c, 0x48ac, 0xab, 0x15, 0x33, 0xec, 0x93, 0x3, 0x3f, 0xd8 }, { 0x1e2e15d7, 0x3760, 0x470e, 0x86, 0x99, 0xb9, 0xdb, 0x52, 0x48, 0xed, 0xd5 }, 10, PERF_COUNTERSET_MULTI_INSTANCES }, |
|
27 |
{ 1, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, |
|
28 |
{ 2, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, |
|
29 |
{ 3, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, |
|
30 |
{ 4, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, |
|
31 |
{ 5, PERF_COUNTER_RAWCOUNT, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, |
|
32 |
{ 6, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 }, |
|
33 |
{ 7, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 }, |
|
34 |
{ 8, PERF_COUNTER_RAWCOUNT, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, |
|
35 |
{ 9, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 }, |
|
36 |
{ 10, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 }, |
|
37 |
}; |
|
38 |
|
|
39 |
EXTERN_C FORCEINLINE |
|
40 |
VOID |
|
41 |
CounterCleanup( |
|
42 |
VOID |
|
43 |
) |
|
44 |
{ |
|
45 |
if (NodeCounterProvider != NULL) { |
|
46 |
PerfStopProvider(NodeCounterProvider); |
|
47 |
NodeCounterProvider = NULL; |
|
48 |
} |
|
49 |
} |
|
50 |
|
|
51 |
EXTERN_C FORCEINLINE |
|
52 |
ULONG |
|
53 |
CounterInitialize( |
|
54 |
VOID |
|
55 |
) |
|
56 |
{ |
|
57 |
ULONG Status; |
|
58 |
PERF_PROVIDER_CONTEXT ProviderContext; |
|
59 |
|
|
60 |
ZeroMemory(&ProviderContext, sizeof(PERF_PROVIDER_CONTEXT)); |
|
61 |
ProviderContext.ContextSize = sizeof(PERF_PROVIDER_CONTEXT); |
|
62 |
|
|
63 |
Status = PerfStartProviderEx(&NodeCounterProviderGuid, |
|
64 |
&ProviderContext, |
|
65 |
&NodeCounterProvider); |
|
66 |
if (Status != ERROR_SUCCESS) { |
|
67 |
NodeCounterProvider = NULL; |
|
68 |
return Status; |
|
69 |
} |
|
70 |
|
|
71 |
Status = PerfSetCounterSetInfo(NodeCounterProvider, |
|
72 |
&NodeCounterSetInfo.CounterSet, |
|
73 |
sizeof NodeCounterSetInfo); |
|
74 |
if (Status != ERROR_SUCCESS) { |
|
75 |
CounterCleanup(); |
|
76 |
return Status; |
|
77 |
} |
|
78 |
return ERROR_SUCCESS; |
|
79 |
} |
src/gen/node_perfctr_provider.rc | ||
---|---|---|
1 |
STRINGTABLE |
|
2 |
BEGIN |
|
3 |
1 "Node.js" |
|
4 |
2 "Node.js" // {Locked} means don't localize |
|
5 |
3 "Node.js performance counters" |
|
6 |
5 "HTTP server requests" |
|
7 |
6 "HTTP server requests" // {Locked} means don't localize |
|
8 |
7 "Number of HTTP server requests" |
|
9 |
9 "HTTP server responses" |
|
10 |
10 "HTTP server responses" // {Locked} means don't localize |
|
11 |
11 "Number of HTTP server responses" |
|
12 |
13 "HTTP client requests" |
|
13 |
14 "HTTP client requests" // {Locked} means don't localize |
|
14 |
15 "Number of HTTP client requests" |
|
15 |
17 "HTTP client responses" |
|
16 |
18 "HTTP client responses" // {Locked} means don't localize |
|
17 |
19 "Number of HTTP client responses" |
|
18 |
21 "Active server connections" |
|
19 |
22 "Active server connections" // {Locked} means don't localize |
|
20 |
23 "Number of server connections" |
|
21 |
25 "Network bytes sent" |
|
22 |
26 "Network bytes sent" // {Locked} means don't localize |
|
23 |
27 "Number of bytes sent using TCP" |
|
24 |
29 "Network bytes received" |
|
25 |
30 "Network bytes received" // {Locked} means don't localize |
|
26 |
31 "Number of bytes received using TCP" |
|
27 |
33 "%Time in GC" |
|
28 |
34 "%Time in GC" // {Locked} means don't localize |
|
29 |
35 "Percent of time for last GC" |
|
30 |
37 "Pipe bytes sent" |
|
31 |
38 "Pipe bytes sent" // {Locked} means don't localize |
|
32 |
39 "Number of bytes sent using pipe" |
|
33 |
41 "Pipe bytes received" |
|
34 |
42 "Pipe bytes received" // {Locked} means don't localize |
|
35 |
43 "Number of bytes received using pipe" |
|
36 |
END |
Also available in: Unified diff