Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(103)

Side by Side Diff: base/trace_event/trace_log.h

Issue 2452063003: tracing: split out the CategoryRegistry from the TraceLog (Closed)
Patch Set: add tests, rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/trace_event/trace_event.h ('k') | base/trace_event/trace_log.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BASE_TRACE_EVENT_TRACE_LOG_H_ 5 #ifndef BASE_TRACE_EVENT_TRACE_LOG_H_
6 #define BASE_TRACE_EVENT_TRACE_LOG_H_ 6 #define BASE_TRACE_EVENT_TRACE_LOG_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 12 matching lines...) Expand all
23 #include "build/build_config.h" 23 #include "build/build_config.h"
24 24
25 namespace base { 25 namespace base {
26 26
27 template <typename Type> 27 template <typename Type>
28 struct DefaultSingletonTraits; 28 struct DefaultSingletonTraits;
29 class RefCountedString; 29 class RefCountedString;
30 30
31 namespace trace_event { 31 namespace trace_event {
32 32
33 struct TraceCategory;
33 class TraceBuffer; 34 class TraceBuffer;
34 class TraceBufferChunk; 35 class TraceBufferChunk;
35 class TraceEvent; 36 class TraceEvent;
36 class TraceEventMemoryOverhead; 37 class TraceEventMemoryOverhead;
37 38
38 struct BASE_EXPORT TraceLogStatus { 39 struct BASE_EXPORT TraceLogStatus {
39 TraceLogStatus(); 40 TraceLogStatus();
40 ~TraceLogStatus(); 41 ~TraceLogStatus();
41 uint32_t event_capacity; 42 uint32_t event_capacity;
42 uint32_t event_count; 43 uint32_t event_count;
43 }; 44 };
44 45
45 class BASE_EXPORT TraceLog : public MemoryDumpProvider { 46 class BASE_EXPORT TraceLog : public MemoryDumpProvider {
46 public: 47 public:
47 // Argument passed to TraceLog::SetEnabled. 48 // Argument passed to TraceLog::SetEnabled.
48 enum Mode : uint8_t { 49 enum Mode : uint8_t {
49 // Enables normal tracing (recording trace events in the trace buffer). 50 // Enables normal tracing (recording trace events in the trace buffer).
50 RECORDING_MODE = 1 << 0, 51 RECORDING_MODE = 1 << 0,
51 52
52 // Trace events are enabled just for filtering but not for recording. Only 53 // Trace events are enabled just for filtering but not for recording. Only
53 // event filters config of |trace_config| argument is used. 54 // event filters config of |trace_config| argument is used.
54 FILTERING_MODE = 1 << 1 55 FILTERING_MODE = 1 << 1
55 }; 56 };
56 57
57 // The pointer returned from GetCategoryGroupEnabledInternal() points to a
58 // value with zero or more of the following bits. Used in this class only.
59 // The TRACE_EVENT macros should only use the value as a bool.
60 // These values must be in sync with macro values in TraceEvent.h in Blink.
61 enum CategoryGroupEnabledFlags {
62 // Category group enabled for the recording mode.
63 ENABLED_FOR_RECORDING = 1 << 0,
64 // 1 << 2 was used for ENABLED_FOR_EVENT_CALLBACK.
65
66 // Category group enabled to export events to ETW.
67 ENABLED_FOR_ETW_EXPORT = 1 << 3,
68 // Category group being filtered before logged.
69 ENABLED_FOR_FILTERING = 1 << 4
70 };
71
72 static TraceLog* GetInstance(); 58 static TraceLog* GetInstance();
73 59
74 // Get set of known category groups. This can change as new code paths are 60 // Get set of known category groups. This can change as new code paths are
75 // reached. The known category groups are inserted into |category_groups|. 61 // reached. The known category groups are inserted into |category_groups|.
76 void GetKnownCategoryGroups(std::vector<std::string>* category_groups); 62 void GetKnownCategoryGroups(std::vector<std::string>* category_groups);
77 63
78 // Retrieves a copy (for thread-safety) of the current TraceConfig. 64 // Retrieves a copy (for thread-safety) of the current TraceConfig.
79 TraceConfig GetCurrentTraceConfig() const; 65 TraceConfig GetCurrentTraceConfig() const;
80 66
81 // Initializes the thread-local event buffer, if not already initialized and 67 // Initializes the thread-local event buffer, if not already initialized and
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 361
376 // MemoryDumpProvider implementation. 362 // MemoryDumpProvider implementation.
377 bool OnMemoryDump(const MemoryDumpArgs& args, 363 bool OnMemoryDump(const MemoryDumpArgs& args,
378 ProcessMemoryDump* pmd) override; 364 ProcessMemoryDump* pmd) override;
379 365
380 // Enable/disable each category group based on the current mode_, 366 // Enable/disable each category group based on the current mode_,
381 // category_filter_ and event_filters_enabled_. 367 // category_filter_ and event_filters_enabled_.
382 // Enable the category group in the recording mode if category_filter_ matches 368 // Enable the category group in the recording mode if category_filter_ matches
383 // the category group, is not null. Enable category for filtering if any 369 // the category group, is not null. Enable category for filtering if any
384 // filter in event_filters_enabled_ enables it. 370 // filter in event_filters_enabled_ enables it.
385 void UpdateCategoryGroupEnabledFlags(); 371 void UpdateCategoryRegistry();
386 void UpdateCategoryGroupEnabledFlag(size_t category_index); 372 void UpdateCategoryState(TraceCategory* category);
387 373
388 void CreateFiltersForTraceConfig(); 374 void CreateFiltersForTraceConfig();
389 375
390 // Configure synthetic delays based on the values set in the current 376 // Configure synthetic delays based on the values set in the current
391 // trace config. 377 // trace config.
392 void UpdateSyntheticDelaysFromTraceConfig(); 378 void UpdateSyntheticDelaysFromTraceConfig();
393 379
394 InternalTraceOptions GetInternalOptionsFromTraceConfig( 380 InternalTraceOptions GetInternalOptionsFromTraceConfig(
395 const TraceConfig& config); 381 const TraceConfig& config);
396 382
397 class ThreadLocalEventBuffer; 383 class ThreadLocalEventBuffer;
398 class OptionalAutoLock; 384 class OptionalAutoLock;
399 struct RegisteredAsyncObserver; 385 struct RegisteredAsyncObserver;
400 386
401 TraceLog(); 387 TraceLog();
402 ~TraceLog() override; 388 ~TraceLog() override;
403 const unsigned char* GetCategoryGroupEnabledInternal(const char* name);
404 void AddMetadataEventsWhileLocked(); 389 void AddMetadataEventsWhileLocked();
405 390
406 InternalTraceOptions trace_options() const { 391 InternalTraceOptions trace_options() const {
407 return static_cast<InternalTraceOptions>( 392 return static_cast<InternalTraceOptions>(
408 subtle::NoBarrier_Load(&trace_options_)); 393 subtle::NoBarrier_Load(&trace_options_));
409 } 394 }
410 395
411 TraceBuffer* trace_buffer() const { return logged_events_.get(); } 396 TraceBuffer* trace_buffer() const { return logged_events_.get(); }
412 TraceBuffer* CreateTraceBuffer(); 397 TraceBuffer* CreateTraceBuffer();
413 398
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 subtle::AtomicWord generation_; 505 subtle::AtomicWord generation_;
521 bool use_worker_thread_; 506 bool use_worker_thread_;
522 507
523 DISALLOW_COPY_AND_ASSIGN(TraceLog); 508 DISALLOW_COPY_AND_ASSIGN(TraceLog);
524 }; 509 };
525 510
526 } // namespace trace_event 511 } // namespace trace_event
527 } // namespace base 512 } // namespace base
528 513
529 #endif // BASE_TRACE_EVENT_TRACE_LOG_H_ 514 #endif // BASE_TRACE_EVENT_TRACE_LOG_H_
OLDNEW
« no previous file with comments | « base/trace_event/trace_event.h ('k') | base/trace_event/trace_log.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698