Commit Graph

1540 Commits

Author SHA1 Message Date
Elliott Hughes
3ce4f3d0af am 685a0a72: am bbd87eb9: Merge "Track libcore.os\' move to android.system."
* commit '685a0a72d445515167a2071330679cdf9b53a62d':
  Track libcore.os' move to android.system.
2014-04-28 18:36:53 +00:00
Elliott Hughes
34385d352d Track libcore.os' move to android.system.
(This is partial, but should cover everything in AOSP master except
for the zygote.)

Change-Id: I1042c99245765746a744c44e714095cb2c6cb75d
2014-04-28 11:11:32 -07:00
Neil Fuller
d720ef541d am caf6497b: am 683cf1bf: Merge "Changes to support asynchronous close interruption"
* commit 'caf6497b9a0347da7d5acbe678adc2c8187176c0':
  Changes to support asynchronous close interruption
2014-04-23 16:48:34 +00:00
Neil Fuller
43582df3db Changes to support asynchronous close interruption
This change contains fixes to base from libcore change
I37de3e7d1a005a73821221e6156d10b95c595d7a

Bug: 13927110

Change-Id: I2d96e50307611c269dcf47886cd4d976854da8fc
2014-04-23 16:40:35 +00:00
Jeff Brown
3ee9dc58e5 am fa72a9ea: Merge "Declare VersionCodes.KITKAT_WATCH." into klp-modular-dev
* commit 'fa72a9eaae6170e65d9ba72720ee7b0d752f8847':
  Declare VersionCodes.KITKAT_WATCH.
2014-04-16 20:52:24 +00:00
Jeff Brown
1c3f332c3f Declare VersionCodes.KITKAT_WATCH.
The constant does not have a final value yet but is useful for
documentation purposes during development.

Change-Id: Iddd9b956eff822a9a25e9df483b5bd3979189023
2014-04-16 13:27:00 -07:00
Narayan Kamath
88a996455b am 97953b30: am 4f4892d0: Merge "Workaround 64 bit devices that don\'t have zygotes yet."
* commit '97953b308f9159a73061ae047e368eac503c1931':
  Workaround 64 bit devices that don't have zygotes yet.
2014-04-11 18:36:32 +00:00
Narayan Kamath
2d84a406bf Workaround 64 bit devices that don't have zygotes yet.
This can be fixed by tweaking their BoardConfig as well,
but that leads to all sorts of other problems.

For now, fall back to the primary zygote if the secondary
is unavailable. This will fail if shared libraries for the
primary zygote ABI are unavailable, but that won't be the
case just yet.

bug: 13970103
Change-Id: Ifa107e43ca95023d57a0d9c641e4fddaccd9a888
2014-04-11 19:24:53 +01:00
Jeff Brown
337e764deb am f24687e2: Merge "Plumb display power state through display manager." into klp-modular-dev
* commit 'f24687e2731811fd0e3803b691fd47a659f89329':
  Plumb display power state through display manager.
2014-04-11 03:49:37 +00:00
Jeff Brown
037c33eae7 Plumb display power state through display manager.
Declare a new method, Display.getState() to retrieve the actual
power state of a display.

Improved documentation for Intent.ACTION_SCREEN_ON and
Intent.ACTION_SCREEN_OFF to clarify what they really mean in
terms of the interactive state of the device.

Deprecated PowerManager.isScreenOn() and replaced it with
PowerManager.isInteractive() with a more suggestive name and
better documentation.

Redirect display power state changes to go through the display
manager first and only then head over to the power manager for
legacy compatibility.

Eliminated the bright here and woke here policy flags since they
were unused.  Simplified the input dispatch policy somewhat.

Ensure that screen wake locks are respected up until the point
when dozing really begins.

Fixed a regression in DreamService where onDreamingStarted
might be called before onWindowAttached.

Bug: 13133142
Bug: 13472578
Bug: 13929355
Bug: 13760290
Change-Id: Iabef96921dd554ce3768fb18619cefc3230b5fb0
2014-04-10 20:46:14 -07:00
Narayan Kamath
9e289d70a8 am 1d26a3f1: am 09e13cc5: Merge "System services detect and register app CPU ABIs"
* commit '1d26a3f1efd0d965e8751e8515608c31789bdbe2':
  System services detect and register app CPU ABIs
