DebugUtils: Introduce DebugUtils HAL

DebugUtils HAL serves the purpose of providing
APIs to collect useful debug information

Change-Id: I3d4853f98dd81e071c27dcc705e44516dcca0f3b
diff --git a/Android.bp b/Android.bp
index 5e90856..251bb87 100644
--- a/Android.bp
+++ b/Android.bp
@@ -44,3 +44,7 @@
     name: "vendor.qti.hardware.fstman",
     path: "vendor/qcom/opensource/interfaces/fstman",
 }
+hidl_package_root {
+    name:"vendor.qti.hardware.debugutils",
+    path:"vendor/qcom/opensource/interfaces/debugutils"
+}
diff --git a/debugutils/1.0/IDebugUtils.hal b/debugutils/1.0/IDebugUtils.hal
new file mode 100644
index 0000000..05859c1
--- /dev/null
+++ b/debugutils/1.0/IDebugUtils.hal
@@ -0,0 +1,140 @@
+/*
+* Copyright (c) 2020 The Linux Foundation. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+*    * Redistributions of source code must retain the above copyright
+*      notice, this list of conditions and the following disclaimer.
+*    * Redistributions in binary form must reproduce the above
+*      copyright notice, this list of conditions and the following
+*      disclaimer in the documentation and/or other materials provided
+*      with the distribution.
+*    * Neither the name of The Linux Foundation. nor the names of its
+*      contributors may be used to endorse or promote products derived
+*      from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package vendor.qti.hardware.debugutils@1.0;
+
+interface IDebugUtils {
+  /**
+  * set breakpoint in a process hosted by @param pid
+  */
+  setBreakPoint(uint64_t pid, bool isProcess, string debugTag) generates (Status status);
+
+  /**
+  * set watchpoint in a thread hosted by @param pid on address stored in @param add
+  */
+  setWatchPoint(uint64_t pid, uint64_t add, string debugTag) generates (Status status);
+
+  /**
+  * Read binder debugfs and move it to another place
+  */
+  collectFullBinderDebugInfo(bool isBlocking, string debugTag) generates (Status status);
+
+  /**
+  * Read binder_debugfs specific to a process hosted with @param pid
+  */
+  collectBinderDebugInfoByPid(uint64_t pid, bool isBlocking, string debugTag)  generates (Status status);
+
+  /**
+  * Read binder_debugfs specific to a process hosted with @param ProcessName
+  */
+  collectBinderDebugInfoByProcessname(string processName, bool isBlocking,string debugTag)  generates (Status status);
+
+  /**
+  * Collect logcat buffer speicified by @param bufferName for duration specified by @param duration
+  */
+  collectUserspaceLogs(string logCmd, string debugTag,uint64_t duration)  generates (Status status);
+
+  /**
+  * collect stacktrace of a process specified by @param ProcessName
+  */
+  collectStackTraceByProcessName(string processName, bool isJava, bool isBlocking, string debugTag)  generates (Status status);
+
+  /**
+  * collect stacktrace of a process specified by @param pid
+  */
+  collectStackTraceByPid(uint64_t pid, bool isJava, bool isBlocking, string debugTag)  generates (Status status);
+
+  /**
+  * start Perfetto tracing
+  */
+  startPerfettoTracing(uint64_t duration, string debugTag)  generates (Status status);
+
+  /**
+  * stop Perfetto tracing
+  */
+  stopPerfettoTracing(string debugTag)  generates (Status status);
+
+  /**
+  * start SimplePerf tracing hosted by @param pid
+  */
+  startSimplePerfTracing(uint64_t pid, uint64_t duration, string debugTag)  generates (Status status);
+
+  /**
+  * stop SimplePerf tracing for process
+  */
+  stopSimplePerfTracing(string debugTag)  generates (Status status);
+
+  /**
+  * execute am command specified by @param Command
+  */
+  executeDumpsysCommands(string command, bool isBlocking, string debugTag)  generates (Status status);
+
+  /**
+  * Collect the stack trace of processes which in IPC with process
+  * hosted by @param pid
+  */
+  collectDependentProcessStackTrace(uint64_t pid, bool isBlocking, string debugTag)  generates (Status status);
+
+  /**
+  * crash the device to collect the ramdump
+  */
+  collectRamdump(string debugTag)  generates (Status status);
+
+  /**
+  * collect memory specific info
+  */
+  collectMemoryInfo(bool isBlocking, string debugTag)  generates (Status status);
+
+  /**
+  * collect CPU specific info
+  */
+  collectCPUInfo(bool isBlocking, string debugTag)  generates (Status status);
+
+  /**
+  *collect process specific Memory info
+  */
+  collectProcessMemoryInfo(bool isBlocking, uint64_t pid, string debugTag)  generates (Status status);
+
+  /**
+  *collect process specific CPU info
+  */
+  collectProcessCPUInfo(bool isBlocking, uint64_t pid, string debugTag)  generates (Status status);
+
+  /**
+  *collect periodic ANR traces
+  */
+  collectPeriodicTraces(uint64_t pid ,uint64_t duration, string debugTag) generates (Status status);
+
+  /**
+  *collect hprof
+  */
+  collectHprof(bool isBlocking, uint64_t pid, string debugTag) generates (Status status);
+
+};
+
diff --git a/debugutils/1.0/types.hal b/debugutils/1.0/types.hal
new file mode 100644
index 0000000..a5e12e9
--- /dev/null
+++ b/debugutils/1.0/types.hal
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2020 The Linux Foundation. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are
+* met:
+*    * Redistributions of source code must retain the above copyright
+*      notice, this list of conditions and the following disclaimer.
+*    * Redistributions in binary form must reproduce the above
+*      copyright notice, this list of conditions and the following
+*      disclaimer in the documentation and/or other materials provided
+*      with the distribution.
+*    * Neither the name of The Linux Foundation. nor the names of its
+*      contributors may be used to endorse or promote products derived
+*      from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+* ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package vendor.qti.hardware.debugutils@1.0;
+
+/**
+*Enum Values indicating the result of operation
+*/
+enum Status : int32_t {
+    /** No errors. */
+    SUCCESS,
+    FAILURE
+};
+
diff --git a/debugutils/current.txt b/debugutils/current.txt
new file mode 100644
index 0000000..32a2cad
--- /dev/null
+++ b/debugutils/current.txt
@@ -0,0 +1,33 @@
+# Copyright (c) 2020, The Linux Foundation. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+#       copyright notice, this list of conditions and the following
+#       disclaimer in the documentation and/or other materials provided
+#       with the distribution.
+#     * Neither the name of The Linux Foundation nor the names of its
+#       contributors may be used to endorse or promote products derived
+#       from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#
+
+######HAL released in Android R######
+18a63da81d8ba6cce0b26466bcedec4f5f518f72f01a680e99676c6df5f1e79a vendor.qti.hardware.debugutils@1.0::types
+02c0b8bb7df784cfd6848b23debf534028cb4ef383af54b4f6d927bcc8381a03 vendor.qti.hardware.debugutils@1.0::IDebugUtils
+