| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -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} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
  |