2014-04-10 09:26:59 +00:00
Narayan Kamath
286a247e4c am 0fd40cb1: am 80413c9f: Merge "Re-implement native library search and copies."
* commit '0fd40cb100bccbd5d9ad6109ca39c818a857f889':
  Re-implement native library search and copies.
2014-04-10 09:26:44 +00:00
Ramin Zaghi
ff0c470833 System services detect and register app CPU ABIs
This patch uses the NativeLibraryHelper class to
match native libraries in an .apk package with
those listed in 'ro.cpu.abilist' property.
The result is stored in packages.xml and the
ApplicationInfo class.

This information will be used by the ActivityManager
to decide which zygote to use to launch the given
app.

Change-Id: I3ec3d050996d8f4621f286ca331b9ad47ea26fa0
2014-04-09 17:20:13 +01:00
Ramin Zaghi
1378aba7ae Re-implement native library search and copies.
We now use a two step approach :

- First we look through the list of shared libraries in an
  APK, and choose an ABI based on the (priority)  list of ABIs
  a given device supports.
- Then we look through the list of shared libraries and copy
  all shared libraries that match the ABI we've selected.

This fixes a long-standing bug where we would sometimes copy
a mixture of different ABIs to the device, and also allows us
to clearly pick an ABI to run an app with.

The code in NativeLibraryHelper has been refactored so that all
file name validation & matching logic is done in a single place
(NativeLibrariesIterator). This allows us to avoid a lot of
redundant logic and straightens out a few corner cases (for eg.
where the abi determination & copying logic do not agree on
what files to skip).

bug: https://code.google.com/p/android/issues/detail?id=65053
bug: 13647418

Change-Id: I34d08353f24115b0f6b800a7eda3ac427fa25fef
Co-Authored-By: Zhenghua Wang <zhenghua.wang0923@gmail.com>
Co-Authored-By: Ramin Zaghi <ramin.zaghi@arm.com>
Co-Authored-By: Narayan Kamath <narayan@google.com>
2014-04-09 17:16:40 +01:00
Narayan Kamath
769a247595 am b6ab8c17: am a6f5e79d: Merge "Allow connections to multiple zygotes."
* commit 'b6ab8c17bd0163bf07ff3dbe03ab352d58b61cb3':
  Allow connections to multiple zygotes.
2014-04-09 14:19:46 +00:00
Narayan Kamath
4444dcd0ad Allow connections to multiple zygotes.
Adds a new String argument "abi" to Process.start.
This method will now query the zygotes to
determine what ABIs the primary and the secondary
zygote support (the secondary is optional) and dispatch
a fork request over the right zygote connection.

Both zygotes are assumed to be active at all points.

Change-Id: I460319b4481ff1c1666e8172223691820658a35c
2014-04-09 15:07:10 +01:00
Narayan Kamath
dc7eb9c947 am 00cfbe82: am a5608acb: Merge "Don\'t allow MemoryFiles of negative length."
* commit '00cfbe82fa80ef57f3b1c34e47836d3e28c381b8':
  Don't allow MemoryFiles of negative length.
2014-04-09 11:33:20 +00:00
Narayan Kamath
f626ca2c96 Don't allow MemoryFiles of negative length.
Prevents us from converting a (signed) jint into an
(unsigned) size_t and having horrible things happen.

Change-Id: I0f04e2eb9852ae7fc49b435fd0974f56e86751a4
2014-04-08 16:14:10 +01:00
Narayan Kamath
71ab4f4f48 am ea9e5eca: am 17b1b8fe: Merge "Move zygote startup logic to the frameworks."
* commit 'ea9e5ecac1e5240370f0e3f998b9c8b159ee9320':
  Move zygote startup logic to the frameworks.
2014-04-02 10:41:24 +00:00
Narayan Kamath
973b4663b0 Move zygote startup logic to the frameworks.
The Zygote class is now in com.android.internal.os. It is
responsible for the vast majority of work before and after
the call to fork(). It calls back into the Runtime via
the new dalvik.system.ZygoteHooks class to allow the Runtime
to perform pre fork cleanup and post fork initialization.

The native code in Zygote.cpp is a direct and straightforward
port of the existing code in art. Most differences are
superficial, for example :
- We use C style logging (ALOGE) instead of stream based
  logging.
- We call env->FatalError() instead of using LOG(FATAL)

