As already explained by Oli, the Ubuntu Touch "flipped" architecture runs the Android services within an LXC container. This brings a number of advantages but there is a problem: knowing when specific Android services are ready. This is needed such that the Ubuntu Upstart jobs running on the host side can start as soon as possible, but no sooner ;)
Currently, the approach is to use heuristics to determine the "readiness" of the Android services, but this can be unreliable. A better solution would be to have a way to create Upstart events on the host-side when services changes occur in the Android environment. The plan at this stage is to make use of Androids System Properties and create a 2-part solution: 1) Create an Upstart bridge that runs on the host. This bridge will listen on a socket and read data in the form: <name>=<value>\n This will be converted into an upstart event of the form: <event-name> <name>=<value> The <event-name> will be specified as an argument to the bridge for security reasons and would be set to something like "android-property" for Touch. The bridge would run at the system level (as root) on the host (since it has to start *before* the Android container, but the events it generates would be accessible to the Session (once that has been converted to use an Upstart Session Init) as ":sys:<event-name>" allowing Upstart jobs to specify conditions such as: # run job when ueventd has started in Androids LXC container start on :sys:android-property init.svc.ueventd=running 2) Create an Android service that runs early in the Android boot process. This service would: - connect to the well-known socket the bridge is already listening on. - monitor Androids System Properties and write them to the socket in the form: <name>=<value>\n ---------- Ideally, we would just have a single Upstart bridge on the host side which is able to monitor property changes (*) without the need for "helper" processes on the Android side. There are a number of solutions that involve modifying Androids init, but we're attempting to avoid doing that. If anyone knows of a better way to solve this problem, please jump in. Kind regards, James. -- James Hunt (*) - just like 'watchprop' does in the Android environment. ____________________________________ #upstart on freenode http://upstart.ubuntu.com/cookbook https://lists.ubuntu.com/mailman/listinfo/upstart-devel -- ubuntu-devel mailing list ubuntu-devel@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel