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

Unified Diff: base/event_trace_controller_win.cc

Issue 4517004: Move Windows-specific Event Tracing for Windows implementation to base/win. ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Fixed another ETW user in Chrome Frame Created 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/event_trace_controller_win.h ('k') | base/event_trace_controller_win_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/event_trace_controller_win.cc
===================================================================
--- base/event_trace_controller_win.cc (revision 65062)
+++ base/event_trace_controller_win.cc (working copy)
@@ -1,167 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-// Implementation of a Windows event trace controller class.
-#include "base/event_trace_controller_win.h"
-#include "base/logging.h"
-
-EtwTraceProperties::EtwTraceProperties() {
- memset(buffer_, 0, sizeof(buffer_));
- EVENT_TRACE_PROPERTIES* prop = get();
-
- prop->Wnode.BufferSize = sizeof(buffer_);
- prop->Wnode.Flags = WNODE_FLAG_TRACED_GUID;
- prop->LoggerNameOffset = sizeof(EVENT_TRACE_PROPERTIES);
- prop->LogFileNameOffset = sizeof(EVENT_TRACE_PROPERTIES) +
- sizeof(wchar_t) * kMaxStringLen;
-}
-
-HRESULT EtwTraceProperties::SetLoggerName(const wchar_t* logger_name) {
- size_t len = wcslen(logger_name) + 1;
- if (kMaxStringLen < len)
- return E_INVALIDARG;
-
- memcpy(buffer_ + get()->LoggerNameOffset,
- logger_name,
- sizeof(wchar_t) * len);
- return S_OK;
-}
-
-HRESULT EtwTraceProperties::SetLoggerFileName(const wchar_t* logger_file_name) {
- size_t len = wcslen(logger_file_name) + 1;
- if (kMaxStringLen < len)
- return E_INVALIDARG;
-
- memcpy(buffer_ + get()->LogFileNameOffset,
- logger_file_name,
- sizeof(wchar_t) * len);
- return S_OK;
-}
-
-EtwTraceController::EtwTraceController() : session_(NULL) {
-}
-
-EtwTraceController::~EtwTraceController() {
- Stop(NULL);
-}
-
-HRESULT EtwTraceController::Start(const wchar_t* session_name,
- EtwTraceProperties* prop) {
- DCHECK(NULL == session_ && session_name_.empty());
- EtwTraceProperties ignore;
- if (prop == NULL)
- prop = &ignore;
-
- HRESULT hr = Start(session_name, prop, &session_);
- if (SUCCEEDED(hr))
- session_name_ = session_name;
-
- return hr;
-}
-
-HRESULT EtwTraceController::StartFileSession(const wchar_t* session_name,
- const wchar_t* logfile_path, bool realtime) {
- DCHECK(NULL == session_ && session_name_.empty());
-
- EtwTraceProperties prop;
- prop.SetLoggerFileName(logfile_path);
- EVENT_TRACE_PROPERTIES& p = *prop.get();
- p.Wnode.ClientContext = 1; // QPC timer accuracy.
- p.LogFileMode = EVENT_TRACE_FILE_MODE_SEQUENTIAL; // Sequential log.
- if (realtime)
- p.LogFileMode |= EVENT_TRACE_REAL_TIME_MODE;
-
- p.MaximumFileSize = 100; // 100M file size.
- p.FlushTimer = 30; // 30 seconds flush lag.
- return Start(session_name, &prop);
-}
-
-HRESULT EtwTraceController::StartRealtimeSession(const wchar_t* session_name,
- size_t buffer_size) {
- DCHECK(NULL == session_ && session_name_.empty());
- EtwTraceProperties prop;
- EVENT_TRACE_PROPERTIES& p = *prop.get();
- p.LogFileMode = EVENT_TRACE_REAL_TIME_MODE | EVENT_TRACE_USE_PAGED_MEMORY;
- p.FlushTimer = 1; // flush every second.
- p.BufferSize = 16; // 16 K buffers.
- p.LogFileNameOffset = 0;
- return Start(session_name, &prop);
-}
-
-HRESULT EtwTraceController::EnableProvider(REFGUID provider, UCHAR level,
- ULONG flags) {
- ULONG error = ::EnableTrace(TRUE, flags, level, &provider, session_);
- return HRESULT_FROM_WIN32(error);
-}
-
-HRESULT EtwTraceController::DisableProvider(REFGUID provider) {
- ULONG error = ::EnableTrace(FALSE, 0, 0, &provider, session_);
- return HRESULT_FROM_WIN32(error);
-}
-
-HRESULT EtwTraceController::Stop(EtwTraceProperties* properties) {
- EtwTraceProperties ignore;
- if (properties == NULL)
- properties = &ignore;
-
- ULONG error = ::ControlTrace(session_, NULL, properties->get(),
- EVENT_TRACE_CONTROL_STOP);
- if (ERROR_SUCCESS != error)
- return HRESULT_FROM_WIN32(error);
-
- session_ = NULL;
- session_name_.clear();
- return S_OK;
-}
-
-HRESULT EtwTraceController::Flush(EtwTraceProperties* properties) {
- EtwTraceProperties ignore;
- if (properties == NULL)
- properties = &ignore;
-
- ULONG error = ::ControlTrace(session_, NULL, properties->get(),
- EVENT_TRACE_CONTROL_FLUSH);
- if (ERROR_SUCCESS != error)
- return HRESULT_FROM_WIN32(error);
-
- return S_OK;
-}
-
-HRESULT EtwTraceController::Start(const wchar_t* session_name,
- EtwTraceProperties* properties, TRACEHANDLE* session_handle) {
- DCHECK(properties != NULL);
- ULONG err = ::StartTrace(session_handle, session_name, properties->get());
- return HRESULT_FROM_WIN32(err);
-}
-
-HRESULT EtwTraceController::Query(const wchar_t* session_name,
- EtwTraceProperties* properties) {
- ULONG err = ::ControlTrace(NULL, session_name, properties->get(),
- EVENT_TRACE_CONTROL_QUERY);
- return HRESULT_FROM_WIN32(err);
-};
-
-HRESULT EtwTraceController::Update(const wchar_t* session_name,
- EtwTraceProperties* properties) {
- DCHECK(properties != NULL);
- ULONG err = ::ControlTrace(NULL, session_name, properties->get(),
- EVENT_TRACE_CONTROL_UPDATE);
- return HRESULT_FROM_WIN32(err);
-}
-
-HRESULT EtwTraceController::Stop(const wchar_t* session_name,
- EtwTraceProperties* properties) {
- DCHECK(properties != NULL);
- ULONG err = ::ControlTrace(NULL, session_name, properties->get(),
- EVENT_TRACE_CONTROL_STOP);
- return HRESULT_FROM_WIN32(err);
-}
-
-HRESULT EtwTraceController::Flush(const wchar_t* session_name,
- EtwTraceProperties* properties) {
- DCHECK(properties != NULL);
- ULONG err = ::ControlTrace(NULL, session_name, properties->get(),
- EVENT_TRACE_CONTROL_FLUSH);
- return HRESULT_FROM_WIN32(err);
-}
« no previous file with comments | « base/event_trace_controller_win.h ('k') | base/event_trace_controller_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698