Change-Id: Ia101fb2af12d23894fe57e4134d2bc6d142e5059
2014-04-02 10:18:43 +01:00
Mark Renouf
3796594cd7 am a63cd9f4: Merge "Run finalizers before counting for StrictMode." into klp-modular-dev
* commit 'a63cd9f424d70a3f8ca059aa8f76b28be1f9fa07':
  Run finalizers before counting for StrictMode.
2014-03-24 15:27:45 +00:00
Mark Renouf
a63cd9f424 Merge "Run finalizers before counting for StrictMode." into klp-modular-dev 2014-03-24 15:22:55 +00:00
Chad Brubaker
9506e84b6f am c7726147: am 1fce89d9: am de4e7b49: Merge "Include the interface for clearDnsInterfaceForUidRange" into klp-dev
* commit 'c77261471432e1577586395dd0a6a481ef7431b5':
  Include the interface for clearDnsInterfaceForUidRange
2014-03-21 21:09:41 +00:00
Chad Brubaker
c772614714 am 1fce89d9: am de4e7b49: Merge "Include the interface for clearDnsInterfaceForUidRange" into klp-dev
* commit '1fce89d946760a1bcf3a733f55494f963eab00c2':
  Include the interface for clearDnsInterfaceForUidRange
2014-03-21 21:02:43 +00:00
Chad Brubaker
1fce89d946 am de4e7b49: Merge "Include the interface for clearDnsInterfaceForUidRange" into klp-dev
* commit 'de4e7b4947998638e0345ab9a181bf35a8827bef':
  Include the interface for clearDnsInterfaceForUidRange
2014-03-21 20:56:37 +00:00
Doug Zongker
2e6d960c85 am cdf00888: add option to shutdown after factory reset
* commit 'cdf008883921c2eb7daf10c82687e9a36461eb16':
  add option to shutdown after factory reset
2014-03-18 20:49:12 +00:00
Doug Zongker
cdf0088839 add option to shutdown after factory reset
Add a new hidden method to recovery system to trigger a factory reset
followed by a shutdown, rather than a reboot back to the regular
system.  Use this flag when the MASTER_CLEAR intent is broadcast with
a boolean extra "shutdown" set to true.

Change-Id: I2ceb25b715d9f0ef492a75b3d287d1e17cec89ef
2014-03-18 12:52:04 -07:00
Chad Brubaker
1b66923148 Include the interface for clearDnsInterfaceForUidRange
With netd allowing overlapping rules for uid range rules the interface
name is needed to make sure only the correct rule is removed.

Bug: 12134439
Change-Id: I94f77f154f49ca8d5f6cf49683a4473cc92c3eb7
2014-03-15 15:31:47 -07:00
Jeff Sharkey
9c5c56eb51 Run finalizers before counting for StrictMode.
Otherwise we sometimes end up counting objects strongly referenced
by the finalizer queue, and falsely detecting an instance leak.

Bug: 12533002
Change-Id: I144c941a3dfb0cbb837b98e80d2f49ffc9ca13c7
(cherry picked from commit 6f3a38f3af)
2014-03-13 16:07:17 +00:00
John Spurlock
b41c951fb1 am cb5f813b: am 0a3cb2ce: am b2bd63f0: Merge "Fix doc typos in Vibrator.java" into klp-docs
* commit 'cb5f813bb642e72777643dcd2bcbd92cc2039388':
  Fix doc typos in Vibrator.java
2014-03-11 19:18:59 +00:00
John Spurlock
cb5f813bb6 am 0a3cb2ce: am b2bd63f0: Merge "Fix doc typos in Vibrator.java" into klp-docs
* commit '0a3cb2ce1b2472b7e4ca6739eaeaa50975abf6ab':
  Fix doc typos in Vibrator.java
2014-03-11 17:43:46 +00:00
John Spurlock
0a3cb2ce1b am b2bd63f0: Merge "Fix doc typos in Vibrator.java" into klp-docs
* commit 'b2bd63f00631b68df3595a4369ec4802e6443bc7':
  Fix doc typos in Vibrator.java
