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