    daemon = False
    sigkill = False
    onroad = True
    offroad = False
    driverview = False
    notcar = False
    proc: Optional[Process] = None
    enabled = True
    name = ""
  
    last_watchdog_time = 0
 
</s> remove   def __init__(self, name, module, enabled=True, onroad=True, offroad=False, driverview=False, notcar=False, unkillable=False, sigkill=False, watchdog_max_dt=None):
 </s> add   def __init__(self, name, module, enabled=True, onroad=True, offroad=False, callback=None, unkillable=False, sigkill=False, watchdog_max_dt=None): </s> remove     self.driverview = driverview
    self.notcar = notcar
 </s> add     self.callback = callback </s> remove     self.driverview = driverview
    self.notcar = notcar
 </s> add     self.callback = callback </s> remove   def __init__(self, name, cwd, cmdline, enabled=True, onroad=True, offroad=False, driverview=False, notcar=False, unkillable=False, sigkill=False, watchdog_max_dt=None):
 </s> add   def __init__(self, name, cwd, cmdline, enabled=True, onroad=True, offroad=False, callback=None, unkillable=False, sigkill=False, watchdog_max_dt=None): </s> remove     driverview = params.get_bool("IsDriverViewEnabled")
    ensure_running(managed_processes.values(), started=started, driverview=driverview, notcar=sm['carParams'].notCar, not_run=ignore)
 </s> add     ensure_running(managed_processes.values(), started, params=params, CP=sm['carParams'], not_run=ignore)
  callback: Optional[Callable[[bool, Params, car.CarParams], bool]] = None
    daemon = False
    sigkill = False
    onroad = True
    offroad = False
  callback: Optional[Callable[[bool, Params, car.CarParams], bool]] = None
  callback: Optional[Callable[[bool, Params, car.CarParams], bool]] = None
    proc: Optional[Process] = None
    enabled = True
    name = ""
  
    last_watchdog_time = 0
keep keep keep keep replace replace keep keep keep keep keep
 manager: start process by callback (#24417) 
selfdrive/manager/process.py