2014-03-10 16:24:31 +00:00
John Spurlock
0f49c28e7a Fix doc typos in Vibrator.java
Change-Id: Ie95cd7fa16042897e6acf94badec98bc19bde57a
2014-03-10 11:29:35 -04:00
Greg Hackmann
0cab896a98 resolved conflicts for merge of 9e413bf4 to klp-modular-dev-plus-aosp
Change-Id: Ibc41f0248235afca9546829e00b31003d09f4f7e
2014-02-21 16:35:52 -08:00
Greg Hackmann
bbfc08b3ab Merge changes I6d4fdada,Ia34899a4
* changes:
  open("/dev/rtc0") failure in AlarmManagerService.setTime() should be non-fatal
  Move time setting code from SystemClock to AlarmManagerService
2014-02-21 21:01:00 +00:00
Greg Hackmann
38bf514668 Move time setting code from SystemClock to AlarmManagerService
On devices using /dev/rtc instead of /dev/alarm, updating the
time-of-day clock and RTC are separate syscalls.  Hence the clock and
RTC could be left in inconsistent states if two threads called
SystemClock.setCurrentTimeMillis() simultaneously.

By moving this code into AlarmManagerService, we can put a global lock
around AlarmManagerService.setTime() and prevent the race condition.

Note that access to SystemClock.setCurrentTimeMillis() is now gated by
android.permission.SET_TIME, where before it was gated by filesystem
permissions (i.e., could the process write to /dev/alarm or /dev/rtc).

Change-Id: Ia34899a4cde983656305fd2ef466dfe908ed23c8
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2014-02-21 09:53:19 -08:00
Elliott Hughes
d7d37256c4 am b2f07b27: am 4a809272: Merge "Fix documentation for Parcel.readException()."
* commit 'b2f07b27725bed9716114c46df2cf636eb366f6f':
  Fix documentation for Parcel.readException().
2014-02-21 17:28:54 +00:00
Elliott Hughes
4a80927241 Merge "Fix documentation for Parcel.readException()." 2014-02-21 17:21:52 +00:00
Jeff Brown
90506a41c6 am 07e6d1b9: Merge "Add a new "doze mode" based on Dream components." into klp-modular-dev
* commit '07e6d1b9a5f81ff5a5bf91f2b260ee487d5f2b65':
  Add a new "doze mode" based on Dream components.
2014-02-20 21:47:08 +00:00
Jeff Brown
2687550272 Add a new "doze mode" based on Dream components.
When a doze component has been specified in a config.xml resource
overlay, the power manager will try to start a preconfigured dream
whenever it would have otherwise gone to sleep and turned the
screen off.  The dream should render whatever it intends to show
then call startDozing() to tell the power manager to put the display
into a low power "doze" state and allow the application processor
to be suspended.  The dream may wake up periodically using the
alarm manager or other features to update the contents of the display.

Added several new config.xml resources related to dreams and dozing.
In particular for dozing there are two new resources that pertain to
decoupling auto-suspend mode and interactive mode from the display
state.  This is a requirement to enable the application processor
and other components to be suspended while dozing.  Most devices
do not support these features today.

Consolidated the power manager's NAPPING and DREAMING states into one
to simplify the logic.  The NAPPING state was mostly superfluous
and simply indicated that the power manager should attempt to start
a new dream.  This state is now tracked in the mSandmanSummoned field.

Added a new DOZING state which is analoguous to DREAMING.  The normal
state transition is now: AWAKE -> DREAMING -> DOZING -> ASLEEP.
The PowerManager.goToSleep() method now enters the DOZING state instead
of immediately going to sleep.

While in the doze state, the screen remains on.  However, we actually
tell the rest of the system that the screen is off.  This is somewhat
unfortunate but much of the system makes inappropriate assumptions
about what it means for the screen to be on or off.  In particular,
screen on is usually taken to indicate an interactive state where
the user is present but that's not at all true for dozing (and is
only sometimes true while dreaming).  We will probably need to add
some more precise externally visible states at some point.

The DozeHardware interface encapsulates a generic microcontroller
interface to allow a doze dream for off-loading rendering or other
functions while dozing.  If the device possesses an MCU HAL for dozing
then it is exposed to the DreamService here.

Removed a number of catch blocks in DreamService that caught Throwable
and attempted to cause the dream to finish itself.  We actually just
want to let the process crash.  Cleanup will happen automatically if
needed.  Catching these exceptions results in mysterious undefined
behavior and broken dreams.

Bug: 12494706
Change-Id: Ie78336b37dde7250d1ce65b3d367879e3bfb2b8b
2014-02-20 13:39:13 -08:00
Paul Duffin
0741e11c65 am 75d67c6a: am d562a9b5: Merge "Improve Parcel\'s handling of non-primitive arrays"
* commit '75d67c6aa051392e711fde3b901a4f2c62f983db':
  Improve Parcel's handling of non-primitive arrays
