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
parent
87950eb312
commit
a399ec530d
|
@ -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")
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue