* Add support for correctly handling subprocess termination in shell service (b/3400254 b/3482112 b/2249397)
- have a waitpid() track the subprocess, then notify the fdevent via a socket
- force an eof on the pty master in fdevent's new subproc handler.
- modify fdevent to force-read the pty after an exit.
* Migrate the "shell:blabla" handling to "#if !ADB_HOST" sections, where it
belongs.
* Fix the race around OOM adjusting.
- Do it in the child before exec() instead of the in the parent as the
child could already have started or not (no /proc/pid/... yet).
* Allow for multi-threaded D() invocations to not clobber each other.
- Allow locks across object files.
- Add lock within D()
- Make sure sysdesp init (mutex init also) is called early.
* Add some missing close(fd) calls
- Match similar existing practices near dup2()
* Add extra D() invocations related to FD handling.
* Warn about using debugging as stderr/stdout is used for protocol.
* Fix some errno handling and make D() correctly handle it.
* Add new adb trace_mask: services.
* Make fdevent_loop's handle BADFDs more gracefully (could occur some subproc closed its pts explicitely).
* Remove obsolete commandline args reported in help. (b/3509092)
Change-Id: I928287fdf4f1a86777e22ce105f9581685f46e35
Ext4 filesystems like to be unmounted before rebooting. The Android system
doesn't have a traditional Linux init setup, and shutting down the system
was not much more than calling sync(2) and reboot(2). This adds a new
function to libcutils called android_reboot(). By default, it calls sync()
and then remounts all writable filesystems as read-only and marks them clean.
There is a flag parameter in which the caller can ask for sync() not to be
called, or to not remount the filesystems as read-only. Then it will call
reboot(2) as directed by the other parameters. This change also updates
adb, init and toolbox to call the new android_reboot() function.
Fixes bugs 3350709 and 3495575.
Change-Id: I16d71ffce3134310d7a260f61ec6f4dd204124a7
This is for http://b/3482112 "adb interactions with device causing test harness failures".
This reverts commit 69c5c4c45b.
Change-Id: I630bf2e04d2ecf0223bd2af4e87136754ff880d3
* Handling of the subprocess and its FD.
This fixes http://b/3400254 "Many bugreports getting hung at the end in monkey"
- Start up a service thread that waits on the subprocess to terminate,
then closes the FD associated with it.
- Have the event handler select() with a timeout so that it can
detect the closed FD. Select() with no timeout does not return when an FD is closed.
- Have the event handler force a read on the closed FD to trigger the close sequence.
- Migrate the "shell:blabla" handling to "#if !ADB_HOST" sections.
* Fix the race around OOM adjusting.
- Do it in the child before exec() instead of the in the parent as the
child could already have started or not (no /proc/pid/... yet).
* Allow for multi-threaded D() invocations to not clobber each other.
- Allow locks across object files.
- Add lock within D()
* Add some missing close(fd) calls
- Match similar existing practices near dup2()
* Add extra D() invocations related to FD handling.
* Warn about using debugging as stderr/stdout is used for protocol.
Change-Id: Ie5c4a5e6bfbe3f22201adf5f9a205d32e069bf9d
Signed-off-by: JP Abgrall <jpa@google.com>
* commit 'd4894f4be608c28ef0f39c7794ba865ac812dff9':
Fix adb leaking file descriptors to forked processes
adb: Fix command-line parser.
adb: Increase device descriptor buffer size in Linux host USB support
adb: improve debug traces readability.
adb: Don't report negative number of bytes after pushing file > 2 gigabytes
Adding Texas Instruments to the VID list.
Support an additional alias for 'adb shell.'
accept() creates a new file descriptor that should be closed on exec so
that forked processes don't keep a fd opened on the socket.
This also fixes b/3297070 where adb hangs after running adb on the
target.
Change-Id: I8df511289e5549ae49b4824c9dfb71a3bf85eae8
This fixes the command-line parser to accept both "daemon server"
and "server nodaemon". Before the patch, the second string would
ignore the "nodaemon" flag.
Fixes b/2191598
Change-Id: Ie922b3e7bf57a6e334fc448cec33fb340ca6abc4
256 bytes wasn't big enough for some complicated USB configurations
Change-Id: I31f7841953d73b06958f44040f58166b159faff4
Signed-off-by: Mike Lockwood <lockwood@android.com>
This patch makes the traces easier to read. For example transports are
displayed by name/serial instead of their hex address.
Change-Id: I7e8df44ddbec19754d63d989bd56485998b4627b
256 bytes wasn't big enough for some complicated USB configurations
Change-Id: I31f7841953d73b06958f44040f58166b159faff4
Signed-off-by: Mike Lockwood <lockwood@android.com>
Merge commit '6713a2e0c659be9d992e75ab420da5680f522658' into gingerbread-plus-aosp
* commit '6713a2e0c659be9d992e75ab420da5680f522658':
Fix USB endianness bugs on Linux.
Merge commit '81347d2764b32ec7224d4e2ab3348103816400b2' into gingerbread-plus-aosp
* commit '81347d2764b32ec7224d4e2ab3348103816400b2':
adb: Improved detection of big endian architecture
Merge commit 'a8b8c0e21ac4bdb7838c8c1b8e7d60f632eda79b'
* commit 'a8b8c0e21ac4bdb7838c8c1b8e7d60f632eda79b':
adb: Add support for Philips's USB vendor ID
The fields device->idVendor and device->idProduct should not be
converted from little endian to native byteorder, because the
kernel has in fact done so already!
On the other hand, the descriptors read using raw ioctl:s in
register_device() do need to be converted.
Change-Id: I5fe08b626b14ead56a592b68d026690e343c2656
Instead of testing for the (compiler specific) define
__ppc__ explicitly, use the define HAVE_BIG_ENDIAN provided by
AndroidConfig.h. That way, it should work on all big endian
systems.
Change-Id: Ic4d62afcefce4c8ad5716178ebfcb2b055ac73ce
Merge commit 'd02e521d79a49471b3f1dc3717e842948df64789' into gingerbread-plus-aosp
* commit 'd02e521d79a49471b3f1dc3717e842948df64789':
adb: Add support for Philips's USB vendor ID
Merge commit '89aff1d22662c64cc2de384e7e2c699e4d1d5d47' into gingerbread-plus-aosp
* commit '89aff1d22662c64cc2de384e7e2c699e4d1d5d47':
Add Asus USB vendor ID to adb.
Added a new target for adb, so that the adb
host executable is built for the target as
well. This allows the target to connect to
any Android devices which are attached to it.
Bug: 3022194
Change-Id: Ib01983e70b75cec40a9ee161da7f4cf1343eecf2
Merge commit 'f62b23f2c1540221621024c850fdf615dda0c903' into gingerbread-plus-aosp
* commit 'f62b23f2c1540221621024c850fdf615dda0c903':
Add new USB vendor IDs.
Merge commit '4309d602b562eb9f181b0314837e6096577c6c18' into gingerbread-plus-aosp
* commit '4309d602b562eb9f181b0314837e6096577c6c18':
Added Toshiba's USB VID (0x0930) upon their request.