mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 17:03:56 +08:00
loggerd: put signal in end of route sentinel (#21025)
This commit is contained in:
2
cereal
2
cereal
Submodule cereal updated: b1675bac3d...546ebbff46
@@ -150,8 +150,10 @@ public:
|
||||
#endif
|
||||
};
|
||||
inline static std::atomic<bool> power_failure = false;
|
||||
inline static std::atomic<int> signal = 0;
|
||||
inline operator bool() { return do_exit; }
|
||||
inline ExitHandler& operator=(bool v) {
|
||||
signal = 0;
|
||||
do_exit = v;
|
||||
return *this;
|
||||
}
|
||||
@@ -160,6 +162,7 @@ private:
|
||||
#ifndef __APPLE__
|
||||
power_failure = (sig == SIGPWR);
|
||||
#endif
|
||||
signal = sig;
|
||||
do_exit = true;
|
||||
}
|
||||
inline static std::atomic<bool> do_exit = false;
|
||||
|
||||
@@ -130,10 +130,11 @@ void log_init_data(LoggerState *s) {
|
||||
}
|
||||
|
||||
|
||||
static void log_sentinel(LoggerState *s, cereal::Sentinel::SentinelType type) {
|
||||
static void log_sentinel(LoggerState *s, cereal::Sentinel::SentinelType type, int signal=0) {
|
||||
MessageBuilder msg;
|
||||
auto sen = msg.initEvent().initSentinel();
|
||||
sen.setType(type);
|
||||
sen.setSignal(signal);
|
||||
auto bytes = msg.toBytes();
|
||||
|
||||
logger_log(s, bytes.begin(), bytes.size(), true);
|
||||
@@ -244,8 +245,9 @@ void logger_log(LoggerState *s, uint8_t* data, size_t data_size, bool in_qlog) {
|
||||
pthread_mutex_unlock(&s->lock);
|
||||
}
|
||||
|
||||
void logger_close(LoggerState *s) {
|
||||
log_sentinel(s, cereal::Sentinel::SentinelType::END_OF_ROUTE);
|
||||
void logger_close(LoggerState *s, ExitHandler *exit_handler) {
|
||||
int signal = exit_handler == nullptr ? 0 : exit_handler->signal.load();
|
||||
log_sentinel(s, cereal::Sentinel::SentinelType::END_OF_ROUTE, signal);
|
||||
|
||||
pthread_mutex_lock(&s->lock);
|
||||
if (s->cur_handle) {
|
||||
|
||||
@@ -83,7 +83,7 @@ int logger_next(LoggerState *s, const char* root_path,
|
||||
char* out_segment_path, size_t out_segment_path_len,
|
||||
int* out_part);
|
||||
LoggerHandle* logger_get_handle(LoggerState *s);
|
||||
void logger_close(LoggerState *s);
|
||||
void logger_close(LoggerState *s, ExitHandler *exit_handler=nullptr);
|
||||
void logger_log(LoggerState *s, uint8_t* data, size_t data_size, bool in_qlog);
|
||||
|
||||
void lh_log(LoggerHandle* h, uint8_t* data, size_t data_size, bool in_qlog);
|
||||
|
||||
@@ -468,7 +468,7 @@ int main(int argc, char** argv) {
|
||||
for (auto &t : encoder_threads) t.join();
|
||||
|
||||
LOGW("closing logger");
|
||||
logger_close(&s.logger);
|
||||
logger_close(&s.logger, &do_exit);
|
||||
|
||||
if (do_exit.power_failure){
|
||||
LOGE("power failure");
|
||||
|
||||
Reference in New Issue
Block a user