OSDN Git Service

This adds a new helper program (qemu-props) to support the emulated system.
authorDavid 'Digit' Turner <digit@google.com>
Tue, 26 May 2009 15:07:25 +0000 (17:07 +0200)
committerDavid 'Digit' Turner <digit@google.com>
Tue, 26 May 2009 15:07:25 +0000 (17:07 +0200)
commitaf45b39d887ad4ec4a806d352009cdc28238f21f
tree2216276a79a2f0653a6183f0705e9473b7ec5377
parent3a39e9c90b34cbdfa17b6bc2928b448e92204ccc
This adds a new helper program (qemu-props) to support the emulated system.

Its purpose is to contact the 'boot-properties' service during the
boot process and to set the list of system properties read from the
emulator program through it.

It must be launched from /system/etc/init.goldfish.rc as root.

It depends on the 'boot-properties' service being implemented by the
emulator (in a later patch). If not available, it will simply timeout.

This also fixes a potential crash in qemud which can happen in the following case:

- client sends a command to a service
- the service responds with one or more message
- the service immediately closes the connection before the client can read the data

what happened is that the FDHandler object was buffering out-going packets to the
client, but the Multiplexer acted on the disconnection immediately. This resulted
in:

- client_free() being called
-   fdhandler_shutdown() being called
-     the FDHandler being placed on the 'closing' list to be able to send
      buffered packets later. And 'receiver_close' being called
-       client_fd_close() being called, which would call client_free()
        recursively
-         the second client_free() call would free the object
-  the first client_free() call would try to free the object again
-  ==> dlmalloc() detects a double-free and immediately aborts.

the fixes simply avoids the calle to receiver_close() in fdhandler_shutdown()
since this function is called from an explicit shutdown request from the multiplexer,
it doesn't correspond to the case where the client has closed the connection itself.
emulator/qemud/qemud.c
emulator/tools/Android.mk [new file with mode: 0644]
emulator/tools/qemu-props.c [new file with mode: 0644]