Process config cleanup (#20276)

* add enabled flag

* remove hack

* only prepare when enabled
old-commit-hash: 476558b547
vw-mqb-aeb
Willem Melching 4 years ago committed by GitHub
parent 2654277bc3
commit c993097393
  1. 17
      selfdrive/manager/process.py
  2. 33
      selfdrive/manager/process_config.py
  3. 2
      selfdrive/test/process_replay/process_replay.py

@ -58,6 +58,7 @@ class ManagerProcess(ABC):
daemon = False daemon = False
sigkill = False sigkill = False
proc = None proc = None
enabled = True
name = "" name = ""
@abstractmethod @abstractmethod
@ -123,10 +124,11 @@ class ManagerProcess(ABC):
class NativeProcess(ManagerProcess): class NativeProcess(ManagerProcess):
def __init__(self, name, cwd, cmdline, persistent=False, driverview=False, unkillable=False, sigkill=False): def __init__(self, name, cwd, cmdline, enabled=True, persistent=False, driverview=False, unkillable=False, sigkill=False):
self.name = name self.name = name
self.cwd = cwd self.cwd = cwd
self.cmdline = cmdline self.cmdline = cmdline
self.enabled = enabled
self.persistent = persistent self.persistent = persistent
self.driverview = driverview self.driverview = driverview
self.unkillable = unkillable self.unkillable = unkillable
@ -146,17 +148,19 @@ class NativeProcess(ManagerProcess):
class PythonProcess(ManagerProcess): class PythonProcess(ManagerProcess):
def __init__(self, name, module, persistent=False, driverview=False, unkillable=False, sigkill=False): def __init__(self, name, module, enabled=True, persistent=False, driverview=False, unkillable=False, sigkill=False):
self.name = name self.name = name
self.module = module self.module = module
self.enabled = enabled
self.persistent = persistent self.persistent = persistent
self.driverview = driverview self.driverview = driverview
self.unkillable = unkillable self.unkillable = unkillable
self.sigkill = sigkill self.sigkill = sigkill
def prepare(self): def prepare(self):
cloudlog.info("preimporting %s" % self.module) if self.enabled:
importlib.import_module(self.module) cloudlog.info("preimporting %s" % self.module)
importlib.import_module(self.module)
def start(self): def start(self):
if self.proc is not None: if self.proc is not None:
@ -170,10 +174,11 @@ class PythonProcess(ManagerProcess):
class DaemonProcess(ManagerProcess): class DaemonProcess(ManagerProcess):
"""Python process that has to stay running accross manager restart. """Python process that has to stay running accross manager restart.
This is used for athena so you don't lose SSH access when restarting manager.""" This is used for athena so you don't lose SSH access when restarting manager."""
def __init__(self, name, module, param_name): def __init__(self, name, module, param_name, enabled=True):
self.name = name self.name = name
self.module = module self.module = module
self.param_name = param_name self.param_name = param_name
self.enabled = enabled
self.persistent = True self.persistent = True
def prepare(self): def prepare(self):
@ -215,6 +220,8 @@ def ensure_running(procs, started, driverview=False, not_run=None):
for p in procs: for p in procs:
if p.name in not_run: if p.name in not_run:
p.stop() p.stop()
elif not p.enabled:
p.stop()
elif p.persistent: elif p.persistent:
p.start() p.start()
elif p.driverview and driverview: elif p.driverview and driverview:

@ -10,47 +10,30 @@ procs = [
# due to qualcomm kernel bugs SIGKILLing camerad sometimes causes page table corruption # due to qualcomm kernel bugs SIGKILLing camerad sometimes causes page table corruption
NativeProcess("camerad", "selfdrive/camerad", ["./camerad"], unkillable=True, driverview=True), NativeProcess("camerad", "selfdrive/camerad", ["./camerad"], unkillable=True, driverview=True),
NativeProcess("clocksd", "selfdrive/clocksd", ["./clocksd"]), NativeProcess("clocksd", "selfdrive/clocksd", ["./clocksd"]),
NativeProcess("dmonitoringmodeld", "selfdrive/modeld", ["./dmonitoringmodeld"], enabled=(not PC or WEBCAM), driverview=True),
NativeProcess("logcatd", "selfdrive/logcatd", ["./logcatd"]), NativeProcess("logcatd", "selfdrive/logcatd", ["./logcatd"]),
NativeProcess("loggerd", "selfdrive/loggerd", ["./loggerd"]), NativeProcess("loggerd", "selfdrive/loggerd", ["./loggerd"]),
NativeProcess("modeld", "selfdrive/modeld", ["./modeld"]), NativeProcess("modeld", "selfdrive/modeld", ["./modeld"]),
NativeProcess("proclogd", "selfdrive/proclogd", ["./proclogd"]), NativeProcess("proclogd", "selfdrive/proclogd", ["./proclogd"]),
NativeProcess("sensord", "selfdrive/sensord", ["./sensord"], enabled=not PC, persistent=EON, sigkill=EON),
NativeProcess("ubloxd", "selfdrive/locationd", ["./ubloxd"], enabled=(not PC or WEBCAM)),
NativeProcess("ui", "selfdrive/ui", ["./ui"], persistent=True), NativeProcess("ui", "selfdrive/ui", ["./ui"], persistent=True),
PythonProcess("calibrationd", "selfdrive.locationd.calibrationd"), PythonProcess("calibrationd", "selfdrive.locationd.calibrationd"),
PythonProcess("controlsd", "selfdrive.controls.controlsd"), PythonProcess("controlsd", "selfdrive.controls.controlsd"),
PythonProcess("deleter", "selfdrive.loggerd.deleter", persistent=True), PythonProcess("deleter", "selfdrive.loggerd.deleter", persistent=True),
PythonProcess("dmonitoringd", "selfdrive.monitoring.dmonitoringd", enabled=(not PC or WEBCAM), driverview=True),
PythonProcess("locationd", "selfdrive.locationd.locationd"), PythonProcess("locationd", "selfdrive.locationd.locationd"),
PythonProcess("logmessaged", "selfdrive.logmessaged", persistent=True), PythonProcess("logmessaged", "selfdrive.logmessaged", persistent=True),
PythonProcess("pandad", "selfdrive.pandad", persistent=True), PythonProcess("pandad", "selfdrive.pandad", persistent=True),
PythonProcess("paramsd", "selfdrive.locationd.paramsd"), PythonProcess("paramsd", "selfdrive.locationd.paramsd"),
PythonProcess("plannerd", "selfdrive.controls.plannerd"), PythonProcess("plannerd", "selfdrive.controls.plannerd"),
PythonProcess("radard", "selfdrive.controls.radard"), PythonProcess("radard", "selfdrive.controls.radard"),
PythonProcess("rtshield", "selfdrive.rtshield", enabled=EON),
PythonProcess("thermald", "selfdrive.thermald.thermald", persistent=True), PythonProcess("thermald", "selfdrive.thermald.thermald", persistent=True),
PythonProcess("timezoned", "selfdrive.timezoned", enabled=TICI, persistent=True),
PythonProcess("tombstoned", "selfdrive.tombstoned", enabled=not PC, persistent=True),
PythonProcess("updated", "selfdrive.updated", enabled=not PC, persistent=True),
PythonProcess("uploader", "selfdrive.loggerd.uploader", persistent=True), PythonProcess("uploader", "selfdrive.loggerd.uploader", persistent=True),
] ]
if not PC:
procs += [
NativeProcess("sensord", "selfdrive/sensord", ["./sensord"], persistent=EON, sigkill=EON),
PythonProcess("tombstoned", "selfdrive.tombstoned", persistent=True),
PythonProcess("updated", "selfdrive.updated", persistent=True),
]
if not PC or WEBCAM:
procs += [
NativeProcess("ubloxd", "selfdrive/locationd", ["./ubloxd"]),
PythonProcess("dmonitoringd", "selfdrive.monitoring.dmonitoringd", driverview=True),
NativeProcess("dmonitoringmodeld", "selfdrive/modeld", ["./dmonitoringmodeld"], driverview=True),
]
if TICI:
procs += [
PythonProcess("timezoned", "selfdrive.timezoned", persistent=True),
]
if EON:
procs += [
PythonProcess("rtshield", "selfdrive.rtshield"),
]
managed_processes = {p.name: p for p in procs} managed_processes = {p.name: p for p in procs}

@ -14,8 +14,6 @@ from cereal import car, log
from cereal.services import service_list from cereal.services import service_list
from common.params import Params from common.params import Params
from selfdrive.car.car_helpers import get_car from selfdrive.car.car_helpers import get_car
os.environ['WEBCAM'] = '1' # hack to get dmonitoringd in managed_processes
from selfdrive.manager.process import PythonProcess from selfdrive.manager.process import PythonProcess
from selfdrive.manager.process_config import managed_processes from selfdrive.manager.process_config import managed_processes

Loading…
Cancel
Save