watchdog_kick: non-allocating (#22892)

* non-allocating

* unpack

* call kick every second

* cleanup include
old-commit-hash: ca88a8769b
commatwo_master
Dean Lee 3 years ago committed by GitHub
parent 688b55c8e0
commit 84097b29df
  1. 13
      selfdrive/common/watchdog.cc
  2. 3
      selfdrive/manager/process.py
  3. 4
      selfdrive/ui/ui.cc

@ -1,19 +1,12 @@
#include "selfdrive/common/watchdog.h" #include "selfdrive/common/watchdog.h"
#include <unistd.h>
#include <cstdint>
#include <string>
#include "selfdrive/common/timing.h" #include "selfdrive/common/timing.h"
#include "selfdrive/common/util.h" #include "selfdrive/common/util.h"
const std::string watchdog_fn_prefix = "/dev/shm/wd_"; // + <pid> const std::string watchdog_fn_prefix = "/dev/shm/wd_"; // + <pid>
bool watchdog_kick() { bool watchdog_kick() {
std::string fn = watchdog_fn_prefix + std::to_string(getpid()); static std::string fn = watchdog_fn_prefix + std::to_string(getpid());
std::string cur_t = std::to_string(nanos_since_boot());
int r = util::write_file(fn.c_str(), cur_t.data(), cur_t.length(), O_WRONLY | O_CREAT); uint64_t ts = nanos_since_boot();
return r == 0; return util::write_file(fn.c_str(), &ts, sizeof(ts), O_WRONLY | O_CREAT) > 0;
} }

@ -1,6 +1,7 @@
import importlib import importlib
import os import os
import signal import signal
import struct
import time import time
import subprocess import subprocess
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
@ -88,7 +89,7 @@ class ManagerProcess(ABC):
try: try:
fn = WATCHDOG_FN + str(self.proc.pid) 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: except Exception:
pass pass

@ -245,7 +245,9 @@ void QUIState::update() {
emit offroadTransition(!ui_state.scene.started); emit offroadTransition(!ui_state.scene.started);
} }
watchdog_kick(); if (ui_state.sm->frame % UI_FREQ == 0) {
watchdog_kick();
}
emit uiUpdate(ui_state); emit uiUpdate(ui_state);
} }

Loading…
Cancel
Save