  
    sm = messaging.SubMaster(['deviceState', 'carParams'], poll=['deviceState'])
    pm = messaging.PubMaster(['managerState'])
  
    while True:
      sm.update()
  
      started = sm['deviceState'].started
 
</s> remove   ensure_running(managed_processes.values(), started=False, not_run=ignore)

 </s> add  </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) </s> remove   driverview = False
  notcar = False
 </s> add   callback: Optional[Callable[[bool, Params, car.CarParams], bool]] = 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
  ensure_running(managed_processes.values(), False, params=params, CP=sm['carParams'], not_run=ignore)

  
    sm = messaging.SubMaster(['deviceState', 'carParams'], poll=['deviceState'])
    pm = messaging.PubMaster(['managerState'])
  
  ensure_running(managed_processes.values(), False, params=params, CP=sm['carParams'], not_run=ignore)

    while True:
      sm.update()
  
      started = sm['deviceState'].started
keep keep keep add keep keep keep keep
 manager: start process by callback (#24417) 
selfdrive/manager/manager.py