From f679a720b0e4005805269cd5b3ac124be87cd0f2 Mon Sep 17 00:00:00 2001 From: roynatech2544 Date: Tue, 14 Dec 2021 13:38:31 +0900 Subject: [PATCH] universal7885: add cc binary for logging Signed-off-by: roynatech2544 --- universal7885-common/debug/Android.bp | 29 ++++++++++++ universal7885-common/debug/Kmsg.cpp | 44 +++++++++++++++++++ universal7885-common/debug/Logcat.cpp | 42 ++++++++++++++++++ universal7885-common/debug/Main.cpp | 7 +++ .../debug/init.debug_daemon.rc | 14 ++++++ 5 files changed, 136 insertions(+) create mode 100644 universal7885-common/debug/Android.bp create mode 100644 universal7885-common/debug/Kmsg.cpp create mode 100644 universal7885-common/debug/Logcat.cpp create mode 100644 universal7885-common/debug/Main.cpp create mode 100644 universal7885-common/debug/init.debug_daemon.rc diff --git a/universal7885-common/debug/Android.bp b/universal7885-common/debug/Android.bp new file mode 100644 index 0000000..0a1458d --- /dev/null +++ b/universal7885-common/debug/Android.bp @@ -0,0 +1,29 @@ +// +// Copyright (C) 2021 Soo Hwan Na "Royna" +// +// 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. +// + +cc_binary { + name: "debug_daemon", + vendor: true, + srcs: [ + "Kmsg.cpp", + "Logcat.cpp", + "Main.cpp", + ], + shared_libs: [ + "liblog", + ], + init_rc: ["init.debug_daemon.rc"], +} diff --git a/universal7885-common/debug/Kmsg.cpp b/universal7885-common/debug/Kmsg.cpp new file mode 100644 index 0000000..49d941e --- /dev/null +++ b/universal7885-common/debug/Kmsg.cpp @@ -0,0 +1,44 @@ +/* + * Copyright 2021 Soo Hwan Na "Royna" + * + * 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. + */ + +#define KMSG_PATH "/proc/kmsg" +#define CHECK_KMSG "/data/debug/kmsg" +#define WRITE_KMSG "/data/debug/logs/kmsg.txt" +#define LOG_TAG "DebugKmsgDaemon" + +#include +#include + +bool check_data(){ + std::ifstream datafile(CHECK_KMSG); + if(datafile.good()){ + datafile.close(); + ALOGI("Found %s, logging...", CHECK_KMSG); + return true; + }else{ + ALOGW("Couldn't find %s, not logging...", CHECK_KMSG); + return false; + } +} + +void copy_kmsg(){ + if(check_data()){ + std::ifstream readfile(KMSG_PATH); + std::ofstream writefile(WRITE_KMSG); + writefile << readfile.rdbuf(); + } +} + diff --git a/universal7885-common/debug/Logcat.cpp b/universal7885-common/debug/Logcat.cpp new file mode 100644 index 0000000..8477342 --- /dev/null +++ b/universal7885-common/debug/Logcat.cpp @@ -0,0 +1,42 @@ +/* + * Copyright 2021 Soo Hwan Na "Royna" + * + * 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. + */ + +#define CHECK_LOGCAT "/data/debug/logcat" +#define WRITE_LOGCAT "/data/debug/logs/logcat.txt" +#define LOG_TAG "DebugLogcatDaemon" + +#include +#include +#include + +bool check_data(){ + std::ifstream datafile(CHECK_KMSG); + if(datafile.good()){ + datafile.close(); + ALOGI("Found %s, logging...", CHECK_KMSG); + return true; + }else{ + ALOGW("Couldn't find %s, not logging...", CHECK_KMSG); + return false; + } +} + +void copy_logcat(){ + if(check_data()){ + system("/system/bin/logcat -f /data/debug/logs/logcat.txt"); + } +} + diff --git a/universal7885-common/debug/Main.cpp b/universal7885-common/debug/Main.cpp new file mode 100644 index 0000000..511ef56 --- /dev/null +++ b/universal7885-common/debug/Main.cpp @@ -0,0 +1,7 @@ +void copy_kmsg(); +void copy_logcat(); +int main(){ + copy_kmsg(); + copy_logcat(); + return 0; +} diff --git a/universal7885-common/debug/init.debug_daemon.rc b/universal7885-common/debug/init.debug_daemon.rc new file mode 100644 index 0000000..54dd883 --- /dev/null +++ b/universal7885-common/debug/init.debug_daemon.rc @@ -0,0 +1,14 @@ +service debug_daemon /vendor/bin/debug_daemon + user root + group system + oneshot + disabled + +on fs + mkdir /data/debug 0755 root system encryption=None + mkdir /data/debug/logs 0755 root system + rm /data/debug/logcat.txt + rm /data/debug/kmsg.txt + +on property:sys.boot_completed=1 + start debug_daemon