make android logcat exit cleanly (#19666)

* make android logcat exit cleanly

* clean up cpu usage script

Co-authored-by: Comma Device <device@comma.ai>
pull/19670/head
Adeeb Shihadeh 2021-01-05 15:10:55 -08:00 committed by GitHub
parent 87950eb312
commit a399ec530d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 12 deletions

View File

@ -24,23 +24,19 @@ import argparse
import re
from collections import defaultdict
import selfdrive.manager as manager
# Do statistics every 5 seconds
PRINT_INTERVAL = 5
SLEEP_INTERVAL = 0.2
monitored_proc_names = [
# openpilot procs
'controlsd', 'locationd', 'loggerd','plannerd',
'ubloxd', 'thermald', 'uploader', 'deleter', 'radard', 'logmessaged', 'tombstoned',
'logcatd', 'proclogd', 'boardd', 'pandad', './ui', 'ui', 'calibrationd', 'params_learner', 'modeld', 'dmonitoringd',
'dmonitoringmodeld', 'camerad', 'sensord', 'updated', 'gpsd', 'athena', 'locationd', 'paramsd',
# offroad APK
'ai.comma.plus.offroad',
# android procs
'SurfaceFlinger', 'sensors.qcom'
]
] + manager.car_started_processes + manager.persistent_processes
cpu_time_names = ['user', 'system', 'children_user', 'children_system']
@ -48,9 +44,7 @@ timer = getattr(time, 'monotonic', time.time)
def get_arg_parser():
parser = argparse.ArgumentParser(
description="Unlogger and UI",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("proc_names", nargs="?", default='',
help="Process names to be monitored, comma seperated")

View File

@ -1,7 +1,9 @@
#include <unistd.h>
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <csignal>
#include <cerrno>
#include <android/log.h>
//#include <log/log.h>
@ -23,7 +25,7 @@ int main() {
signal(SIGINT, (sighandler_t)set_do_exit);
signal(SIGTERM, (sighandler_t)set_do_exit);
struct logger_list *logger_list = android_logger_list_alloc(ANDROID_LOG_RDONLY, 0, 0);
struct logger_list *logger_list = android_logger_list_alloc(ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK, 0, 0);
assert(logger_list);
struct logger *main_logger = android_logger_open(logger_list, LOG_ID_MAIN);
assert(main_logger);
@ -40,7 +42,11 @@ int main() {
while (!do_exit) {
log_msg log_msg;
err = android_logger_list_read(logger_list, &log_msg);
if (err <= 0) {
if (err == -EAGAIN) {
usleep(500 * 1000);
continue;
} else if (err <= 0) {
break;
}
@ -64,5 +70,6 @@ int main() {
}
android_logger_list_close(logger_list);
android_logger_list_free(logger_list);
return 0;
}