17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Use of this source code is governed by a BSD-style license that can be 37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// found in the LICENSE file. 47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#ifndef TracedTask_h 67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define TracedTask_h 77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/Task.h" 97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/TraceEvent.h" 107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/TraceLocation.h" 117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccinamespace blink { 137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#ifdef MANGLE_COMPILES_ON_WIN_OK 157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// TODO: Once win version compiles correctly when using TRACE_ID_MANGLE remove 167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// the ifdef to always mangle 177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define MANGLE(id) TRACE_ID_MANGLE(id) 187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#else 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define MANGLE(id) (id) 207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass TracedTask { 237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccipublic: 247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci typedef Function<void()> Task; 257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void run() const; 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciprivate: 297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci friend class Scheduler; 307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci TracedTask(const Task&, const TraceLocation&, const char* traceName); 317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // Declared volatile as it is atomically incremented. 337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static volatile int s_nextFlowTraceID; 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci uint64_t m_flowTraceID; 367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Task m_task; 377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci TraceLocation m_location; 387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci const char* m_traceName; 397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}; 407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink 427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // TracedTask_h 44