1dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier/* 2dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * Copyright (C) 2016 The Android Open Source Project 3dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * 4dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * Licensed under the Apache License, Version 2.0 (the "License"); 5dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * you may not use this file except in compliance with the License. 6dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * You may obtain a copy of the License at 7dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * 8dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * http://www.apache.org/licenses/LICENSE-2.0 9dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * 10dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * Unless required by applicable law or agreed to in writing, software 11dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * distributed under the License is distributed on an "AS IS" BASIS, 12dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * See the License for the specific language governing permissions and 14dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier * limitations under the License. 15dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier */ 16dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier 17dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier#ifndef ART_RUNTIME_BASE_SYSTRACE_H_ 18dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier#define ART_RUNTIME_BASE_SYSTRACE_H_ 19dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier 20dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier#define ATRACE_TAG ATRACE_TAG_DALVIK 21dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier#include <cutils/trace.h> 22dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier#include <string> 23dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier#include <utils/Trace.h> 24dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier 25dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartiernamespace art { 26dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier 27dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartierclass ScopedTrace { 28dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier public: 29dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier explicit ScopedTrace(const char* name) { 30dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier ATRACE_BEGIN(name); 31dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier } 32dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier 33dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier explicit ScopedTrace(const std::string& name) : ScopedTrace(name.c_str()) {} 34dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier 35dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier ~ScopedTrace() { 36dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier ATRACE_END(); 37dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier } 38dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier}; 39dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier 40dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier} // namespace art 41dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier 42dabdc0fe183d4684f3cf4d70cb09d318cff81b42Mathieu Chartier#endif // ART_RUNTIME_BASE_SYSTRACE_H_ 43