summaryrefslogtreecommitdiffstats
path: root/modules/camera/ScopedTrace.h
diff options
context:
space:
mode:
authorAlex Ray <aray@google.com>2013-04-29 12:24:49 -0700
committerAlex Ray <aray@google.com>2013-04-29 14:16:57 -0700
commitc16e56dd43643d9013a72ddc42ab08e72f485382 (patch)
tree977c9bff87b8c8623a227b2cfe2dd415f05190da /modules/camera/ScopedTrace.h
parent005c9da54402e28eab5b8d52b729268a94ef4d61 (diff)
downloadhardware_libhardware-c16e56dd43643d9013a72ddc42ab08e72f485382.zip
hardware_libhardware-c16e56dd43643d9013a72ddc42ab08e72f485382.tar.gz
hardware_libhardware-c16e56dd43643d9013a72ddc42ab08e72f485382.tar.bz2
modules: camera: Add scoped trace helper
This c++ helper class is normally provided by frameworks/native's libutils, but cannot be used from the context of a hardware module. For now just add the required functionality locally in the hardware module. Change-Id: I5b399cbeb1c017a95baf19456dbf20569e677fbe
Diffstat (limited to 'modules/camera/ScopedTrace.h')
-rw-r--r--modules/camera/ScopedTrace.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/modules/camera/ScopedTrace.h b/modules/camera/ScopedTrace.h
new file mode 100644
index 0000000..ed00570
--- /dev/null
+++ b/modules/camera/ScopedTrace.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef CAMERA_SCOPED_TRACE_H
+#define CAMERA_SCOPED_TRACE_H
+
+#include <stdint.h>
+#include <cutils/trace.h>
+
+// See <cutils/trace.h> for more tracing macros.
+
+// CAMTRACE_NAME traces the beginning and end of the current scope. To trace
+// the correct start and end times this macro should be declared first in the
+// scope body.
+#define CAMTRACE_NAME(name) ScopedTrace ___tracer(ATRACE_TAG, name)
+// CAMTRACE_CALL is an ATRACE_NAME that uses the current function name.
+#define CAMTRACE_CALL() CAMTRACE_NAME(__FUNCTION__)
+
+namespace default_camera_hal {
+
+class ScopedTrace {
+public:
+inline ScopedTrace(uint64_t tag, const char* name)
+ : mTag(tag) {
+ atrace_begin(mTag,name);
+}
+
+inline ~ScopedTrace() {
+ atrace_end(mTag);
+}
+
+private:
+ uint64_t mTag;
+};
+
+}; // namespace default_camera_hal
+
+#endif // CAMERA_SCOPED_TRACE_H