2014-02-12 19:23:01 +00:00
Paul Duffin
ac5a0828c1 Improve Parcel's handling of non-primitive arrays
Treat arrays other than actual Object arrays (i.e. those whose component type
is actually Object) and the primitive arrays already handled specially by
Parcel as Serializable's.

Issue: 64583
Change-Id: I3ff797f3262e77e4de27f35709bceee5410d1ed4
2014-02-11 16:49:25 +00:00
Narayan Kamath
ff62e966b6 am 149510e0: am b9f960e0: Merge "Fixed cancel() not working correctly"
* commit '149510e010b46a445355a8d7fcdb8401125b92c3':
  Fixed cancel() not working correctly
2014-01-31 16:29:16 +00:00
jl1990
3cd12a5155 Fixed cancel() not working correctly
The method handleMessage(Message msg) from mHandler variable was
not checking if the timer was cancelled, so
sendMessageDelayed(obtainMessage(MSG), delay) was keeping the
timer alive. The patch simply adds a boolean and checks if the
CountDownTimer was cancelled before calling
sendMessageDelayed(obtainMessage(MSG), delay)

bug: https://code.google.com/p/android/issues/detail?id=58668

Change-Id: Ic6bbb9d33a3616f8503db222513cc14ad2270cb8
Signed-off-by: jl1990 <jlcarrasco1990@gmail.com>
2014-01-30 13:46:44 +00:00
Narayan Kamath
4a58714606 am 09d07d0d: am e3e4b405: am 9846fb69: am 50afaefd: Merge "AArch64: Make Binder and Parcel 64-bit compatible"
* commit '09d07d0d33d44fc87c02a8f607ecb7b96dbb4145':
  AArch64: Make Binder and Parcel 64-bit compatible
2014-01-29 10:54:26 +00:00
Narayan Kamath
09d07d0d33 am e3e4b405: am 9846fb69: am 50afaefd: Merge "AArch64: Make Binder and Parcel 64-bit compatible"
* commit 'e3e4b40577032f6fad38bfbeb9c2b40df89f0ef9':
  AArch64: Make Binder and Parcel 64-bit compatible
2014-01-29 10:51:51 +00:00
Narayan Kamath
e3e4b40577 am 9846fb69: am 50afaefd: Merge "AArch64: Make Binder and Parcel 64-bit compatible"
* commit '9846fb695a3c41aabde4ca0061d583b35f9621d1':
  AArch64: Make Binder and Parcel 64-bit compatible
2014-01-29 10:48:52 +00:00
Ashok Bhat
8ab665dda4 AArch64: Make Binder and Parcel 64-bit compatible
Changes include
[x] Long is used to store native pointers

[x] Added new method obtain(long obj) to Parcel. Binder
    uses this method instead of obtain(int obj).

[x] obtain(int) has been changed to throw unsupported
    operation exception.

Change-Id: I408e0f2a24deb28c9277d86670653a51eb314266
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Craig Barber <craig.barber@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
2014-01-23 16:25:19 +00:00
Jeff Brown
4ccb823a9f Refactor display manager service to new pattern.
Transform DisplayManagerService into a SystemService and start cleaning
up other local services that it uses from window manager and input manager.

Clean up service thread initialization.

Remove unnecessary static variables from ActivityManagerService.

It's starting to become clear that we really need a better way to manage
service dependencies.  Boot phases don't quite cut it.

Change-Id: If319dbd7cbfbd4812fe55ece969e818d4b20755b
2014-01-16 22:16:42 -08:00
Jeff Brown
6f357d3284 Start untangling system server early bootstrapping.
Refactored SystemServer to get rid of a bunch of legacy cruft related
to how the ServerThread used to be started up.

Create system context first when system server starts.  This removes
the tangled initialization order dependency that forced us to start
the activity manager service before most anything else.

Moved factory test related constants into the FactoryTest class.

Partially migrated Installer, ActivityManagerService, and
PowerManagerService to the new SystemService pattern.  There's more
work to be done here, particularly around the lifecycle of the
power manager.

Bug: 12172368
Change-Id: Ia527dd56e3b3fd90f9eeb41289dbe044921230d4
2014-01-16 11:24:58 -08:00