From 71767237dea8c68f83b73c29b8770902c95af3f3 Mon Sep 17 00:00:00 2001 From: Ken Lin Date: Mon, 11 Dec 2023 07:37:14 +0000 Subject: [PATCH] dumpstate: add logbuffer support for display Add logbuffer support for display driver to dump DSI cmd Bug: 291441544 Test: adb root; adb shell dumpsys android.hardware.dumpstate.IDumpstateDevice/default dump_display_logbuffer Change-Id: I0c40fa9836851caa5b02528888153bd82e3a9d75 Signed-off-by: Ken Lin --- display_logbuffer/Android.bp | 19 +++++++++++ display_logbuffer/dump.mk | 3 ++ display_logbuffer/dump_display_logbuffer.cpp | 32 +++++++++++++++++++ display_logbuffer/init.display_logbuffer.rc | 3 ++ display_logbuffer/sepolicy/device.te | 1 + .../sepolicy/dump_display_logbuffer.te | 3 ++ display_logbuffer/sepolicy/file_contexts | 4 +++ 7 files changed, 65 insertions(+) create mode 100644 display_logbuffer/Android.bp create mode 100644 display_logbuffer/dump.mk create mode 100644 display_logbuffer/dump_display_logbuffer.cpp create mode 100644 display_logbuffer/init.display_logbuffer.rc create mode 100644 display_logbuffer/sepolicy/device.te create mode 100644 display_logbuffer/sepolicy/dump_display_logbuffer.te create mode 100644 display_logbuffer/sepolicy/file_contexts diff --git a/display_logbuffer/Android.bp b/display_logbuffer/Android.bp new file mode 100644 index 0000000..e2859d9 --- /dev/null +++ b/display_logbuffer/Android.bp @@ -0,0 +1,19 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +cc_binary { + name: "dump_display_logbuffer", + srcs: ["dump_display_logbuffer.cpp"], + init_rc: ["init.display_logbuffer.rc"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libdump", + ], + vendor: true, + relative_install_path: "dump", +} diff --git a/display_logbuffer/dump.mk b/display_logbuffer/dump.mk new file mode 100644 index 0000000..9808c1d --- /dev/null +++ b/display_logbuffer/dump.mk @@ -0,0 +1,3 @@ +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/display_logbuffer/sepolicy + +PRODUCT_PACKAGES += dump_display_logbuffer diff --git a/display_logbuffer/dump_display_logbuffer.cpp b/display_logbuffer/dump_display_logbuffer.cpp new file mode 100644 index 0000000..7477c8c --- /dev/null +++ b/display_logbuffer/dump_display_logbuffer.cpp @@ -0,0 +1,32 @@ +/* + * Copyright 2022 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. + */ +#include +#include + +const char* logbuffer_paths[][2] = { + {"DSIM0", "/dev/logbuffer_dsim0"}, + {"DSIM1", "/dev/logbuffer_dsim1"}, +}; + +int main() { + for (auto &logbuffer_path : logbuffer_paths) { + if(!access(logbuffer_path[1], R_OK)) { + dumpFileContent(logbuffer_path[0], logbuffer_path[1]); + } + } + + return 0; +} \ No newline at end of file diff --git a/display_logbuffer/init.display_logbuffer.rc b/display_logbuffer/init.display_logbuffer.rc new file mode 100644 index 0000000..2a39ce3 --- /dev/null +++ b/display_logbuffer/init.display_logbuffer.rc @@ -0,0 +1,3 @@ +on property:ro.build.type=userdebug + chown system system /dev/logbuffer_dsim0 + chown system system /dev/logbuffer_dsim1 diff --git a/display_logbuffer/sepolicy/device.te b/display_logbuffer/sepolicy/device.te new file mode 100644 index 0000000..94432f4 --- /dev/null +++ b/display_logbuffer/sepolicy/device.te @@ -0,0 +1 @@ +type display_log_device, dev_type; \ No newline at end of file diff --git a/display_logbuffer/sepolicy/dump_display_logbuffer.te b/display_logbuffer/sepolicy/dump_display_logbuffer.te new file mode 100644 index 0000000..34da48c --- /dev/null +++ b/display_logbuffer/sepolicy/dump_display_logbuffer.te @@ -0,0 +1,3 @@ +pixel_bugreport(dump_display_logbuffer) + +allow dump_display_logbuffer display_log_device:chr_file r_file_perms; \ No newline at end of file diff --git a/display_logbuffer/sepolicy/file_contexts b/display_logbuffer/sepolicy/file_contexts new file mode 100644 index 0000000..7425214 --- /dev/null +++ b/display_logbuffer/sepolicy/file_contexts @@ -0,0 +1,4 @@ +/vendor/bin/dump/dump_display_logbuffer u:object_r:dump_display_logbuffer_exec:s0 + +/dev/logbuffer_dsim0 u:object_r:display_log_device:s0 +/dev/logbuffer_dsim1 u:object_r:display_log_device:s0