In early versions of Android, surface flinger was hosted along with the rest of the framework services in a single process space. Consequently, any fatal failures in Surface Flinger terminates the core framework process (system_server) and from here on all services, including Surface Flinger, are restarted. However, in later versions of Android, Surface Flinger was separated into its own process space and yet termination of the same causes a framework reboot. So how is this done?
Its because of the way services and their dependencies are setup at boot time. Init process's configuration is setup like this in init.rc,
init process receives a signal (SIGCHLD) anytime surface flinger is terminated or killed. The corresponding handler basically restarts zygote and this causes the framework reboot.
Its because of the way services and their dependencies are setup at boot time. Init process's configuration is setup like this in init.rc,
service surfaceflinger /system/bin/surfaceflinger
class main
user system
group graphics drmrpc
onrestart restart zygote
init process receives a signal (SIGCHLD) anytime surface flinger is terminated or killed. The corresponding handler basically restarts zygote and this causes the framework reboot.
No comments:
Post a Comment