summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/utils/CameraTraces.h
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2013-10-23 16:40:06 -0700
committerIgor Murashkin <iam@google.com>2013-10-29 11:49:05 -0700
commitff3e31d2b100d8efd969b358b18e4405c49dd10d (patch)
tree6d3bcd6772305f06fcf85c498365c8c198a7fbc9 /services/camera/libcameraservice/utils/CameraTraces.h
parent95c03858e2ab4fb693a2bfe47b3caa806e43c044 (diff)
downloadframeworks_av-ff3e31d2b100d8efd969b358b18e4405c49dd10d.zip
frameworks_av-ff3e31d2b100d8efd969b358b18e4405c49dd10d.tar.gz
frameworks_av-ff3e31d2b100d8efd969b358b18e4405c49dd10d.tar.bz2
camera: Collect stack traces when bad things happen, print with dumpsys
Bug: 11324229 Change-Id: Ic920e170a8f5a389fc139bbf5416c0e3186c7fb6
Diffstat (limited to 'services/camera/libcameraservice/utils/CameraTraces.h')
-rw-r--r--services/camera/libcameraservice/utils/CameraTraces.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/utils/CameraTraces.h b/services/camera/libcameraservice/utils/CameraTraces.h
new file mode 100644
index 0000000..d10dbc9
--- /dev/null
+++ b/services/camera/libcameraservice/utils/CameraTraces.h
@@ -0,0 +1,66 @@
+/*
+ * 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 ANDROID_SERVERS_CAMERA_TRACES_H_
+#define ANDROID_SERVERS_CAMERA_TRACES_H_
+
+#include <utils/Errors.h>
+#include <utils/String16.h>
+#include <utils/Vector.h>
+
+namespace android {
+namespace camera3 {
+
+class CameraTracesImpl;
+
+// Collect a list of the process's stack traces
+class CameraTraces {
+public:
+ /**
+ * Save the current stack trace for each thread in the process. At most
+ * MAX_TRACES will be saved, after which the oldest traces will be discarded.
+ *
+ * <p>Use CameraTraces::dump to print out the traces.</p>
+ */
+ static void saveTrace();
+
+ /**
+ * Prints all saved traces to the specified file descriptor.
+ *
+ * <p>Each line is indented by DUMP_INDENT spaces.</p>
+ */
+ static status_t dump(int fd, const Vector<String16>& args);
+
+private:
+ enum {
+ // Don't collect more than 100 traces. Discard oldest.
+ MAX_TRACES = 100,
+
+ // Insert 2 spaces when dumping the traces
+ DUMP_INDENT = 2,
+ };
+
+ CameraTraces();
+ ~CameraTraces();
+ CameraTraces(CameraTraces& rhs);
+
+ static CameraTracesImpl& sImpl;
+}; // class CameraTraces
+
+}; // namespace camera3
+}; // namespace android
+
+#endif // ANDROID_SERVERS_CAMERA_TRACES_H_