mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-02 20:12:07 +08:00
watchdog_kick: non-allocating (#22892)
* non-allocating * unpack * call kick every second * cleanup include old-commit-hash: ca88a8769be47c8cd27d7290c53b7dfc3b55f0fd
This commit is contained in:
@@ -1,19 +1,12 @@
|
||||
#include "selfdrive/common/watchdog.h"
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
#include "selfdrive/common/timing.h"
|
||||
#include "selfdrive/common/util.h"
|
||||
|
||||
const std::string watchdog_fn_prefix = "/dev/shm/wd_"; // + <pid>
|
||||
|
||||
bool watchdog_kick() {
|
||||
std::string fn = watchdog_fn_prefix + std::to_string(getpid());
|
||||
std::string cur_t = std::to_string(nanos_since_boot());
|
||||
static std::string fn = watchdog_fn_prefix + std::to_string(getpid());
|
||||
|
||||
int r = util::write_file(fn.c_str(), cur_t.data(), cur_t.length(), O_WRONLY | O_CREAT);
|
||||
return r == 0;
|
||||
uint64_t ts = nanos_since_boot();
|
||||
return util::write_file(fn.c_str(), &ts, sizeof(ts), O_WRONLY | O_CREAT) > 0;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import importlib
|
||||
import os
|
||||
import signal
|
||||
import struct
|
||||
import time
|
||||
import subprocess
|
||||
from abc import ABC, abstractmethod
|
||||
@@ -88,7 +89,7 @@ class ManagerProcess(ABC):
|
||||
|
||||
try:
|
||||
fn = WATCHDOG_FN + str(self.proc.pid)
|
||||
self.last_watchdog_time = int(open(fn).read())
|
||||
self.last_watchdog_time = struct.unpack('Q', open(fn, "rb").read())[0]
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
+3
-1
@@ -245,7 +245,9 @@ void QUIState::update() {
|
||||
emit offroadTransition(!ui_state.scene.started);
|
||||
}
|
||||
|
||||
watchdog_kick();
|
||||
if (ui_state.sm->frame % UI_FREQ == 0) {
|
||||
watchdog_kick();
|
||||
}
|
||||
emit uiUpdate(ui_state);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user