use std::unique_ptr

pull/23217/head
deanlee 4 years ago
parent a0a5f35072
commit c671f8ca71
  1. 27
      selfdrive/logcatd/logcatd_android.cc

@ -1,6 +1,8 @@
#include <sys/time.h> #include <sys/time.h>
#include <sys/resource.h> #include <sys/resource.h>
#include <memory>
#include <android/log.h> #include <android/log.h>
#include <log/logger.h> #include <log/logger.h>
#include <log/logprint.h> #include <log/logprint.h>
@ -17,29 +19,28 @@ int main() {
struct timespec cur_time; struct timespec cur_time;
clock_gettime(CLOCK_REALTIME, &cur_time); clock_gettime(CLOCK_REALTIME, &cur_time);
log_time last_log_time(cur_time); log_time last_log_time(cur_time);
logger_list *logger_list = nullptr;
while (!do_exit) { while (!do_exit) {
// setup android logging // setup android logging
if (!logger_list) { std::unique_ptr<logger_list, decltype(&android_logger_list_free)> logger_list(
logger_list = android_logger_list_alloc_time(ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK, last_log_time, 0); android_logger_list_alloc_time(ANDROID_LOG_RDONLY | ANDROID_LOG_NONBLOCK, last_log_time, 0),
} &android_logger_list_free);
assert(logger_list); assert(logger_list);
struct logger *main_logger = android_logger_open(logger_list, LOG_ID_MAIN); struct logger *main_logger = android_logger_open(logger_list.get(), LOG_ID_MAIN);
assert(main_logger); assert(main_logger);
struct logger *radio_logger = android_logger_open(logger_list, LOG_ID_RADIO); struct logger *radio_logger = android_logger_open(logger_list.get(), LOG_ID_RADIO);
assert(radio_logger); assert(radio_logger);
struct logger *system_logger = android_logger_open(logger_list, LOG_ID_SYSTEM); struct logger *system_logger = android_logger_open(logger_list.get(), LOG_ID_SYSTEM);
assert(system_logger); assert(system_logger);
struct logger *crash_logger = android_logger_open(logger_list, LOG_ID_CRASH); struct logger *crash_logger = android_logger_open(logger_list.get(), LOG_ID_CRASH);
assert(crash_logger); assert(crash_logger);
struct logger *kernel_logger = android_logger_open(logger_list, (log_id_t)5); // LOG_ID_KERNEL struct logger *kernel_logger = android_logger_open(logger_list.get(), (log_id_t)5); // LOG_ID_KERNEL
assert(kernel_logger); assert(kernel_logger);
while (!do_exit) { while (!do_exit) {
log_msg log_msg; log_msg log_msg;
int err = android_logger_list_read(logger_list, &log_msg); int err = android_logger_list_read(logger_list.get(), &log_msg);
if (err <= 0) break; if (err <= 0) break;
AndroidLogEntry entry; AndroidLogEntry entry;
@ -61,14 +62,8 @@ int main() {
pm.send("androidLog", msg); pm.send("androidLog", msg);
} }
android_logger_list_free(logger_list);
logger_list = NULL;
util::sleep_for(500); util::sleep_for(500);
} }
if (logger_list) {
android_logger_list_free(logger_list);
}
return 0; return 0;
} }

Loading…
Cancel
Save