Commit Graph

1576 Commits

Author SHA1 Message Date
Mark Salyzyn 1c95047939 logd: liblog: logcat: enable prune features for user
- Enable whitelist, blacklist and logsize tuneables for user

Change-Id: Id0c283844c71c5263a8cfbebf2e550f7ac415858
2014-04-02 13:12:04 -07:00
Wonsik Kim 94404eef65 Merge "Clarify ownership for NativeHandle::mHandle" 2014-04-02 06:13:59 +00:00
Michael Wright a45ff0f586 am df33e8b5: Add BitSet64. DO NOT MERGE
* commit 'df33e8b544c457e4b08e8fa0b8a3eaf5eaf8fc2e':
  Add BitSet64. DO NOT MERGE
2014-03-26 19:29:05 +00:00
Paul McLean 55c6407041 Adding a handy predicate function (str_parms_has_key()
Change-Id: I1af5c260a1a820b65f0850ea9adb38b01fcb183c
2014-03-25 19:08:13 +00:00
Michael Wright df33e8b544 Add BitSet64. DO NOT MERGE
Change-Id: Idf3e21dfaa9f90f4dcb1b4d41eed3891dda99561
2014-03-24 16:51:01 -07:00
Wonsik Kim c4cc584bbd Clarify ownership for NativeHandle::mHandle
Change-Id: I0835278df1aa78f10d5493d7ef2c9e4a15c0fee9
2014-03-24 11:40:36 +09:00
Mark Salyzyn 2583dec08c am 3f4855c1: am 46f3ebba: am 28171447: Merge "cutils: trace 64-bit compile issues"
* commit '3f4855c11889470691673c15f05361df61ea95b2':
  cutils: trace 64-bit compile issues
2014-03-20 22:27:19 +00:00
Mark Salyzyn 3f4855c118 am 46f3ebba: am 28171447: Merge "cutils: trace 64-bit compile issues"
* commit '46f3ebba31d5820a08d0a638c9e261fbcea907a0':
  cutils: trace 64-bit compile issues
2014-03-20 20:53:25 +00:00
Mark Salyzyn a459d0b0e2 cutils: trace 64-bit compile issues
- switch format to PRId64 for int64_t
- switch format to PRId32 for int32_t

Change-Id: I1e66db06810000936d584ed49234550abd96cdff
2014-03-20 13:02:57 -07:00
Michael Wright 2ec064597c Add static methods to BitSet.
Also, moar testing.

Change-Id: I512b337a1a85a0794445fc6249af7ca39ba7c381
2014-03-19 11:23:01 -07:00
Michael Wright 74e2538b48 Add traits to BitSet64, not 32.
Change-Id: I3d41bbe47f5b02c610f69fc7824e416436d086b1
2014-03-18 17:45:37 -07:00
Michael Wright bab6ea0bb7 Add BitSet64
Change-Id: Ia0039aae00316f42a8306a9fb8ad37269180b58c
2014-03-18 17:28:22 -07:00
Mark Salyzyn 6b9096b454 am e42e9db3: am 19bbf92d: am fc204a96: Merge changes Ia9509ad0,I4e815d74,I10e8d92c
* commit 'e42e9db3143f819e19684d4f882ef3834454a44d':
  logcat: test White Black list
  logd: Find log time for arbitrary time to tail
  logd: liblog: logcat: Arbitrary time to tail
2014-03-14 18:05:24 +00:00
Mark Salyzyn e42e9db314 am 19bbf92d: am fc204a96: Merge changes Ia9509ad0,I4e815d74,I10e8d92c
* commit '19bbf92de92ad9dbfb26b3a94025bf6e6cb72cee':
  logcat: test White Black list
  logd: Find log time for arbitrary time to tail
  logd: liblog: logcat: Arbitrary time to tail
2014-03-14 18:01:25 +00:00
Mark Salyzyn fa3716b250 logd: liblog: logcat: Arbitrary time to tail
Change-Id: I10e8d92c933e31ee11e78d2d1114261a30c4be0e
2014-03-14 10:23:51 -07:00
Mark Salyzyn ba1987fb30 am 77eed05b: am f3dcda5f: Merge changes I1572338c,I39965007,I521753b1
* commit '77eed05b7ca44cfa013223fdb6f30dc0cc2e2760':
  logd: liblog: logcat: Add LogWhiteBlackList
  logd: prune by worst offending UID
  logd: liblog: logcat: Add Statistics
2014-03-13 22:04:09 +00:00
Mark Salyzyn dfa7a07f5b logd: liblog: logcat: Add LogWhiteBlackList
- liblog android_logger_get_log_size and android_logger_get_readable_size
  adjusted to return long instead of int because of -G flag extending range

NB: ifdef'd only for userdebug and eng builds

- liblog Add android_logger_[sg]et_prune_list and android_logger_set_log_size
- logcat Add -P, -p and -G flags
- logd Add LogWhiteBlackList and configurable log size

(cherry picked from commit 18a5432158)

Change-Id: I1572338c1b34bd968ad7867857ef708156ec3b6a
2014-03-13 14:48:07 -07:00
Mark Salyzyn 34facab86b logd: liblog: logcat: Add Statistics
- logd add statistical collection and formatting
- liblog add android_logger_get_statistics call
- logcat add -S flag
- logcat add -b all

(cherry picked from commit 51a29c8dc4)

Change-Id: I521753b1969ecd4590c956aeeb1557d101059d67
2014-03-13 14:47:58 -07:00
Mark Salyzyn 18a5432158 logd: liblog: logcat: Add LogWhiteBlackList
- liblog android_logger_get_log_size and android_logger_get_readable_size
  adjusted to return long instead of int because of -G flag extending range

NB: ifdef'd only for userdebug and eng builds

- liblog Add android_logger_[sg]et_prune_list and android_logger_set_log_size
- logcat Add -P, -p and -G flags
- logd Add LogWhiteBlackList and configurable log size

Change-Id: I1572338c1b34bd968ad7867857ef708156ec3b6a
2014-03-12 17:23:59 -07:00
Mark Salyzyn 51a29c8dc4 logd: liblog: logcat: Add Statistics
- logd add statistical collection and formatting
- liblog add android_logger_get_statistics call
- logcat add -S flag
- logcat add -b all

Change-Id: I521753b1969ecd4590c956aeeb1557d101059d67
2014-03-12 17:11:01 -07:00
Alex Ray 665902ee5a am db480f75: am 6a58c4f3: am 33e86e00: Merge "libcutils: add method to get klog level"
* commit 'db480f7516977123a0c5c6f6705b282d2e55ab89':
  libcutils: add method to get klog level
2014-03-08 05:46:35 +00:00
Alex Ray db480f7516 am 6a58c4f3: am 33e86e00: Merge "libcutils: add method to get klog level"
* commit '6a58c4f342fa104fbabcd195561b90966f227a76':
  libcutils: add method to get klog level
2014-03-08 02:00:29 +00:00
Alex Ray 157e1b645a libcutils: add method to get klog level
Change-Id: I55e8311bae97703be26e57b415a8ab0a6d9b4361
2014-03-07 13:58:02 -08:00
Glenn Kasten 45b9581fc9 audio_is_valid_format is true for all PCM formats
Change-Id: I733f3208315816575f6d4f7722e906ab50b161af
2014-03-07 12:32:14 -08:00
Andy Hung 173f4995b0 Update audio_bytes_per_sample for PCM 24 bit packed
Change-Id: Ic79f604893f5c4f2e8e35189d6638b5b160435ed
Signed-off-by: Andy Hung <hunga@google.com>
2014-03-07 18:20:15 +00:00
Mark Salyzyn 318900ad80 am d01c257f: am 8f632327: am bb0fbdbe: Merge "logd: liblog: 64-bit issues"
* commit 'd01c257f0f19a30178a6d5ec9d6d00d6b702fed3':
  logd: liblog: 64-bit issues
2014-03-07 03:02:41 +00:00
Mark Salyzyn d01c257f0f am 8f632327: am bb0fbdbe: Merge "logd: liblog: 64-bit issues"
* commit '8f63232712e318da88d2f543fe29066c26d39c32':
  logd: liblog: 64-bit issues
2014-03-06 22:41:23 +00:00
Jesse Hall 7d2998ea18 Merge "Add NativeHandle, a refcounted C++ wrapper around a native_handle_t*" 2014-03-06 19:05:25 +00:00
Jesse Hall 29cc9ce49a Add NativeHandle, a refcounted C++ wrapper around a native_handle_t*
Change-Id: I232dfa2ad2e4a463a39e2e901e4097dffe278cc3
2014-03-05 16:12:41 -08:00
Mark Salyzyn 7e2f83c0bc logd: liblog: 64-bit issues
- structure packing
- move towards log_time from struct timespec
- extend log_time to cover differences between
  log_time and struct timespec

Change-Id: I106ed0b609917306d170044054b5b32645f2a295
2014-03-05 16:12:28 -08:00
Mark Salyzyn 1d39c53e29 am 00eaae3a: am 556c9c24: am 858d0dd1: Merge "set /proc/sys/net/unix/max_dgram_qlen to large value"
* commit '00eaae3aaa6ea3ca2c9c00e0559fa6937ce33e37':
  set /proc/sys/net/unix/max_dgram_qlen to large value
2014-03-04 01:00:21 +00:00
Mark Salyzyn 00eaae3aaa am 556c9c24: am 858d0dd1: Merge "set /proc/sys/net/unix/max_dgram_qlen to large value"
* commit '556c9c245de257efe8bda09ff23d2c4f7add5e49':
  set /proc/sys/net/unix/max_dgram_qlen to large value
2014-03-04 00:16:31 +00:00
Mark Salyzyn 581edc1b6c set /proc/sys/net/unix/max_dgram_qlen to large value
- init: set /proc/sys/net/unix/max_dgram_qlen to 300
- libsysutils: Add listen backlog argument to startListener
- logd: set listen backlog to 300

Change-Id: Id6d37d6c937ba2d221e76258d89c9516619caeec
2014-03-03 12:48:00 -08:00
Lajos Molnar 3a436c1c3c Merge "Adding opus to list of audio formats" 2014-03-03 19:45:49 +00:00
Mark Salyzyn 7be31bbf67 am b0eaeb42: am a69270db: Merge "liblog: enable logging to logd."
* commit 'b0eaeb42cea7e3ee36e03ef461532b5b8556a26e':
  liblog: enable logging to logd.
2014-02-28 22:41:29 +00:00
Mark Salyzyn 154f4608aa liblog: enable logging to logd.
* Modify liblog to send all messages to the new syslog user
  space daemon.

Original-Change-Id: I0ce439738cd921efb2db4c1d6a289a96bdbc8bc2
Original-Change-Id: If4eb0d09409f7e9be3eb4bb7017073dc7e931ab4
Signed-off-by: Nick Kralevich <nnk@google.com>

* Add a TARGET_USES_LOGD make flag for BoardConfig.mk to manage
  whether logd is enabled for use or not.
* rename syslog to logd to avert confusion with bionic syslog
* Add fake log support back in
* prefilter for logging messages from logd
* Fill in timestamps at logging source
* update abstract log reader
* switch from using suffix for id to v3 format
* log a message when creating devices that a deprecated interface
  is being utilized.

Signed-off-by: Mark Salyzyn <salyzyn@google.com>

(cherry pick from commit 099e2c1f6f706a8600c1cef74cce9066fc315480)

Change-Id: I47929a5432977a1d7235267a435cec0a7d6bd440
2014-02-28 13:49:11 -08:00
Mark Salyzyn 1794710315 liblog: enable logging to logd.
* Modify liblog to send all messages to the new syslog user
  space daemon.

Original-Change-Id: I0ce439738cd921efb2db4c1d6a289a96bdbc8bc2
Original-Change-Id: If4eb0d09409f7e9be3eb4bb7017073dc7e931ab4
Signed-off-by: Nick Kralevich <nnk@google.com>

* Add a TARGET_USES_LOGD make flag for BoardConfig.mk to manage
  whether logd is enabled for use or not.
* rename syslog to logd to avert confusion with bionic syslog
* Add fake log support back in
* prefilter for logging messages from logd
* Fill in timestamps at logging source
* update abstract log reader
* switch from using suffix for id to v3 format
* log a message when creating devices that a deprecated interface
  is being utilized.

Signed-off-by: Mark Salyzyn <salyzyn@google.com>

Change-Id: I47929a5432977a1d7235267a435cec0a7d6bd440
2014-02-27 17:51:43 -08:00
Narayan Kamath 665b0bb4f9 am bfed1360: am 1ed1d341: am 26fa5cd3: Merge "AArch64: Use negative values in error enumeration"
* commit 'bfed136068feb299b3ca8a07d6eaf5d93e3ff2a3':
  AArch64: Use negative values in error enumeration
2014-02-27 13:33:25 +00:00
Narayan Kamath bfed136068 am 1ed1d341: am 26fa5cd3: Merge "AArch64: Use negative values in error enumeration"
* commit '1ed1d341baaba1d1453dbd061476d4263f17aa28':
  AArch64: Use negative values in error enumeration
2014-02-27 13:30:09 +00:00
Narayan Kamath 26fa5cd39d Merge "AArch64: Use negative values in error enumeration" 2014-02-27 13:18:18 +00:00
Nick Kralevich edc1abf1bb am 1bb3489e: resolved conflicts for merge of e9c8fb90 to klp-modular-dev-plus-aosp
* commit '1bb3489e600876979146a6222ac5bb2a684702bf':
  logd: initial checkin.
2014-02-26 22:31:26 +00:00
Mark Salyzyn 0175b0747a logd: initial checkin.
* Create a new userspace log daemon for handling logging messages.

Original-Change-Id: I75267df16359684490121e6c31cca48614d79856
Signed-off-by: Nick Kralevich <nnk@google.com>

* Merge conflicts
* rename new syslog daemon to logd to prevent confusion with bionic syslog
* replace racy getGroups call with KISS call to client->getGid()
* Timestamps are filed at logging source
* insert entries into list in timestamp order
* Added LogTimeEntry tail filtration handling
* Added region locking around LogWriter list
* separate threads for each writer
* /dev/socket/logd* permissions

Signed-off-by: Mark Salyzyn <salyzyn@google.com>

(cherry picked from commit 3e76e0a497)

Author: Nick Kralevich <nnk@google.com>
Change-Id: Ice88b1412d8f9daa7f9119b2b5aaf684a5e28098
2014-02-26 09:52:35 -08:00
Alex Ray c2729741c2 am 4fc8231c: Merge "graphics: Add colorspace definitions" into klp-volantis-dev
* commit '4fc8231c187f3bc96e4633ee055efe5b10590d79':
  graphics: Add colorspace definitions
2014-02-22 00:21:07 +00:00
Alex Ray 4fc8231c18 Merge "graphics: Add colorspace definitions" into klp-volantis-dev 2014-02-21 23:54:05 +00:00
Ashok Bhat 1ee7570052 AArch64: Use negative values in error enumeration
With AArch64 the enumerations with values in the range
0x80000000 to 0x80000007 are being assigned to ssize_t
typed variables which are 64-bit rather than 32-bit, and
are being used in conditions where they are being checked
for being negative. This is not the case when ssize_t is
64-bit, so redefine this to INT32_MIN value.

Change-Id: I7a031a940a28658b3bf34bebac93dfb3ba397b05
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
2014-02-20 14:11:35 +00:00
Mark Salyzyn 4046c132dc Merge changes I929dddc7,Ice88b141,I243b1338
* changes:
  logd: prune more aggressively when over the top
  logd: initial checkin.
  logcat: test: add clear and blocking check
2014-02-20 00:27:02 +00:00
Nick Kralevich 202be73b62 am f10492d8: am 066cde92: am 223e0798: Merge "Enable building init with -Wall -Werror."
* commit 'f10492d8c0c907fad6f87c871fec6b2fac41a02c':
  Enable building init with -Wall -Werror.
2014-02-19 19:23:13 +00:00
Stephen Smalley eb3f421e02 Enable building init with -Wall -Werror.
Eliminates various warnings from SELinux-related code.

Bug: 12587913
Change-Id: I28921f0ebd934324436609540d95ccef58552b64
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
2014-02-19 09:15:09 -05:00
Alex Ray c9f3bcf87b graphics: Add colorspace definitions
Change-Id: I54230dc2c0e481228457e8a01a50d300c917e657
2014-02-18 16:54:21 -08:00
Nick Kralevich 3e76e0a497 logd: initial checkin.
* Create a new userspace log daemon for handling logging messages.

Original-Change-Id: I75267df16359684490121e6c31cca48614d79856
Signed-off-by: Nick Kralevich <nnk@google.com>

* Merge conflicts
* rename new syslog daemon to logd to prevent confusion with bionic syslog
* replace racy getGroups call with KISS call to client->getGid()
* Timestamps are filed at logging source
* insert entries into list in timestamp order
* Added LogTimeEntry tail filtration handling
* Added region locking around LogWriter list
* separate threads for each writer
* /dev/socket/logd* permissions

Signed-off-by: Mark Salyzyn <salyzyn@google.com>

Change-Id: Ice88b1412d8f9daa7f9119b2b5aaf684a5e28098
2014-02-14 11:07:54 -08:00
Elliott Hughes a5d04cf62c am fcd4dad3: am 620a8800: am 1c1bd845: Merge "x86_64: Add atomic funtions"
* commit 'fcd4dad3967de79450549e78524ac73f775b51f2':
  x86_64: Add atomic funtions
2014-02-12 23:00:26 +00:00
Qiming Shi 4bc2f8db0a x86_64: Add atomic funtions
This patch adds atomic functions for x86_64.

Change-Id: I298c760a1e6efa2ce2c61a143f833b6785805442
Signed-off-by: Qiming Shi <qiming.shi@intel.com>
2014-02-11 16:17:39 -08:00
Colin Cross 62ea114e53 am aeeacff9: am ec08c03c: am 85516e9d: Merge "log: add compile-time checking when ALOGV is disabled"
* commit 'aeeacff9ed2137bb06130555d8360b09bd75252c':
  log: add compile-time checking when ALOGV is disabled
2014-02-10 22:24:03 +00:00
Colin Cross 810d19f99a log: add compile-time checking when ALOGV is disabled
Wrap the call in a if (0) when verbose logging is disabled
to provide compile time checking.

Also add a printf format attribute to the function to warn
if parameters are incorrect.

Change-Id: Ic77edeadcc4d886ca0f8b434f8550e18e22d5901
2014-02-09 21:59:24 -08:00
Ruben Brunk 84a95225d6 Merge "camera3: Add opaque raw format." 2014-02-07 01:56:08 +00:00
Ruben Brunk 535253eabe camera3: Add opaque raw format.
Change-Id: I7abf0e63a0f74ede46e0fe4dd1285283355624b1
2014-02-06 11:32:23 -08:00
Elliott Hughes 5c4020005b Revert "Move to the canonical UniquePtr.h."
This reverts commit 2a72c575d2.

Change-Id: Idb485f1be2906e8c1c8f0da3df186a7aade027f6
2014-02-04 23:41:22 +00:00
Doug Zongker 9526202d84 set permissions of recovery install script
The script that writes the recovery partition after a successful
update of system needs to be made executable.  This change also moves
it from /system/etc to /system/bin.

Bug: 12893978
Change-Id: I686e2392a2392515a6859a7381b735de1007b7ea
2014-02-04 12:33:08 -08:00
Elliott Hughes 2a72c575d2 Move to the canonical UniquePtr.h.
Change-Id: I5330c36d2b571acb6d3debd30b8020e33aa8a4a7
2014-02-04 11:58:51 -08:00
Glenn Kasten 5a23144aa5 Merge "Add 24-bit packed to audio_format_t" 2014-02-03 23:31:55 +00:00
Elliott Hughes 6cfb31d652 am 5cbb68cf: am da9b5dab: am 434edbe6: Merge "LP64 should have debuggerd and debuggerd64."
* commit '5cbb68cf891fa040563c70784363496cf3e05174':
  LP64 should have debuggerd and debuggerd64.
2014-02-01 01:39:18 +00:00
Elliott Hughes e9edf7a0ef LP64 should have debuggerd and debuggerd64.
Change-Id: I4e39c200e6867bb9a5bbcfec1c449b8864028feb
2014-01-31 17:15:10 -08:00
Elliott Hughes 19750a2c30 am f1935b6d: am 2e9dcd21: am 1bc6169f: Merge "Remove dead code that looked like part of debuggerd."
* commit 'f1935b6d933861d6194bf056a844ec0f11765c38':
  Remove dead code that looked like part of debuggerd.
2014-02-01 00:52:06 +00:00
Elliott Hughes 9361b58330 am fe0d5d42: am 5434bf66: Merge "LP64: Enable debuggerd/libbacktrace/libunwind."
* commit 'fe0d5d42e4ca8b77d6a0657be1b8b6343c21d689':
  LP64: Enable debuggerd/libbacktrace/libunwind.
2014-01-31 22:38:29 +00:00
Elliott Hughes 6694d3e3d5 Remove dead code that looked like part of debuggerd.
Note that these were two different functions. The definition was unused,
and the declaration was undefined.

Change-Id: I2edd10a0ab9422cd5252bdb9ccdd726dc5fad531
2014-01-31 10:37:18 -08:00
Glenn Kasten c0a51093a2 Add 24-bit packed to audio_format_t
Change-Id: I08c38ee3ade7b24dc9e2b3ed2b7037c42521a555
2014-01-31 07:51:17 -08:00
Pavel Chupin c6c194ced0 LP64: Enable debuggerd/libbacktrace/libunwind.
Change-Id: I2e432839f86c33c2adbaac8cc12ca8961956044b
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2014-01-30 17:15:24 -08:00
Vignesh Venkatasubramanian 76edb1c0e6 Adding opus to list of audio formats
Adding opus to the list of audio formats enum.

This CL is part of adding Opus decoding support to android.

Change-Id: I41decf426ed3f76c10b27f247b1264010689c759
2014-01-29 10:11:39 -08:00
Mike Lockwood 5df1e320c7 Merge "libusbhost: Add usb_device_set_configuration and usb_device_set_interface" 2014-01-29 18:09:38 +00:00
Christopher Ferris 96a0bf1e94 am 36a4e408: am aaf89887: am 6fe31b2f: am d391c9b4: Merge "Re-enable libunwind for arm."
* commit '36a4e4085e55048ee2a78c7d5b50f7395e547fa2':
  Re-enable libunwind for arm.
2014-01-29 12:19:59 +00:00
Christopher Ferris d391c9b4ac Merge "Re-enable libunwind for arm." 2014-01-28 21:23:50 +00:00
Christopher Ferris df2906186b Re-enable libunwind for arm.
Update to handle the new optimized way that libunwind works.

In addition, a small refactor of the BacktraceMap code.

A few new tests of for good measure.

Change-Id: I2f9b4f5ad5a0dfe907b31febee76e4b9b94fb76f
2014-01-28 12:03:36 -08:00
Mark Salyzyn 44b99c22af libsysutils: SocketListener export release
* Foreground thread (legacy) closes connection by
  reporting false return value for onDataAvailable.
* Background thread can choose instead to close the
  connection asynchronously by calling release, must
  return true for the onDataAvailable method.

(cherry picked from commit d7ad4e409e)

Change-Id: I70ab37d5c22b02804aa3b4dfb26cc9b75291f8b6
2014-01-27 15:22:49 -08:00
Mark Salyzyn 23f04107dc libsysutils: Add iovec/runOnEachSocket
SocketClient:
* Replace sendDataLocked with sendDataLockedv which takes an iovec.
* Add a version of sendData, sendDatav, which takes an iovec.
* do not preserve iovec content through sendDatav

SocketListener:
* Add runOnEachSocket, which allows to to specify a SocketClientCommand to
  run individually on each socket. This allows you to do broadcast-like
  actions customized for each individual socket.
* Client safe list reference counting for sendBroadcast & runOnEach Socket

(cherry picked from commit a6e965578e)

Signed-off-by: Nick Kralevich <nnk@google.com>
Signed-off-by: Mark Salyzyn <salyzyn@google.com>

Change-Id: I716f89c01b4cb7af900045c7e41fac1492defb06
2014-01-27 15:22:04 -08:00
Mark Salyzyn 318bb72601 liblog: Add const pedantics
(cherry picked from commit 9e03ce45f9)

Change-Id: I819695b778ac08fcfc9b1a87f3f86e5715f53084
2014-01-27 15:19:53 -08:00
Mark Salyzyn 819c58a8ca liblog: Add liblog test suite
(cherry picked from commit 8d1fdb5093)

Change-Id: Ia457d518b4e7ff37e840336ff0c48583709700d4
2014-01-27 15:17:39 -08:00
Mark Salyzyn 1345f38e44 liblog: deprecate export LOGGER ioctl definitions
(cherry picked from commit 2e44a9ea25)

Change-Id: I150cad9309255bec2b8bc7230c744e9bbb1b9578
2014-01-27 15:16:43 -08:00
Mark Salyzyn e9c4196980 liblog: deprecate export of LOGGER_LOG_* defines
(cherry picked from commit 73459a5c87)

Change-Id: I263af8e889f8f2ad91b91757caf90a4d17823dab
2014-01-27 15:16:04 -08:00
Mark Salyzyn 168021c282 liblog: resolve build warning messages
(cherry picked from commit 153b370624)

Change-Id: Icc6f1f2c926a008efc4df71022cfde8d0e285880
2014-01-27 15:15:05 -08:00
Mark Salyzyn f387fa5df0 liblog: drop use of sys/cdefs.h
(cherry picked from commit c96a44888a)

Change-Id: I44ea5d6b572e3712c301e6ebf4b34e6225d7e18b
2014-01-27 15:13:17 -08:00
Mark Salyzyn 4295841ebe liblog: Interface to support abstracting log read
(cherry picked from commit 6c1b07fbbd)

Change-Id: Iedc55c1316029b4bb72f51cc656b53b0e3f90aee
2014-01-27 15:10:39 -08:00
Mark Salyzyn a6aad4cdb3 libcutils: Move list.c to inlines on list.h
(cherry picked from commit 0ea3624b3e)

Change-Id: I0572555a194d2560e74dfbf07abcec05e9a276a2
2014-01-27 15:04:56 -08:00
Colin Cross 892af2303f am 9222d911: am c8518616: am 02f68c4b: am 4800e20e: Merge "system/core: rename aarch64 target to arm64"
* commit '9222d911a89d30a9b0537e8cdb95401be3a4999e':
  system/core: rename aarch64 target to arm64
2014-01-24 21:24:52 +00:00
Colin Cross d4146e6091 system/core: rename aarch64 target to arm64
Rename aarch64 build targets to arm64.  The gcc toolchain is still
aarch64.

Change-Id: Ia92d8a50824e5329cf00fd6f4f92eae112b7f3a3
2014-01-23 18:01:14 -08:00
Colin Cross adc09abb85 am 7d076b3b: am b36cfdb7: am 4b53b014: am 5bd11b48: Merge changes Ib13d9654,I98723ccd
* commit '7d076b3bf32e0d211d9d27964cc74dafd65afee3':
  system/core: remove $(KERNEL_HEADERS) from includes
  libcutils: fix atomic_memory_store_barrier
2014-01-24 00:41:20 +00:00
Colin Cross 3510637c85 libcutils: fix atomic_memory_store_barrier
dmb isht is not a valid instruction, fix it to be dmb ishst
(data memory barrier, inner shareable, on writes).

Change-Id: I98723ccd8618b7863cb55da53dc29b979c9905a5
2014-01-22 19:04:28 -08:00
Mark Salyzyn d7ad4e409e libsysutils: SocketListener export release
* Foreground thread (legacy) closes connection by
  reporting false return value for onDataAvailable.
* Background thread can choose instead to close the
  connection asynchronously by calling release, must
  return true for the onDataAvailable method.

Change-Id: I70ab37d5c22b02804aa3b4dfb26cc9b75291f8b6
2014-01-22 10:40:39 -08:00
Mark Salyzyn a6e965578e libsysutils: Add iovec/runOnEachSocket
SocketClient:
* Replace sendDataLocked with sendDataLockedv which takes an iovec.
* Add a version of sendData, sendDatav, which takes an iovec.
* do not preserve iovec content through sendDatav

SocketListener:
* Add runOnEachSocket, which allows to to specify a SocketClientCommand to
  run individually on each socket. This allows you to do broadcast-like
  actions customized for each individual socket.
* Client safe list reference counting for sendBroadcast & runOnEach Socket

Signed-off-by: Nick Kralevich <nnk@google.com>
Signed-off-by: Mark Salyzyn <salyzyn@google.com>

Change-Id: I716f89c01b4cb7af900045c7e41fac1492defb06
2014-01-22 10:40:30 -08:00
Christopher Ferris 64ca5ade85 am 758c8636: am 6ecdff5b: am f7adcfc8: am 17b9c827: Merge "Add PROT_* constants not found on windows."
* commit '758c8636c6804f67db0b05617ff37f0a0d0ba859':
  Add PROT_* constants not found on windows.
2014-01-17 20:11:23 +00:00
Christopher Ferris 6c625f6717 resolved conflicts for merge of 47fa9064 to master
Change-Id: I53fb8ff2dfbefe6246385e624c5c3525cc6f4253
2014-01-17 11:56:04 -08:00
Christopher Ferris 0dbce4564b Add PROT_* constants not found on windows.
Change-Id: Ic515363ed66dfb2d8e1a6fdfa274508b3a91311d
2014-01-17 08:25:26 -08:00
Mark Salyzyn 9e03ce45f9 liblog: Add const pedantics
Change-Id: I819695b778ac08fcfc9b1a87f3f86e5715f53084
2014-01-16 18:04:57 -08:00
Christopher Ferris 46756821c4 Rewrite libbacktrace to be all C++.
This includes removing the map_info.c source and replacing it with the
BacktraceMap class to handle all map related code.

Change all callers of libbacktrace map functionality.

Also modify the corkscrew thread code so that it doesn't need to build
the map twice (once in the corkscrew format and once in the libbacktrace
format).

Change-Id: I32865a39f83a3dd6f958fc03c2759ba47d12382e
2014-01-16 16:12:29 -08:00
Mark Salyzyn 8d1fdb5093 liblog: Add liblog test suite
Change-Id: Ia457d518b4e7ff37e840336ff0c48583709700d4
2014-01-16 16:04:17 -08:00
Mark Salyzyn 2e44a9ea25 liblog: deprecate export LOGGER ioctl definitions
Change-Id: I150cad9309255bec2b8bc7230c744e9bbb1b9578
2014-01-16 15:05:29 -08:00
Doug Zongker d0f2c265d8 Merge "add the pre-recovery service" 2014-01-16 22:41:24 +00:00
Mark Salyzyn 24239a99ff Merge "liblog: deprecate export of LOGGER_LOG_* defines" 2014-01-16 21:51:03 +00:00
Doug Zongker 7baebf1345 add the pre-recovery service
Add a service called "pre-recovery" which is normally stopped but can
be started by the system server when we want to go into recovery.  It
will do any preparation needed (currently needed to handle update
packages that reside on an encrypted /data partition) and then set
sys.powerctl when it's ready to actually reboot.

Bug: 12188746
Change-Id: I894a4cb200395a0f6d7fe643ed4c2ac0a45d2052
2014-01-16 08:54:59 -08:00
Glenn Kasten 1c3e16fb40 Miscellaneous updates to <system/audio.h>
Add single-precision floating-point PCM format:
    - AUDIO_FORMAT_PCM_SUB_FLOAT
    - AUDIO_FORMAT_PCM_FLOAT

Add symbols to replace hard-coded constants in code:
    - AUDIO_IO_HANDLE_NONE
    - AUDIO_IN_ACOUSTICS_NONE
    - AUDIO_INTERLEAVE_*
    - AUDIO_STREAM_MIN

Update comments.

Fix whitespace in switch statement.

Change-Id: I61862c188ebac06657b5d9887164edc24b8ab8f5
2014-01-15 14:11:27 -08:00
Glenn Kasten 765aef9c13 Merge "Add AUDIO_SESSION_ALLOCATE" 2014-01-15 00:15:37 +00:00
Glenn Kasten b4f2b4eac4 Add AUDIO_SESSION_ALLOCATE
Change-Id: I045f2f04520bc474666c43a0ff1568f0fab3567c
2014-01-14 16:14:18 -08:00
Elliott Hughes 49cf122d25 am 7b80c138: am 7c7d76f4: am ab3d5036: am d47ffb88: Merge "AArch64: Add atomic functions"
* commit '7b80c1381581bd3c0c28440236e043888c49087d':
  AArch64: Add atomic functions
2014-01-14 23:43:47 +00:00
Elliott Hughes d47ffb8890 Merge "AArch64: Add atomic functions" 2014-01-14 23:32:22 +00:00
Ashok Bhat c15d2ce5fc AArch64: Add atomic functions
This patch adds atomic functions for AArch64. The functions
will be revisited later for potential optimizations using
assembly or otherwise.

This patch also introduces new 64-bit atomic functions for
LP64 platforms.

Change-Id: Id2127dd01cea65025f939e955d73d27e95d8687e
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
2014-01-14 12:45:58 -08:00
Mark Salyzyn 73459a5c87 liblog: deprecate export of LOGGER_LOG_* defines
Change-Id: I263af8e889f8f2ad91b91757caf90a4d17823dab
2014-01-14 07:51:14 -08:00
Christopher Ferris 4167d7e5c2 resolved conflicts for merge of 8791ee5c to master
Change-Id: I107bb055941809331c451c1d903f231f07a86ece
2014-01-13 18:14:11 -08:00
Christopher Ferris 20303f856f Next phase of the move, reformat use C++ features.
Use the libbacktrace C++ interface instead of the C interface in debuggerd.

Reformat the debuggerd code to be closer to Google C++ style.

Fix all debuggerd casts to be C++ casts.

Add a frame number to the frame data structure for ease of formatting and
add another FormatFrameData function.

Change the format_test to use the new FormatFrameData function.

Modify all of the backtrace_test to use the C++ interface.

Change-Id: I10e1610861acf7f4a3ad53276b74971cfbfda464
2014-01-13 14:21:52 -08:00
Mike Lockwood d2e798b530 libusbhost: Add usb_device_set_configuration and usb_device_set_interface
usb_device_set_configuration is to support devices with multiple configurations
usb_device_set_interface supports switching between interfaces with alternate settings

Also moved zero string index checking to usb_device_get_string

Change-Id: I34610b25f135894a0cf752a33e5738d4314d7122
2014-01-13 09:54:13 -08:00
Christopher Ferris bc12d6329e Move BACKTRACE_NO_TID to BACKTRACE_CURRENT_THREAD.
Use a bit better name for this. The other name was a bit confusing.

Change-Id: I1261f2ee3854a9c8b82133ad0bfbbbe48b43c9ac

(cherry picked from commit 242b1a8c7a)

Conflicts:
	libbacktrace/Backtrace.cpp
2014-01-09 15:49:39 -08:00
Christopher Ferris 038ac694b3 Move CallStack to libbacktrace.
Fix a small bug in the Printer for strings that didn't properly
prepend the prefix.

(cherry picked from commit 9b0e074c6d)

Change-Id: I78bfa3f76864c34f33fb439bf20dfc85616f1077
2014-01-09 15:09:13 -08:00
Mark Salyzyn 153b370624 liblog: resolve build warning messages
Change-Id: Icc6f1f2c926a008efc4df71022cfde8d0e285880
2014-01-09 10:42:20 -08:00
Christopher Ferris a74ead0fd6 resolved conflicts for merge of 72f204de to master
Change-Id: I7345014d00c669aea5e27ea50b2ac658145b068b
2014-01-08 16:20:50 -08:00
Christopher Ferris 9846497f79 Refactor to share map_info amongst threads.
Allow the use of the same map info to be shared when getting information on
multiple threads from the same pid.

Change-Id: I2e460e20154a10f4894ae563331fb32179e4551f
2014-01-08 15:32:28 -08:00
Mark Salyzyn c96a44888a liblog: drop use of sys/cdefs.h
Change-Id: I44ea5d6b572e3712c301e6ebf4b34e6225d7e18b
2014-01-03 17:40:20 -08:00
Mark Salyzyn 105a83e854 Merge "Revert "liblog: Add liblog test suite"" 2014-01-04 01:01:33 +00:00
Mark Salyzyn 20727babc7 Revert "liblog: Add liblog test suite"
This reverts commit 46abc52296.

Change-Id: Iced83fdfa7de061c0495920ea28a9468023706d3
2014-01-04 00:41:16 +00:00
Mark Salyzyn 7cc2336316 Merge changes Ia6d6821e,I1e1a55d1,Ic26e9dba,Iedc55c13
* changes:
  liblog: Add liblog test suite
  logcat: Incorporate liblog reading API
  debuggerd: Incorporate liblog reading API
  liblog: Interface to support abstracting log read
2014-01-03 22:49:35 +00:00
Rom Lemarchand e3f0c079b3 am 79b6b7f0: am 1892fe66: am c8d7d2d6: am 5234147c: Merge "move sync headers from include to libsync"
* commit '79b6b7f0fdb14fcd8c336ed8f1c0a5b481bb8697':
  move sync headers from include to libsync
2014-01-03 21:42:21 +00:00
Rom Lemarchand ddc20de148 move sync headers from include to libsync
Make sw_sync.h private

Change-Id: I0b120ebe81fd4a191b7aa4b6a8de4f64d16e2b3e
2014-01-03 21:27:05 +00:00
Mark Salyzyn 46abc52296 liblog: Add liblog test suite
Change-Id: Ia6d6821e8546e0eccacab812d39d529ea0372c6a
2014-01-02 12:54:07 -08:00
Mark Salyzyn 6c1b07fbbd liblog: Interface to support abstracting log read
Change-Id: Iedc55c1316029b4bb72f51cc656b53b0e3f90aee
2014-01-02 12:53:53 -08:00
Colin Cross d809eace0c am 9f34b141: am 85d5d611: am c4f4e5e2: am cd8b953e: Merge changes I2d3fef08,Idb828aa4,Ica764b1f,I9ae8887b,I376fad86,I4d00a9dd
* commit '9f34b141b301f15111de2ff0efb3d76379b46f1c':
  libion: update to latest uapi header
  libion: return -errno from ion_close
  libion: add include for size_t
  libion: add NULL checks
  libion: clean up whitespace
  libion: move ion.h into local include directory
2013-12-19 22:12:51 +00:00
Colin Cross cd8b953ede Merge changes I2d3fef08,Idb828aa4,Ica764b1f,I9ae8887b,I376fad86,I4d00a9dd
* changes:
  libion: update to latest uapi header
  libion: return -errno from ion_close
  libion: add include for size_t
  libion: add NULL checks
  libion: clean up whitespace
  libion: move ion.h into local include directory
2013-12-19 21:49:48 +00:00
Colin Cross dfe747ada3 Merge "ion: update struct and type definitions to match kernel header" 2013-12-19 21:18:51 +00:00
Brian Carlstrom 0e90bb97cb am 137ab19a: am b37b53bf: am 87942c9a: am b3bfe881: Merge "Make libutils Looper independent of frameworks/native"
* commit '137ab19a0a196a419636b078f94aef23b1172335':
  Make libutils Looper independent of frameworks/native
2013-12-19 07:58:21 +00:00
Brian Carlstrom 1693d7e48f Make libutils Looper independent of frameworks/native
Change-Id: I1dacca10a3cd7601abc3451b69ed761bf71c38fe
2013-12-18 22:32:13 -08:00
Rom Lemarchand 969eac8161 ion: update struct and type definitions to match kernel header
- Replacing struct ion_handle * with ion_user_handle_t
- Replacing heap_mask field name with heap_id_mask

Change-Id: Iaba1ccc62b9398a7b37c5a734bc21a9ecbbc8277
2013-12-18 18:24:50 -08:00
Colin Cross 03c932dffa libion: move ion.h into local include directory
Export it to users of libion with LOCAL_C_EXPORT_INCLUDE_DIRS

Change-Id: I4d00a9dd2e99953723994d0304ca77e0ad50a3a9
2013-12-18 18:24:50 -08:00
Elliott Hughes fed76f8515 am 63824e92: am 980093ca: am 348856fa: am 532f4658: Merge "AArch64: Correction of struct surface_t"
* commit '63824e923aca6fe15942beee00b258ea6119e459':
  AArch64: Correction of struct surface_t
2013-12-16 20:03:17 +00:00
Elliott Hughes c29664284b am 49a88c3c: am 410a1966: am fd382f2e: am fd7eabe4: Merge "Pixelflinger: Add AArch64 support to pixelflinger JIT."
* commit '49a88c3cf38e9c17a756434880fb01971018a9c6':
  Pixelflinger: Add AArch64 support to pixelflinger JIT.
2013-12-16 19:55:21 +00:00
Elliott Hughes 532f465823 Merge "AArch64: Correction of struct surface_t" 2013-12-16 19:50:17 +00:00
Elliott Hughes fd7eabe442 Merge "Pixelflinger: Add AArch64 support to pixelflinger JIT." 2013-12-16 19:42:55 +00:00
Elliott Hughes f73c009a3d am aa8dc146: am 41e9ee24: am feb539b6: am e1a475c0: Merge "Force alignment of data buffer used to process netlink messages"
* commit 'aa8dc14665003abbbeebed3b113c3083b3f342c7':
  Force alignment of data buffer used to process netlink messages
2013-12-14 00:27:09 +00:00
Elliott Hughes e1a475c0b4 Merge "Force alignment of data buffer used to process netlink messages" 2013-12-14 00:13:32 +00:00
Narayan Kamath cec7e7e3ea am 153c03ac: am df39ce39: am d61266d0: am 4928d8d0: Merge "Fix ExtractEntryToFile."
* commit '153c03acc247ef283ed27d83e9286425b651a816':
  Fix ExtractEntryToFile.
2013-12-13 22:19:37 +00:00
Narayan Kamath 00a258cec7 Fix ExtractEntryToFile.
We would always write uncompressed data at offset 0 instead
of the current filedescriptor offset.

Also adds a unit-test & a clarifying comment on the API.

Change-Id: If44757e96dde504ce63d81b4dec7115fc6f6d5fb
2013-12-13 17:56:57 +00:00
Elliott Hughes 260854c0b0 am ed20fef0: am a99f0b6e: am 5b8daae0: am a67b39cb: Merge "Pixelflinger: Fix issue of pointers being stored in ints"
* commit 'ed20fef0630d02395abab6a073a5717ddfbfaa8d':
  Pixelflinger: Fix issue of pointers being stored in ints
2013-12-12 21:33:04 +00:00
Ashok Bhat 658f89dc5c Pixelflinger: Add AArch64 support to pixelflinger JIT.
See the comment-block at the top of Aarch64Assembler.cpp
for overview on how AArch64 support has been implemented

In addition, this commit contains
[x] AArch64 inline asm versions of gglmul series of
    functions and a new unit test bench to test the
    functions

[x] Assembly implementations of scanline_col32cb16blend
    and scanline_t32cb16blend for AArch64, with unit
    test bench

Change-Id: I915cded9e1d39d9a2a70bf8a0394b8a0064d1eb4
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
2013-12-12 17:30:13 +00:00
Ashok Bhat d10afb1748 Pixelflinger: Fix issue of pointers being stored in ints
Pixelflinger's code makes assumptions, at certain places,
that pointers can be stored as ints. This patch makes use
of uintptr_t wherever pointers are stored as int or cast
to int.

Change-Id: Ie76f425cbc82ac038a747f77a95bd31774f4a8e8
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
2013-12-12 17:30:13 +00:00
Marcus Oakland 6053564160 AArch64: Correction of struct surface_t
The struct in the union with GGLSurface in struct surface_t assumed
that the reserved field, which corresponds to the GGLsizei version
field in the GGLSurface structure (where GGLsizei is define as being
ssize_t in the system/core/include/pixelflinger/pixelflinger.h header
file) is uint32_t. That is appropriate to the 32-bit system but is
not appropriate to the 64-bit system, where ssize_t is 64-bits rather
than 32-bits.

The 32-bit system has also been tested and has no regression
because of this change.

Change-Id: I5cd84fd4a18fa0e63e27975f7b3d3e95b99cea58
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
2013-12-10 18:13:26 +00:00
Mark Salyzyn 9880128af2 Merge changes I7d9db1e2,I48b0942a,I0572555a
* changes:
  liblog: whitespace cleanup
  libsysutils: Get rid of warnings
  libcutils: Move list.c to inlines on list.h
2013-12-06 19:12:28 +00:00
Narayan Kamath fe4d0a1065 am cb7092d9: am 48a6d3de: am ac3ab308: Merge "Fix Mac OS build for libziparchive."
* commit 'cb7092d9f602dcbe8c8c7b2eeec5858e1c35cc39':
  Fix Mac OS build for libziparchive.
2013-12-06 18:37:12 +00:00
Narayan Kamath 48a6d3de59 am ac3ab308: Merge "Fix Mac OS build for libziparchive."
* commit 'ac3ab308f657f70e2747734d5ff2158aa943b25e':
  Fix Mac OS build for libziparchive.
2013-12-06 10:32:07 -08:00
Narayan Kamath 574c3b35df Fix Mac OS build for libziparchive.
BSD off_t are implicitly 64 bit so the platform
doesn't define off64_t.

Change-Id: I51cbe94ead01d2d6bc7c5010d9472487bee7c2d3
2013-12-06 18:27:53 +00:00
Narayan Kamath 52d07d2056 am f591bbc2: am 51a1d4e3: am a2125077: Merge "Unify zipfile implementations : Step 1."
* commit 'f591bbc247cf3535c8b5e162058769db4aa3d4af':
  Unify zipfile implementations : Step 1.
2013-12-06 16:08:40 +00:00
Narayan Kamath 51a1d4e3f6 am a2125077: Merge "Unify zipfile implementations : Step 1."
* commit 'a2125077e104941f797f93fbe6bfad22ef60a1d8':
  Unify zipfile implementations : Step 1.
2013-12-06 05:37:39 -08:00
The Android Open Source Project 7fc7a07b23 Merge commit '252d9030cd4b2e3e6cf13fa33f328eccedb5e26c' into HEAD 2013-12-05 12:38:34 -08:00
Mark Salyzyn 0ea3624b3e libcutils: Move list.c to inlines on list.h
Change-Id: I0572555a194d2560e74dfbf07abcec05e9a276a2
2013-12-05 07:33:21 -08:00
Narayan Kamath 7462f02f82 Unify zipfile implementations : Step 1.
Extract zip file processing logic from libdvm into a
standalone library.

This library is a stricter than the libdvm library in
several ways:
- Duplicate zip entry names are now disallowed. Files with
  such entries will fail to parse.
- We now verify CD file size information with the individual
  file header information. (This was pointed out as a deficiency
  of this implementation in past discussions.)
- We also add support for crc checking, which means we might
  need to parse the optional data descriptor footer (if one
  exists).

We also provide an API for iterating over the entries of
a zip file. This library is optimized for two use cases :

- Lookup for a single entry in the file, with the intention
  of processing or extracting the data associated with that
  entry
- Iterating over all entries in a file *and* processing
  / extracting their data.

Change-Id: Ia87de6184ef753cc470b0af755c47a4f92ac8198
2013-12-04 13:28:40 +00:00
The Android Open Source Project 66ed50af68 Merge commit '536dea9d61a032e64bbe584a97463c6638ead009' into HEAD
Change-Id: I5c469a4b738629d99d721cad7ded02d6c35f56d5
2013-11-22 13:44:43 -08:00
Elliott Hughes fd91129d5b am bbdfc0c4: am dd2ac3de: am d966eebf: Merge "Fix build."
* commit 'bbdfc0c4124d838d16b65ef96cf4285dbe8ae038':
  Fix build.
2013-11-21 23:00:24 -08:00
Elliott Hughes bbdfc0c412 am dd2ac3de: am d966eebf: Merge "Fix build."
* commit 'dd2ac3de625e6c0328a0f70530d8ade0d2151bfc':
  Fix build.
2013-11-21 22:18:38 -08:00
Elliott Hughes f98e4bf7fb Fix build.
Change-Id: I6552bf9f83faa97bd5a844381aceb3ef85f86c76
2013-11-21 22:09:46 -08:00
Lorenzo Colitti 4fe95effe5 am 85fddd86: am cbc32e9f: Merge "Support parsing RDNSS ND options from netlink."
* commit '85fddd867b06cf10ba8f79d0d37c4b65fa47cf8a':
  Support parsing RDNSS ND options from netlink.
2013-11-21 17:01:44 -08:00
Lorenzo Colitti c7eec83f08 Support parsing RDNSS ND options from netlink.
The RDNSS options (RFC 6106) used to configure DNS servers via
router advertisements are passed from the kernel to userspace via
RTM_NEWNDUSEROPT netlink messages. Add code to NetlinkEvent to
parse them.

Also fix a compiler warning and a couple of style issues.

[Cherry-pick of b185e90dcc]

Bug: 9180552
Change-Id: I6c532c8f0ceef3afdc977a431a036df398013e1a
2013-11-20 10:31:19 +09:00
Lorenzo Colitti 526b838c9d Switch back to subsystem "net" for netlink events.
The change to enable address tracking via netlink incorrectly
changed the subsystem of rtnetlink events from "net" to
"interface". This broke interface add/delete notifications,
which come from the kernel with subsystem "net".

Switch back to "net" and deal with address tracking via new
action codes instead of a new subsystem.

[Cherry-pick of f34861346d]

Bug: 10433320
Change-Id: Ibf30efb426949dfd02304cc1d9adb1c005a539a6
2013-11-20 10:29:42 +09:00
Lorenzo Colitti 381f70f52a Parse IP address changes in NetlinkEvent.
This adds support for parsing RTM_NEWADDR and RTM_DELADDR
netlink messages received on netd's netlink socket and
formatting them them so NetlinkHandler can process them.

Address changes are notified in subsystem "address". Interface
changes, which used to be notified in subsystem "net", are now
notified in subsystem "interface" to avoid confusion.

[Cherry-pick of a4b4e9ad8e]

Bug: 10232006
Change-Id: I93a50e8de17014e118a42f5cc0eb90a0cbfa73cc
2013-11-20 10:29:05 +09:00
Christopher Ferris 242b1a8c7a Move BACKTRACE_NO_TID to BACKTRACE_CURRENT_THREAD.
Use a bit better name for this. The other name was a bit confusing.

Change-Id: I1261f2ee3854a9c8b82133ad0bfbbbe48b43c9ac
2013-11-12 12:14:51 -08:00
Christopher Ferris 7f3c8f9c5b Remove hack for mingw compiler.
The __BEGIN_DECLS/__END_DECLS macro is now defined for mingw.

Change-Id: Icd09b92a83e982ac0ed3eb34df4c1d79de21941e
2013-11-08 16:26:59 -08:00
Narayan Kamath ab9189893d Fix mingw windows host build.
__BEGIN_DECLS isn't defined on this platform and
it appears to be missing sys/cdefs.h

Change-Id: I13cc557700198590cf717e3007dee738043ac3bf
2013-11-08 15:59:46 +00:00
Rom Lemarchand efaf929691 Merge "ion: update struct and type definitions to match kernel header" 2013-11-07 13:30:00 +00:00
Christopher Ferris aca6a4c8af am 5e860ce2: am d6f9be1b: Merge "Fix include files in backtrace.h."
* commit '5e860ce246b9235debc6a04325c7c1983c2b277e':
  Fix include files in backtrace.h.
2013-11-06 17:47:16 -08:00
Christopher Ferris e57912da92 Fix include files in backtrace.h.
(cherry picked from commit 0893258222)

Change-Id: I37a78a9472b94ae84a84d871bfa9a070ff882699
2013-11-06 17:34:38 -08:00
Christopher Ferris 0893258222 Fix include files in backtrace.h.
Change-Id: Iaaa98b12bbf231ea43ee12f5a3f5ba0a3e4a15d6
2013-11-06 17:19:53 -08:00
Christopher Ferris 9b0e074c6d Move CallStack to libbacktrace.
Fix a small bug in the Printer for strings that didn't properly
prepend the prefix.

Change-Id: I33c63841ef6e07728ab3195886539d82b38ee19a
2013-11-06 12:37:14 -08:00
Rom Lemarchand a97f22aaf1 ion: update struct and type definitions to match kernel header
- Replacing struct ion_handle * with ion_user_handle_t
- Replacing heap_mask field name with heap_id_mask

Change-Id: Iaba1ccc62b9398a7b37c5a734bc21a9ecbbc8277
2013-11-06 08:29:02 -08:00
Christopher Ferris 0186edee58 am 2e47c8ac: am 1e1bae1b: am c2945850: Merge "Add some clarifying defines."
* commit '2e47c8ac74e070d62cfb46355c7c04797657c594':
  Add some clarifying defines.
2013-11-05 14:22:20 -08:00
Christopher Ferris 2e47c8ac74 am 1e1bae1b: am c2945850: Merge "Add some clarifying defines."
* commit '1e1bae1b0fc750f60ef9a2531850bbcf27ba6610':
  Add some clarifying defines.
2013-11-05 11:48:55 -08:00
Christopher Ferris cbfc7302fb Add some clarifying defines.
In order to be explicit in the Backtrace::Create() calls, adding a couple
of defines and some comments to describe what they mean.

Change-Id: I6ad08c529791821496a95fa33cea1c95b0a7eada
2013-11-05 11:05:32 -08:00
Lorenzo Colitti b185e90dcc Support parsing RDNSS ND options from netlink.
The RDNSS options (RFC 6106) used to configure DNS servers via
router advertisements are passed from the kernel to userspace via
RTM_NEWNDUSEROPT netlink messages. Add code to NetlinkEvent to
parse them.

Also fix a compiler warning and a couple of style issues.

Bug: 9180552
Change-Id: I6c532c8f0ceef3afdc977a431a036df398013e1a
2013-11-01 14:05:02 +09:00
Chris Dearman b518aeb5e3 Force alignment of data buffer used to process netlink messages
This avoids any overhead associated with accessing unaligned data
while processing netlink messages.

Change-Id: I1ea13051816ef46b6627594121d98cda130ac609
2013-10-30 15:42:26 -07:00
Christopher Ferris 74160cb775 am 6b7b6541: am b5c24e09: am 8c58086c: Merge "More libbacktrace fixes."
* commit '6b7b65417aead0189681c12d9162f31e8bc9b3e5':
  More libbacktrace fixes.
2013-10-30 14:33:32 -07:00
Christopher Ferris 6b7b65417a am b5c24e09: am 8c58086c: Merge "More libbacktrace fixes."
* commit 'b5c24e096d34e0f096d574f2aa799cd2dc6fc7db':
  More libbacktrace fixes.
2013-10-30 14:31:48 -07:00
Igor Murashkin de2eae31b3 am 39f18c9e: am 1b84e0a3: Merge "utils: Add ProcessCallStack to collect stack traces for all threads in a process" into klp-dev
* commit '39f18c9ece973a0eaff7e982a120de63f31ee5c0':
  utils: Add ProcessCallStack to collect stack traces for all threads in a process
2013-10-30 14:18:46 -07:00
Igor Murashkin 39f18c9ece am 1b84e0a3: Merge "utils: Add ProcessCallStack to collect stack traces for all threads in a process" into klp-dev
* commit '1b84e0a3145f1497fc2259608d8830f371526ece':
  utils: Add ProcessCallStack to collect stack traces for all threads in a process
2013-10-30 14:16:18 -07:00
Christopher Ferris 8ed46278be More libbacktrace fixes.
Included in minor fix ups is the addition of a warning macro to replace
all of the ALOGW calls.

Fix a race where multiple threads could be attempting to unwind the threads
of the current process at the same time.

Bug: 8410085

Change-Id: I02a65dc778dde690e5f95fc8ff069a32d0832fd1
2013-10-30 14:14:54 -07:00
Christopher Ferris 6996f91809 resolved conflicts for merge of 0433d622 to master
Change-Id: I6799c3fe8900ddcb2e9fe3032793dbb0996cf177
2013-10-29 13:56:52 -07:00
Christopher Ferris 0433d62291 am 0f26808e: am 98f87d92: Merge "Rewrite libbacktrace using C++."
* commit '0f26808e2c696f8bdcca644e0ddae2af9f753ada':
  Rewrite libbacktrace using C++.
2013-10-29 13:27:54 -07:00
Christopher Ferris 17e91d44ed Rewrite libbacktrace using C++.
The old code was essentially trying to be C++ in C and was awkward. This
change makes it all objects with a thin layer that C code can use.

There is a C++ backtrace object that is not very useful, this code will
replace it.

This change also includes moving the backtrace test to a gtest, and adding
coverage of all major functionality.

Bug: 8410085
Change-Id: Iae0f1b09b3dd60395f71ed66010c1ea5cdd37841
2013-10-28 17:55:25 -07:00
Igor Murashkin ec79ef2e7b utils: Add ProcessCallStack to collect stack traces for all threads in a process
- Also add a Printer class (print lines to logcat, fd, or strings)

Bug: 11324229
Change-Id: I78435ed49aa196a0efb45bf9b2d58b62c41737d3
2013-10-25 19:24:56 -07:00
Kenny Root df206c8e46 am 33d1e629: am 4ff9c3f7: am aab1670b: Merge "Add support for ECDSA P-256 with SHA256"
* commit '33d1e6294f609c4f417905239bd5a086f3ef880f':
  Add support for ECDSA P-256 with SHA256
2013-10-10 11:17:57 -07:00
Kenny Root 33d1e6294f am 4ff9c3f7: am aab1670b: Merge "Add support for ECDSA P-256 with SHA256"
* commit '4ff9c3f7d89fe418290288d0925f257f0fe15f20':
  Add support for ECDSA P-256 with SHA256
2013-10-10 11:14:49 -07:00
Kenny Root db0850c3b6 Add support for ECDSA P-256 with SHA256
This adds a small EC library that is capable of verifying a signature of
SHA256 with ECDSA on the NIST P-256 curve.

Change-Id: I2a16639c92a77e8e4783c47ffbc56676de56eb59
2013-10-09 17:04:50 -07:00
Christopher Ferris 5eaafe2306 am 44b23fd6: am 3f0a5e9c: am 71a8aa34: Merge "Update comment from review."
* commit '44b23fd6aac2303adc446b1b3ed5b7c05d6d7865':
  Update comment from review.
2013-10-01 18:45:49 -07:00
Christopher Ferris 0686535360 am 7eb36bf4: am 7f21826c: am f41cf208: Merge "Create a single backtrace library."
* commit '7eb36bf4b6e8de5fb28e6e5172f93e6973cd6bd2':
  Create a single backtrace library.
2013-10-01 18:45:49 -07:00
Christopher Ferris 44b23fd6aa am 3f0a5e9c: am 71a8aa34: Merge "Update comment from review."
* commit '3f0a5e9c9f279546fc5c89c61053554ef6eb43d3':
  Update comment from review.
2013-09-30 11:25:55 -07:00
Christopher Ferris 7eb36bf4b6 am 7f21826c: am f41cf208: Merge "Create a single backtrace library."
* commit '7f21826c478088b4717cc6c7d1ff6ef3d7da464a':
  Create a single backtrace library.
2013-09-30 11:17:31 -07:00
Christopher Ferris 474afff229 Update comment from review.
Missed this typo that enh pointed out.

Bug: 8410085
Change-Id: Ic636ae218fc153bc5e3b1a0fdc2f7161980e5eec
2013-09-30 11:16:17 -07:00
Christopher Ferris 7fb22878d4 Create a single backtrace library.
This library will be used to abstract away getting backtrace
data from how it is implemented. This is the first step to
replacing libcorkscrew with libunwind.

Bug: 8410085
Change-Id: Ie8f159e96a055d378e1ddc72d40239fba4cf52b7
2013-09-28 12:26:35 -07:00
Dmitry Shmidt 32b7108b64 Remove non-existing klog_close()
Change-Id: I49f6047b3f6d90ffa1601bd9348ae69d87b63aed
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2013-09-27 15:11:54 -07:00
Adam Lesinski 849b7aa5be am 71ddce59: am bbe4c49b: Merge "Moves libmemtrack header to standard location" into klp-dev
* commit '71ddce59275e70c34015b0fa87c10384ab1876cd':
  Moves libmemtrack header to standard location
2013-09-26 10:31:28 -07:00
Adam Lesinski 71ddce5927 am bbe4c49b: Merge "Moves libmemtrack header to standard location" into klp-dev
* commit 'bbe4c49b4eb664ca018ff670a4dcbf5b9de9a810':
  Moves libmemtrack header to standard location
2013-09-26 10:27:55 -07:00
jp abgrall 01b5618347 am 8f4c14f1: am 08170103: am 91962669: Merge "cutils: list: add list_for_each_safe"
* commit '8f4c14f1e7fd0a2f9b46151ccc83c49b41e830ef':
  cutils: list: add list_for_each_safe
2013-09-25 11:37:46 -07:00
jp abgrall 8f4c14f1e7 am 08170103: am 91962669: Merge "cutils: list: add list_for_each_safe"
* commit '0817010366feecb53fc70719b3784dd7c6d66b55':
  cutils: list: add list_for_each_safe
2013-09-25 11:36:02 -07:00
jp abgrall 9196266939 Merge "cutils: list: add list_for_each_safe" 2013-09-25 18:31:44 +00:00
Doug Zongker 8e5b63d045 mincrypt: support SHA-256 hash algorithm
- adds a library to compute the SHA-256 hash

- updates the RSA verifier to take an argument specifying either SHA-1
  or SHA-256

- updates DumpPublicKey to with new "key" version numbers for
  specifying SHA-256

- adds new argument to adb auth code to maintain existing behavior

(cherry picked from commit 515e1639ef)

Change-Id: Ib35643b3d864742e817ac6e725499b451e45afcf
2013-09-25 09:26:34 -07:00
Adam Lesinski 481b947d68 Moves libmemtrack header to standard location
Change-Id: If8c80003bc2f042c67ffdf38469407de3c2fda2c
2013-09-23 18:42:41 -07:00
Jeff Sharkey aa4a3228f0 am 9729b415: am 44d6342c: Remove mkdir() side effect, add .nomedia, utils.
* commit '9729b41574ca5e5e87c86b203a2096cbdc72cfea':
  Remove mkdir() side effect, add .nomedia, utils.
2013-09-20 15:59:37 -07:00
Jeff Sharkey 44d6342caa Remove mkdir() side effect, add .nomedia, utils.
Before this change, FUSE lookup() would have the side effect of
creating the directory on behalf of apps.  This resulted in most
directories being created just by Settings trying to measure disk
space.  Instead, we're switching to have vold do directory creation
when an app doesn't have enough permissions.

Create fs_mkdirs() utility to create all parent directories in a
path as needed.  Allow traversal (+x) into /storage directories.

Fix FUSE derived permissions to be case insensitive.  Mark well-known
directories as .nomedia when created.

Bug: 10577808, 10330221
Change-Id: I53114f2e63ffbe6de4ba6a72d94a232523231cad
2013-09-20 14:21:09 -07:00
Kenny Root d975f37294 Remove UniquePtr.h copy
This was copied from libcore/include quite a while ago, but the
canonical version has since moved out to a generic library called
libnativehelper. All users of this header should already have
libnativehelper on their include path, so switching to the canonical
version is as easy as removing the "utils/" part.

Change-Id: Iae8e59bf3eee573bfa78381866989934e5bbf19d
2013-09-20 10:47:08 -07:00
Mathias Agopian 126cdc2c4b am a512c1ca: am 7b445a8e: Merge "Fix rotation in camera2 API" into klp-dev
* commit 'a512c1ca6322b54b6a74be01be53d537f5a81da4':
  Fix rotation in camera2 API
2013-09-18 15:39:19 -07:00
Mathias Agopian 7b445a8e3a Merge "Fix rotation in camera2 API" into klp-dev 2013-09-18 22:31:28 +00:00
Jamie Gennis 02e20daebe am 3929efb9: am 9d773b97: Merge "trace: Add support for tracing 64-bit ints." into klp-dev
* commit '3929efb9d480b8893eb3e95cd282dd161ab8fb12':
  trace: Add support for tracing 64-bit ints.
2013-09-18 12:25:52 -07:00
Jamie Gennis f1921c7949 trace: Add support for tracing 64-bit ints.
Bug: 10624956
Change-Id: Ie1d7c8ac16b5a5ec1e63e4fb1863f5b1ab2b59e8
2013-09-18 19:03:45 +00:00
Mathias Agopian 96675ed91f Fix rotation in camera2 API
Bug: 10804238
Change-Id: I093945789d9c6d373392fc9dfd18ec2c6058d3b9
2013-09-17 23:48:54 -07:00
Todd Poynor fea5b4d44b healthd: move charger executable to healthd charger mode
* Add healthd charger mode ops
* Check for executable invocation as "charger", set charger mode if so
* Incorporate charger executable as healthd charger mode

Change-Id: I4a44e7a4c3a65ae9be94491f7f498aa48d4f8a84
2013-09-17 14:41:07 -07:00
Andrew Boie 30fb83b6e5 cutils: list: add list_for_each_safe
For when you want to modify the list whilst iterating over it.

Change-Id: I84432892890987c218e56883c35e52c9ff0240a3
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2013-09-12 15:30:40 -07:00
Kenny Root 0ddfe115b5 Use canonical UniquePtr.h file
Change-Id: I88b51b76120a83d2165d44421f29bcb5fd6d62a2
2013-09-11 23:41:23 -07:00
Eric Laurent 04c12ca061 Add HOTWORD audio source to audio.h
- This is a complimentary change to the one adding this new source to
  MediaRecorder.java

Bug: 10640877.

Change-Id: Ie213e82b5a60dad2a277cef367c2f5e4df70df06
2013-09-09 15:42:31 -07:00
Lorenzo Colitti f34861346d Switch back to subsystem "net" for netlink events.
The change to enable address tracking via netlink incorrectly
changed the subsystem of rtnetlink events from "net" to
"interface". This broke interface add/delete notifications,
which come from the kernel with subsystem "net".

Switch back to "net" and deal with address tracking via new
action codes instead of a new subsystem.

Bug: 10433320
Change-Id: Ibf30efb426949dfd02304cc1d9adb1c005a539a6
2013-09-03 00:25:14 +09:00
Jeff Brown 8ecc7afca4 Add helpers for audio remote submix devices.
Bug: 10265163
Change-Id: Iea7ecab4f2a655b719ff14b04c757d6dbd7a7ef3
2013-08-16 20:21:10 -07:00
Jesse Hall 1e26356da1 Replace sRGB_888 with sRGB_X_8888
Bug: 10357459
Change-Id: I23a3eca77acd8b4b40b1a67e7c050a7245b1821a
2013-08-16 08:40:52 -07:00
Lorenzo Colitti a4b4e9ad8e Parse IP address changes in NetlinkEvent.
This adds support for parsing RTM_NEWADDR and RTM_DELADDR
netlink messages received on netd's netlink socket and
formatting them them so NetlinkHandler can process them.

Address changes are notified in subsystem "address". Interface
changes, which used to be notified in subsystem "net", are now
notified in subsystem "interface" to avoid confusion.

Bug: 10232006
Change-Id: I93a50e8de17014e118a42f5cc0eb90a0cbfa73cc
2013-08-14 19:50:22 +09:00
Jeff Sharkey dfe0cbab3f Richer SD card permissions through FUSE.
Changes the FUSE daemon to synthesize an Android-specific set of
filesystem permissions, even when the underlying media storage is
permissionless.  This is designed to support several features:

First, apps can access their own files in /Android/data/com.example/
without requiring any external storage permissions.  This is enabled
by allowing o+x on parent directories, and assigning the UID owner
based on the directory name (package name).  The mapping from package
to appId is parsed from packages.list, which is updated when apps are
added/removed.  Changes are observed through inotify.  It creates
missing package name directories when requested and valid.

Second, support for separate permissions for photos and audio/video
content on the device through new GIDs which are assigned based on
top-level directory names.

Finally, support for multi-user separation on the same physical media
through new /Android/user/ directory, which will be bind-mounted
into place.  It recursively applies the above rules to each secondary
user.

rwxrwx--x root:sdcard_rw     /
rwxrwx--- root:sdcard_pics   /Pictures
rwxrwx--- root:sdcard_av     /Music

rwxrwx--x root:sdcard_rw     /Android
rwxrwx--x root:sdcard_rw     /Android/data
rwxrwx--- u0_a12:sdcard_rw   /Android/data/com.example
rwxrwx--x root:sdcard_rw     /Android/obb/
rwxrwx--- u0_a12:sdcard_rw   /Android/obb/com.example

rwxrwx--- root:sdcard_all    /Android/user
rwxrwx--x root:sdcard_rw     /Android/user/10
rwxrwx--- u10_a12:sdcard_rw  /Android/user/10/Android/data/com.example

These derived permissions are disabled by default.  Switched option
parsing to getopt().

Change-Id: I21bf5d79d13f0f07a6a116122b16395f4f97505b
2013-08-08 17:26:41 -07:00
Glenn Kasten 9de3fd115a Merge "Add audio_input_flags_t" 2013-08-05 19:11:34 +00:00
Dmitry Shmidt be06210c50 libnetutils: Get mtu together with dhcp session results
Change-Id: I517fd1f62d451b07466a21a2b770d9ce389dac19
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2013-08-02 14:09:09 -07:00
Glenn Kasten c051ffd7c2 Add audio_input_flags_t
Change-Id: Ie65398cc67218cc63be4baa8a2a61d0ea591a2a3
2013-08-02 10:30:42 -07:00
Eino-Ville Talvala b4802413a7 Merge "Window: Add query for consumer usage bits." 2013-08-02 00:23:02 +00:00
Mathias Agopian ddff623049 minor tweaks to FlattenableUtils
Change-Id: Ibfceec36434baac92c8815a18d902375d3fa1a6d
2013-08-01 12:47:58 -07:00
Dianne Hackborn 0f10d0abf3 Add a new utf8-to-utf16 conversion function.
Change-Id: I957c22fb219596ca4239db7a169473d3894b09eb
2013-07-31 16:04:39 -07:00
Mathias Agopian 6d611a891d Make Flattenable not virtual (libutils)
Making an object Flattenable doesn't force it to
become virtual anymore. For instance, Fence and GraphicBuffer
are now non-virtual classes.

Also change Flatennable protocol a bit so that it updates
its parameters (pointers, sizes) to make it easier
to implement a flattenable in terms of other flattenables.

Change-Id: Ie81dc7637180b3c2cfcbaf644f8987ca804eb891
2013-07-31 13:41:41 -07:00
Eino-Ville Talvala f88a5b4f88 Window: Add query for consumer usage bits.
Bug: 9592202
Change-Id: Ied2fdb985dc59dd9c0f26c515353abdc37f0eb77
2013-07-30 21:38:13 +00:00
Alex Ray 0d8f3d6c45 libutils: give BasicHashtableImpl a virtual destructor
Change-Id: I4ec590b060d732af5fe525670becbe778684247b
2013-07-30 13:57:01 -07:00
Alex Ray 567ea471ff utils: move thread enums to system/core
Change-Id: Ia97963cc9acf8661d01355786f5e7e7bf54581c2
2013-07-30 13:57:01 -07:00
Michael Wright d614ee4557 Added bitwise-or and bitwise-and to BitSet
Change-Id: I9bbf41f9d2d4a2593b0e6d7d8be7e283f985bade
2013-07-30 13:57:01 -07:00
Tim Murray 214c701ec6 Make trace macros slightly more robust
Change-Id: I9544eb7b27fc1a971cabadd8d5b4b4b80678febf
2013-07-30 13:57:01 -07:00
Mathias Agopian 8db925f777 remove unused declarations and reformat
Change-Id: I4e168fb62c275e02621c4b6e0c6000d0f006c327
2013-07-30 13:57:01 -07:00
Mathias Agopian d3d3fceb7c remove reserved virtual slots
these consume small amount of space (plt) in every library that
links against libutils.

Change-Id: I1b6b3dd9098aa5a051243f7a5dbf91cd7dcb8b2c
2013-07-30 13:57:01 -07:00
Mathias Agopian 4485d0d966 new String8, String16 ctors to initialize empty static strings with static linkage
when libutils is statically linked, the ordering of the static
initializer is not guaranteed and therefore it's unsafe to use
empty static strings: e.g.:

static String8 sThisStaticStringIsNotSafe;

instead, this new constructor can be used:

static String8 sThisStaticStringIsSafe(kEmptyString);

Change-Id: Ia3daf1cab1c97d021c0ee9c2b394b5e27e8d6c0d
2013-07-30 13:57:01 -07:00
Mathias Agopian 9eb2a3b1c0 libutils clean-up
Change-Id: I6ff4cfc736751de2912c697f954e45e275f2d386
2013-07-30 13:57:01 -07:00
Dianne Hackborn 19159f9002 Add new Looper API to check whether the looper is idle.
This is just to support the watchdog to give it a faster
way to determine if a thread is deadlocked without having
to post a message to it.

Change-Id: I068dc8b9387caf94fe5811fb4aeb0f9b57b1a080
2013-07-30 13:57:01 -07:00
Mathias Agopian d34a8cad1e improved CallStack a bit
- added a ctor that updates and dumps the stack immediately
- added a "logtag" parameter to dump()

Change-Id: Ie51c256071d282591752243bdb4f68cf9ff8829d
2013-07-30 13:57:01 -07:00
Mathias Agopian 6cd548c715 Fix a crasher with RefBase debugging and vectors of wp<>
background:
we have some code to fix-up the IDs of references when
using RefBase's DEBUG_REFS when those refs are managed by
arrays wp<> or sp<> (this is because wp<> / sp<> don't have
a trivial ctor when DEBUG_REFS is enabled, and Vector
treats them as trivial for obvious performance reasons)

this is complicated by the fact that we don't want to have
to recompile everything when enabling DEBUG_REFs (i.e.: the
Vector code cannot know wheter it's enabled or not for its
template stuff).

problem:
there was a bug in the fix-up code for wp<> which was trying
to access the weakref_impl from the RefBase* however, this was
moronic since RefBase could have been destroyed if there wasn't
any more strong refs -- and this happned. Instead we need to get
the weakref_impl directly from the wp<>

Change-Id: Ie16e334204205fdbff142acb9faff8479a78450b
2013-07-30 13:57:01 -07:00
Jesse Hall b73559d86c Add Vector::resize()
Bug: 8384764
Change-Id: Icee83d389f3e555eba7d419b64c8d52a9aa21b8b
2013-07-30 13:57:01 -07:00
Romain Guy 31ba37f1c8 Add Thread::isRunning and Condition::signal(WakeUpType)
The signal() method is useful to choose whether to wake up one or
all threads.

Change-Id: I062ab6d3ddd306a9fb735549ea140e2a76eed75a
2013-07-30 13:57:01 -07:00
Mathias Agopian 6090df85a8 rename binder services main thread to Binder_*
When a binder service's main thread joins the thread pool
it retains its name (whatever the exec name was), which is
very confusing in systrace.

we now rename that thread just like its friends in the
thread pool.

Change-Id: Ibb3b6ff07304b247cfc6fb1694e72350c579513e
2013-07-30 13:57:01 -07:00
Naseer Ahmed ca3e2a276a utils: Allow non android namespaces to use ALOGD_IF_SLOW
Change-Id: I9207b64954fae2f56cc5f6aa5796a2e737400623
2013-07-30 13:57:00 -07:00
Chris Craik 551fcf4fe3 Add LinearAllocator
Moving from external/webkit/Source/WebCore/platform/graphics/android/utils/

Change-Id: If91830aa9b207dbc8692b2ca7c4a0b76778addd5
2013-07-30 13:57:00 -07:00
Igor Murashkin a27c1e0839 utils: fix warnings for unused parameters
Change-Id: Ibfb755a30ba2923669060fe0aed019beecbe38a1
2013-07-30 13:57:00 -07:00
Alex Ray fcb349ff75 utils: clarify scoped tracing functionality
ScopedTrace objects were being used in place of ATRACE_NAME because of a
misunderstanding of it's function.  Cleared up documentation for usage.

Also explicitly use global namespace for sysprop callback.

Change-Id: I7c248b486b614ccdb841659ca0dcfc644fda670a
2013-07-30 13:57:00 -07:00
Alex Ray 5b2d36e38a utils: Use cutils tracing functionality.
Tracing functionality has moved to cutils.

Change-Id: Ie78ccc1d59dd5178f5058fbc3858a37f9adce552
2013-07-30 13:57:00 -07:00
Romain Guy 5ca402a4e2 Add LruCache::Iterator
Required by libhwui

Change-Id: I164b9a4a82d89d132da01a56535c0df084de86f7
2013-07-30 13:57:00 -07:00
Romain Guy bdce9baa88 Add another ifndef and a couple of methods to LruCache
The new methods on LruCache are needed by libhwui to manage
the cache of paths.

Change-Id: If54fa325c54e2b04e7fe5dfe6dad66066c40127c
2013-07-30 13:57:00 -07:00
Romain Guy b3176acd5f Add #ifndef to prevent multiple definitions
Change-Id: Ib861eee0f333fe29290437b7e67623622d8dabd0
2013-07-30 13:57:00 -07:00
Andy McFadden 45ad8f44d0 Reduce emulator logspam
The emulator doesn't support systrace, but we should point that out
at most once per process.

Bug 7436352

Change-Id: I06b2c1ea0df6c02c11cd2496423c337f8d7c62a1
2013-07-30 13:57:00 -07:00
Raph Levien b6ea175b6b Add an LRU cache plus hashing primitives
This patch adds a hashtable-based LRU cache. This should be
significantly higher performance than the GenerationCache it is intended
to replace. It is a large part of the fix for bug 7271109
TextLayoutCache low-level performance issues.

We added a new method to BasicHashtable to detect when rehashing is
needed, because the internal linked list pointers would get invalidated
by that rehashing.

Also, the hash_type specialized to pointers had a small flaw.

Change-Id: I950c2083f96519777b851dbe157100e0a334caec
2013-07-30 13:57:00 -07:00
Jason Simmons 61db1669f4 Ensure that Vector::erase() returns a valid iterator
Vector::erase may reallocate the Vector's storage while removing an element.
However, erase() calls begin() before calling removeItemsAt(), thus caching
a pointer the the Vector's old storage.  If the storage is reallocated,
the iterator returned by erase() will be based on the old storage pointer
and will thus be invalid.

Change-Id: I2450c55fd418e6b1c558a4ca7c024573abbaa098
2013-07-30 13:57:00 -07:00
Dave Burke d49555291a Revert "Revert "put back the unused virtuals in Vector<>""
This reverts commit 225c66a48cdc3acef21ee380dc134449749d3cb3

Change-Id: If31a04b81052cbc7dd7bf237c07107c33066d03d
2013-07-30 13:57:00 -07:00
Romain Guy 3fc49adfd2 Add runtime debugging capabilities to OpenGL
The shell property debug.egl.trace can now be set to:

0
  disables tracing
1
  logs all GL calls
error
  checks glGetError after every GL call, logs a stack trace on error
systrace
  logs each GL call to systrace

Change-Id: I34a2a2d4e19c373fd9eaa1b0cd93e67c87378996
2013-07-30 13:57:00 -07:00
Kenny Root b9fd6f9864 Add TEMP_FAILURE_RETRY to ZipUtils
Change-Id: I275c415f14eeffaf9a58d45f3ea014d766441ec3
2013-07-30 13:57:00 -07:00
Mathias Agopian e79aadd143 minor SharedBuffer clean-up
Change-Id: If38b7ce85806ae628c00f2c938de4e3f75142543
2013-07-30 13:57:00 -07:00
Mathias Agopian 919fa297fe Add a way to retrieve a Region as a SharedBuffer
Change-Id: Ia53cb905fbc88f899521658545f990fb9217b1e1
2013-07-30 13:57:00 -07:00
Mathias Agopian 11b9acf765 Revert "put back the unused virtuals in Vector<>"
This reverts commit 1648d4c13ba2eff3ea14cd87ee94028458a39f97.

Bug: 6977192

Change-Id: Idbb6b239aaed4fb1c054ce943f6ba06ede3492bb
2013-07-30 13:57:00 -07:00
Tareq A. Siraj cacf429b56 Fixed clang build error for libgui
Fixed the order of the statements in ANDROID_SINGLETON_STATIC_INSTANCE
macro so that the templated static member variable initialization
comes before the instantiation of the Singleton class. This
fixes the clang compile error.

Change-Id: Ic47d17e152b657f2dff3191ccc3770753fdf002b
Author: Tareq A. Siraj <tareq.a.siraj@intel.com>
Reviewed-by: Edwin Vane <edwin.vane@intel.com>
2013-07-30 13:57:00 -07:00
Mathias Agopian 8d0c1a0316 put back the unused virtuals in Vector<>
some binaries are using these private APIs and broke
(as they should!) with this change. Temporarily restore the
virtuals to work around this.

Bug: 6977550
Change-Id: I7c37f24b16e4d586b89205c493db5169cf87e024
2013-07-30 13:57:00 -07:00
Mathias Agopian 156eb98091 get rid of mirrorItemAt() which isn't used anywhere
Change-Id: Id6f2dbeed21cabc127d39538c0ff464077ada83f
2013-07-30 13:57:00 -07:00
Mathias Agopian 2497a1524d improve [un]marshalling of non-binder objects
this change introduces a new class LightFlattenable<> which is
a protocol to flatten simple objects that don't require
binders or file descriptors; the benefit of this protocol is that
it doesn't require the objects to have a virtual table and give us
a consitant way of doing this.

we also introduce an implementation of this protocol for
POD structures, LightFlattenablePod<>.

Parcel has been update to handle this protocol automatically.

Sensor, Rect, Point and Region now use this new protocol.

Change-Id: Icb3ce7fa1d785249eb666f39c2129f2fc143ea4a
2013-07-30 13:57:00 -07:00
Jeff Brown 6454f46166 Add a very simple helper function to log slow functions.
Change-Id: I2e2e072206d02b572a330dd25857c161b5b563bf
2013-07-30 13:57:00 -07:00
Mathias Agopian bdf73c7efc improve Vector<> safety checks
- make errors that will always cause a memory corruption always fatal
  (for eg: KeyedVector<>::editValue{For|At}() failure)
- make other errors fatal in debug mode, those that can be caught by
  the caller.
- fix typos

Change-Id: I65cc7d81035c37ce2906fc4500c50e5d5b5c49eb
2013-07-30 13:56:59 -07:00
Mathias Agopian 5363183d2a libutils cleanup: remove unused or seldom used code from misc.{cpp|h}
Change-Id: I72206f16619d81887e3b85603494563faab3b445
2013-07-30 13:56:59 -07:00
Mathias Agopian 67b5851491 We now have a real list of displays.
displays can be dynamically added or removed, and the
list is part of the SF's transaction.

Change-Id: I4186ea39f1317c0e7c044f869004017738968fab
2013-07-30 13:56:59 -07:00
Nick Pelly af1e7b7721 Add elapsedRealtimeNano(), and use CLOCK_BOOTTIME where possible.
Change-Id: I4231c8ca32663e6e2cb5b7c126d091f837373807
2013-07-30 13:56:59 -07:00
Mathias Agopian e6bee12f94 one more step towards multiple display support
- remove dependency on cached state in validateVisibility
- get rid of mVertices and mTransformedBounds
- get rid of validateVisibility
- get rid of unlockPageFlip
- handleTransaction now returns a dirty region
- computevisibileregion now uses window-manager space
2013-07-30 13:56:59 -07:00
Jeff Brown dd1b0378ce Support looper callbacks based on smart pointers.
Bug: 6559630
Change-Id: I5a667f219f431838638acefbc9fa6afa610971bd
2013-07-30 13:56:59 -07:00
Eino-Ville Talvala 970701fbd2 Add camera as an ATRACE tag
Change-Id: Ib4f22d593836c4b973d122efa114d359f1529914
2013-07-30 13:56:59 -07:00
Jeff Brown 5705e69825 Delete unused poll() code.
We don't need this code anymore and it is just in the way.

Bug: 6559630
Change-Id: I1dc9decf85d5ea1feab159c2985da6c20baffdd5
2013-07-30 13:56:59 -07:00
Jeff Brown 55195d745c Remove unused statistics code.
Bug: 6559630
Change-Id: Iacdf4bb4c1c125c09305cbd8cb443c7c80cfc010
2013-07-30 13:56:59 -07:00
Jamie Gennis 69fc3d4e1e libutils: add a tracing tag for video
Change-Id: Icbecc7184844e95ee81a558b0a54d5513d5cf59f
2013-07-30 13:56:59 -07:00
Dianne Hackborn c1309d74e8 Add callback hack to find out when to reload system properties.
Every IBinder object can accept a new transaction to tell it that
it might want to reload system properties, and in the process
anyone can register a callback to be executed when this happens.

Use this to reload the trace property.

This is very much ONLY for debugging.

Change-Id: I55c67c46f8f3fa9073bef0dfaab4577ed1d47eb4
2013-07-30 13:56:59 -07:00
Glenn Kasten 7e6e7e0a54 Add audio tag to systrace
Change-Id: I4a558c43e4ccd81a4ed94684c5fad6b3c486bd14
2013-07-30 13:56:59 -07:00
Andy Stadler 90dd9e188e Add System Tracing capability to Sync Manager
See also: Change-Id: Ia8bc01adbba345a568405b0ac8ade96e56b40cc1

Change-Id: I2678974cf85464fbc09072b06f647a0787e6e23f
2013-07-30 13:56:59 -07:00
Dianne Hackborn 265743abde Add traces for window manager and activity manager.
Change-Id: I6677ca64164f234efc7856ddd173ad6989b4f59e
2013-07-30 13:56:59 -07:00
Glenn Kasten 77ed15a31a Scheduling group cleanup
Remove C++ APIs androidSetThreadSchedulingGroup and
androidGetThreadSchedulingGroup, and the ANDROID_TGROUP_* constants.

Former callers of these should now use the C APIs set_sched_policy and
get_sched_policy, and the SP_* constants.

Note: debug.sys.noschedgroups is not supported by the C APIs,
this needs to be discussed.

Change-Id: I32bbfc539ef4090faf9ef0320380e8cca9eae07c
2013-07-30 13:56:59 -07:00
Jeff Brown 2c1627dc49 Support tokenizing arbitrary content.
Bug: 6110399
Change-Id: I37be63b68934fd451e6dffbf7d6079553619c0a3
2013-07-30 13:56:59 -07:00
Chris Craik 52d59e2c48 Add webview tracing bit
Change-Id: I82e54f5eeb2666a255e372fd3bfcc54c1b3d76a0
2013-07-30 13:56:59 -07:00
Colin Cross 3abdea92ef frameworks/native: move Zip* from libandroidfw to libutils
ZipUtils is needed by build/tools, move it from libandroidfw
(frameworks/base) to libutils (frameworks/native).

Change-Id: Ib8c41134ccdec6d6aa8d49860f8dddef49a24783
2013-07-30 13:56:59 -07:00
Kenny Root cd19987605 Add UniquePtr.h to frameworks/native
This is a copy of libcore's UniquePtr.h header which is used until we
get C++11 which has std::unique_ptr which is essentially the same.

Taken from libcore project at commit
3e6dd45baa0d7f9b4fa06f4ade76e088b59cc7bf

Change-Id: I7537b016f9eae33bfc4c57b24f86260909719ab8
2013-07-30 13:56:59 -07:00
Jeff Brown 27e6eaae87 Add a simple work queue abstraction.
Makes it easy to schedule a bunch of work to happen in parallel.

Change-Id: Id9c0e52fc8b6d78d2b9ed4c2ee47abce0a01775c
2013-07-30 13:56:59 -07:00
Jeff Brown 9a0a76df1e Add traits to common utils data structures.
Many of our basic data structures are trivially movable using
memcpy() even if they are not trivially constructable, destructable
or copyable.  It's worth taking advantage of this *ahem* trait.

Adding trivial_move_trait to String16 reduces appt running
time on frameworks/base/core/res by 40%!

Change-Id: I630a1a027e2d0ded96856e4ca042ea82906289fe
2013-07-30 13:56:59 -07:00
Jeff Brown 59322a36c6 Expose the set of enabled tags.
This is used by the Java trace wrappers to avoid JNI overhead
when trace tags are disabled.

Also added a new tag for the input subsystem and view hierarchy.

Change-Id: Ia04a507e42a37b1d3bbb19859e6c07a92f4fe9aa
2013-07-30 13:56:59 -07:00
Andreas Huber f03fd0a870 Instead of hardcoding OMX component names in our code, support
a config file instead.

Change-Id: I5835903ab9f1c4a22ccc605ca99ed966767adf57
2013-07-30 13:56:59 -07:00
Mathias Agopian 2bd99599bb split utils/threads.h into multiple headers
AndroidDefs.h - C/C++ enums and types
Mutex.h - Mutex class declaration
Condition.h - Condition class declaration
RWLock.h - RWLock class declaration
Thread.h - Thread class declaration
AndroidThreads.h - low-level thread creation functions
threads.h - includes all the above for backward source compatibility

Change-Id: Ia2f80c175333b59a41d1720985810bb2346e94cb
Note: implementations are still in Threads.cpp
2013-07-30 13:56:59 -07:00
Jamie Gennis 2ccfe1a060 libutils: add a system-wide tracing utility
This change adds some utility functionality for doing userland tracing
into the kernel trace log.

Change-Id: Id0a8cee9ea515b1d8765afd1cecf472a88b4b9e8
2013-07-30 13:56:59 -07:00
Al Sutton 6c865b58aa Xcode 4.3 compatibility checkin
The update compiler in Xcode 4.3 (and 4.4) requires lookups into dependant
bases of class templates to be qualified. This checkin fixes the issues
raised by the compiler by implementing the this-> recommendation from
the llvm page at http://clang.llvm.org/compatibility.html#dep_lookup_bases

Signed-off-by: Al Sutton <al@funkyandroid.com>
2013-07-30 13:56:59 -07:00
Mathias Agopian c2b7fb1f91 frameworks/base refactoring.
step 2: move libutils headers to their new home: androidfw

Change-Id: I14624ba23db92a81f2cb929f104386e1fab293ef
2013-07-30 13:56:59 -07:00
Glenn Kasten 73e263e5d6 Update comments
We no longer put the filename at start of file.

Change-Id: Ic435b159a23105681e3d4a6cb1ac097bc853302e
2013-07-30 13:56:58 -07:00
Ramanan Rajeswaran 5db7269c89 DO NOT MERGE
Revert "Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc."

This reverts commit c1496d2d9a496e4aba817a58ecb9e07fe55cdba5.

Change-Id: If60df742b19c925cc99b20d01108b84415b124ad
2013-07-30 13:56:58 -07:00
Dianne Hackborn 413022bc90 Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc.
Change-Id: I519d6cdc527a402d93b98df17a64fc1da52ad598
2013-07-30 13:56:58 -07:00
Ramanan Rajeswaran 81beedda90 DO NOT MERGE
Revert "Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc."

This reverts commit c1496d2d9a496e4aba817a58ecb9e07fe55cdba5.

Change-Id: If60df742b19c925cc99b20d01108b84415b124ad
2013-07-30 13:56:58 -07:00
Dianne Hackborn 78eb46c8e8 aapt now sorts the strings in the resource string pool.
In our current environment with very many translations, this can
save a lot of RAM -- for example over 200K in Gmail just by sorting
the strings in the Gmail .apk (not the framework).

Also add a new aapt command to print the contents of the resource
table string pool.

Change-Id: I1da037b3e2c377b890833ff57ab158965314ac48
2013-07-30 13:56:58 -07:00
Dianne Hackborn e956c5c197 Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc.
Change-Id: I519d6cdc527a402d93b98df17a64fc1da52ad598
2013-07-30 13:56:58 -07:00
Glenn Kasten d731f07cc9 Thread::getTid returns pid_t gettid() after run
This is needed when the parent or any other thread besides the child
needs access to the child's kernel tid.

Change-Id: Ib148505913eb78314cfd76657c30d7b20663dffd
2013-07-30 13:56:58 -07:00
Evgeniy Stepanov 4cc144c4fb Fix compilation with Clang.
warning: extraneous template parameter list in template specialization
template<>

Change-Id: If3e3e1d06a018343b40ac0984dfd9ecc12629f8d
2013-07-30 13:56:58 -07:00
Steve Block 1b781ab0e0 Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
2013-07-30 13:56:58 -07:00
Steve Block a1d3391b1e Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/156801

Bug: 5449033
Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
2013-07-30 13:56:58 -07:00
Joe Onorato 53ddace1a5 Add a new ui mode for "appliance"
The idea is that this is a device which is more-or-less headless.  It
might have some limited interaction capabilities, but it's not something
that you want to rely on having.

Change-Id: Ib92f53a120bf83de781728011721a4859def7d9f
2013-07-30 13:56:58 -07:00
Romain Guy 587042dfa3 GenerationCache::get would return a random value instead of NULL
Bug #5401917

This was causing a ton of random crashes in apps.

Change-Id: I9069a060824ec89115cd3bcd38beaeb9ecc4488e
2013-07-30 13:56:58 -07:00
Jeff Brown 142dbcd817 Use sized integer typedefs in hash_type specializations.
Change-Id: I3f9e004db2f3be1cb43a885c3ae142f251fd6845
2013-07-30 13:56:58 -07:00
Jeff Brown e735f23018 Add a basic hashtable data structure, with tests!
The basic hashtable is intended to be used to support a variety
of different datastructures such as map, set, multimap,
multiset, linkedmap, generationcache, etc.

Consequently its interface is fairly primitive.

The basic hashtable supports copy-on-write style functionality
using SharedBuffer.

The change introduces a simple generic function in TypeHelpers for
specifying hash functions.  The idea is to add template
specializations of hash_type<T> next to the relevant data structures
such as String8, String16, sp<T>, etc.

Change-Id: I2c479229e9d4527b4fbfe3b8b04776a2fd32c973
2013-07-30 13:56:58 -07:00
Jeff Brown f36821289c Clean up GenerationCache.
Use const references to keys and values where appropriate to avoid
copying them unnecessarily.

Deleted some dead code.

Simplified a few pieces that were doing unnecessary redundant work.

Change-Id: Ib2145b7094a40db2d679e05dafe050fe1e87b846
2013-07-30 13:56:58 -07:00
Jamie Gennis 7451bb4410 BlobCache: implement cache serialization
This change adds serialization and deserialization functionality to
BlobCache, conforming to the Flattenable interface.

Change-Id: Ibc99cb1c3d015f363d57d0713eabccec07ff975e
2013-07-30 13:56:58 -07:00
Jamie Gennis 90f43dce84 BlobCache: remove the mutex locking
This change removes the mutex from the BlobCache class.  The caller must
be responsible for thread synchronization in order to properly implement
the Flattenable interface, which is coming soon.  Otherwise would be the
potential for the cache contents to change between the call to the
getFlattenedSize and flatten methods.  Because the caller must do this
synchronization anyway there's no reason to also some synchronization
inside BlobCache.

Change-Id: Ie1f4f6f82b78744f46a41ce863cac0cad276a20e
2013-07-30 13:56:58 -07:00
Jeff Brown ea45b01f9b Use libcorkscrew for stack unwinding.
Change-Id: Iee1ee5a2018ab8cfc1ce12ec2a124809245eaa02
2013-07-30 13:56:58 -07:00
Romain Guy 5cd324794c Reduce the size of libhwui by 50%
This change removes unnessary symbols. All symbols are hidden by
default, public APIs with exported symbols are explicitly marked
with ANDROID_API.

Change-Id: I692fde432a86c12108de1cfd1f6504919a7d5f3f
2013-07-30 13:56:58 -07:00
Jeff Brown aa983c91ca Fix regression in CursorWindow.copyStingToBuffer.
Bug: 5332296

Change-Id: Iff9eed786f0a8293b6156f883a66a322ddad5e99
2013-07-30 13:56:58 -07:00
Dianne Hackborn 6c31a2fb60 Add mechanism for Parcel to not allow FDs to be written to it.
This is to help implement issue #5224703.

Change-Id: I026a5890495537d15b57fe61227a640aac806d46
2013-07-30 13:56:58 -07:00
Andreas Huber 8ddbed9efd A new API "androidGetThreadPriority"
Change-Id: I6baeead8c70460863343fd557250635fb1e6a170
2013-07-30 13:56:58 -07:00
Josiah Gaskin 9ee3fc4dc3 Fix String16 operator+ to actually work
This change fixes the String16 utility's operator+ function.

Change-Id: Ibed7b07277b50bf178febc72b6ce497893e66f17
2013-07-30 13:56:57 -07:00
Mathias Agopian ad09965050 fix a memory leak and memory corruption in RefBase
we would leak a weakref_impl if a RefBase was never incWeak()'ed.
there was also a dangling pointer that would cause memory corruption
and double-delete when a custom destroyer was used to delay the
execution of ~RefBase.

it turns out that the custom destroyer feature caused most of the
problems, so it's now gone. The only client was SurfaceFlinger
who now handles things on its own.

RefBase is essentially back its "gingerbread" state, but the
code was slightly cleaned-up.

Bug: 5151207, 5084978
Change-Id: Id6ef1d707f96d96366f75068f77b30e0ce2722a5
2013-07-30 13:56:57 -07:00
Mathias Agopian c3a5225d4e Fix typos and use new HAL_PRIORITY_URGENT_DISPLAY constant
Change-Id: I703f8a96dd0dfec427e74363ad95729bfefc95c7
2013-07-30 13:56:57 -07:00
Jeff Brown 4ccb2fc8e1 Refactor input reader to add stylus support.
Bug: 5064702

Introduced the concept of an InputListener to further decouple
the InputReader from the InputDispatcher.  The InputListener
exposes just the minimum interface that the InputReader needs
to communicate with the outside world.  The InputReader
passes arguments to the InputListener by reference, which makes
it easy to queue them up.

Consolidated all of the InputReader locks into one simple global
Mutex.  The reason this wasn't done before was due to potential
re-entrance in outbound calls to the InputDispatcher.  To fix this,
the InputReader now queues up all of the events it wants to send
using a QueuedInputListener, then flushes them outside of the
critical section after all of the event processing is finished.
Removing all of the InputMapper locks greatly simplifies the
implementation.

Added tests for new stylus features such as buttons, tool types,
and hovering.

Added some helpers to BitSet32 to handle common code patterns
like finding the first marked bit and clearing it.

Fixed a bug in VelocityTracker where the wrong pointer trace
could get cleared when handling ACTION_POINTER_DOWN.  Oops.

Changed PointerCoords so it no longer stores useless zero
axis values.  Removed editAxisValue because it is not very
useful when all zero value axes are absent and therefore
cannot be edited in place.

Added dispatch of stylus hover events.

Added support for distance and tool types.

Change-Id: I4cf14d134fcb1db7d10be5f2af7b37deef8f8468
2013-07-30 13:56:57 -07:00
Kenny Root 88761b2796 Move extract native libraries to JNI code
The built-in ZipFile class was quite a long time to find an unpack
libraries. Move everything to using the libutils ZipFileRO class that
goes quite a bit faster. Initial measurements are 6 times faster than
the Java code.

Also, read files off the disk and compare their CRC against the APK's
CRC to see if we need to write the new file to disk. This also cuts down
the bootup time by up to a second per APK that has native files.

Change-Id: Ic464a7969a17368fb6a6b81d026888c4136c7603
2013-07-30 13:56:57 -07:00
Jeff Brown 7e01e60e5e Remove unimplemented memory pool.
dlmalloc does such a great job that we don't need a pool anyways.

Change-Id: I105b28c4a5c491543959190c7c0a9de75a5b8052
2013-07-30 13:56:57 -07:00
Glenn Kasten 6fbe0a86a8 Add C++ thread API androidGetThreadSchedulingGroup
This API is intended for applications that need to read a thread's
scheduling group, while using the higher-level (C++) family of thread APIs.

Change-Id: I5e58017f74c3989b20b5b1cc2bc4483c95720520
2013-07-30 13:56:57 -07:00
Jeff Brown 82e14f6780 Workaround apps that make assumptions about pointer ids.
Modified the touch input mapper to assign pointer ids sequentially
starting from 0 instead of using the tracking id or slot index
supplied by the driver.  Applications should not depend on this
ordering but some do.  (sigh)

Bug: 4980884
Change-Id: I0dfeb3ac27c57a7102a13c960c760e2a02eb7669
2013-07-30 13:56:57 -07:00
Mathias Agopian 320a2b4103 SF transactions are now O(1) wrt IPC instead of O(N).
Change-Id: I57669852cbf6aabae244ea86940a08a5a27ffc43
2013-07-30 13:56:57 -07:00
Jason Simmons b86c8e4e55 Add a linear transform library to libutils
Change-Id: Icdec5a6bebd9d8f24b3f335f8ec8b09a5810a774
2013-07-30 13:56:57 -07:00
Glenn Kasten 6839e8e9ee Add Thread::join
This new API will be used by applications that previously used the
lower-level pthread APIs (including pthread_join).  Centralizing on the
Thread class instead of pthread will permit additional functionality to
be added later in only one location.

Change-Id: I8460169ac9c61ac9f85752405ed54c94651058d7
2013-07-30 13:56:57 -07:00
Glenn Kasten 5e0243f4d6 Thread ID zero for androidSetThreadSchedulingGroup
Already implemented by androidSetThreadPriority but not documented

Change-Id: I85302b17092952065f3f3a4214d8d8abdd465dbd
2013-07-30 13:56:57 -07:00
Mathias Agopian 7f57eac6a7 Revert "merge various SF fixes from gingerbread to honeycomb-mr2" (DO NOT MERGE)
Also revert all dependent changes:
This reverts commit 8e18668d14adf601cbe5973030c310ec23d88461.
This reverts commit 69b4587bfbb3e98f793959d9123340360fa233a2.
This reverts commit a9c9a4baf24700e8817d47d8ea8da1742caea0b5.
This reverts commit 2c0042b666a969091c931614f2fc0dce2f1cfac8.
This reverts commit f6c8206735e7e078461e5f2aef6e1a1446fdd075.
This reverts commit 24855c09173a6caaec7dcedd0c2d7ce15121d39b.

Change-Id: I33e699640f3f59e42fa03c99a9a1b7af0d27d4d8
2013-07-30 13:56:57 -07:00
Kenny Root 967ad860da Use rand() for MinGW
The version of MinGW we use doesn't have nrand48() which is really lame,
but we need to use libutils in the Windows SDK.

Change-Id: If854c03dbf02bc29e79f49e4539f08c2bf057517
2013-07-30 13:56:57 -07:00
Mathias Agopian 9c8fa9ed41 revert surfaceflinger leak fix as it uncovered a crasher on xoom (DO NOT MERGE)
This reverts commit 52a43990880b27808bcf562afcc4209d34728e6e.

Change-Id: I1856a48f863b051395b8091ddfd1e01292fa1b1e
2013-07-30 13:56:57 -07:00
Mathias Agopian 267ba69c2e Revert "revert surfaceflinger leak fix as it uncovered a crasher on xoom"
This reverts commit af6edba59e250adbdfa5b3c3be134f70d8c38a16.

Change-Id: I7793d3ca8a4d20a2b188364f47854328ab5f586d
2013-07-30 13:56:57 -07:00
Mathias Agopian dace0b45d0 revert surfaceflinger leak fix as it uncovered a crasher on xoom
Bug: 4600244
Change-Id: Ia68ebf0f243a051ff6a21b3863e3e5d259bbf7ac
2013-07-30 13:56:57 -07:00
Mathias Agopian 0151ac8945 may fix build on some version of gcc
Change-Id: Ia88787c0432ec84d51fe505fd6a2b6f98ebe8f33
2013-07-30 13:56:57 -07:00
Mathias Agopian 9b6259aa57 fix RefBase so it retains binary-compatibility with gingerbread (DO NOT MERGE)
Bug: 4595257
Change-Id: I1db83149107d7dab1f0b7e73c684e0ff82e17e62
2013-07-30 13:56:57 -07:00
Glenn Kasten a538e268e6 Remove redundant memory barrier
pthread_create already includes the necessary memory barriers:
 - parent at pthread_create : pthread_mutex_unlock(start_mutex)
 - child at __thread_entry : pthread_mutex_lock(start_mutex)

Add lock around uses of mThread.

Added comments:
 - uses of mThread require lock
 - androidCreateRawThreadEtc returned ID is not safe for direct use from non-parent threads.

Change-Id: I18cb296b41ddaf64cf127b57aab31154319b5970
2013-07-30 13:56:57 -07:00
Dianne Hackborn bf7a884f22 Enforce public resource restriction on bag parents.
Need to put some more styles in the SDK to avoid breaking apps.

Also, welcome Android 3.2.

Change-Id: Ia31d07c9b1b91ad868d8630437fdc1b5ae24f37d
2013-07-30 13:56:56 -07:00
Dianne Hackborn 2d57c03872 Add "tv" density for 720p screens.
Change-Id: I028969b007f2fceea66947d77a2ae31ef1d1a630
2013-07-30 13:56:56 -07:00
Dianne Hackborn 4a8bf7977e Small fixes and cleanup of resource config handling.
Change-Id: I402c31b68f2b4825cb4c610a65ee8e1da471c7bb
2013-07-30 13:56:56 -07:00
Dianne Hackborn 19797e22ac Add "television" mode.
Change-Id: Ida1fdb61b036a8b489dbeda196fb4bc82e651b2b
2013-07-30 13:56:56 -07:00
Mathias Agopian d781137601 RefBase subclasses can now decide how they want to be destroyed.
This adds a destroy() virtual on RefBase which
sublasses can implement. destroy() is called
in lieu of the destructor whenthe last strong
ref goes away.
2013-07-30 13:56:56 -07:00
Dianne Hackborn 23138b63df Add new "-swNNNdp" resource qualifier.
Change-Id: I0101e88ca9d8d44138bdcaf571f24b0352f4f6ce
2013-07-30 13:56:56 -07:00
Jamie Gennis 1a20993c10 libutils: add a binary blob cache implementation.
This change adds an implementation of a cache that stores key/value
pairs of unstructured binary blobs.

Change-Id: Idd01fdabedfa3aed6d359a6efb0592967af52651
2013-07-30 13:56:56 -07:00
Christopher Tate 424ec5a8aa Full local backup infrastructure
This is the basic infrastructure for pulling a full(*) backup of the
device's data over an adb(**) connection to the local device.  The
basic process consists of these interacting pieces:

1. The framework's BackupManagerService, which coordinates the
   collection of app data and routing to the destination.

2. A new framework-provided BackupAgent implementation called
   FullBackupAgent, which is instantiated in the target applications'
   processes in turn, and knows how to emit a datastream that contains
   all of the app's saved data files.

3. A new shell-level program called "bu" that is used to bridge from
   adb to the framework's Backup Manager.

4. adb itself, which now knows how to use 'bu' to kick off a backup
   operation and pull the resulting data stream to the desktop host.

5. A system-provided application that verifies with the user that
   an attempted backup/restore operation is in fact expected and to
   be allowed.

The full agent implementation is not used during normal operation of
the delta-based app-customized remote backup process.  Instead it's
used during user-confirmed *full* backup of applications and all their
data to a local destination, e.g. via the adb connection.

The output format is 'tar'.  This makes it very easy for the end
user to examine the resulting dataset, e.g. for purpose of extracting
files for debug purposes; as well as making it easy to contemplate
adding things like a direct gzip stage to the data pipeline during
backup/restore.  It also makes it convenient to construct and maintain
synthetic backup datasets for testing purposes.

Within the tar format, certain artificial conventions are used.
All files are stored within top-level directories according to
their semantic origin:

apps/pkgname/a/  : Application .apk file itself
apps/pkgname/obb/: The application's associated .obb containers
apps/pkgname/f/  : The subtree rooted at the getFilesDir() location
apps/pkgname/db/ : The subtree rooted at the getDatabasePath() parent
apps/pkgname/sp/ : The subtree rooted at the getSharedPrefsFile() parent
apps/pkgname/r/  : Files stored relative to the root of the app's file tree
apps/pkgname/c/  : Reserved for the app's getCacheDir() tree; not stored.

For each package, the first entry in the tar stream is a file called
"_manifest", nominally rooted at apps/pkgname.  This file contains some
metadata about the package whose data is stored in the archive.

The contents of shared storage can optionally be included in the tar
stream. It is placed in the synthetic location:

shared/...

uid/gid are ignored; app uids are assigned at install time, and the
app's data is handled from within its own execution environment, so
will automatically have the app's correct uid.

Forward-locked .apk files are never backed up.  System-partition
.apk files are not backed up unless they have been overridden by a
post-factory upgrade, in which case the current .apk *is* backed up --
i.e. the .apk that matches the on-disk data.  The manifest preceding
each application's portion of the tar stream provides version numbers
and signature blocks for version checking, as well as an indication
of whether the restore logic should expect to install the .apk before
extracting the data.

System packages can designate their own full backup agents.  This is
to manage things like the settings provider which (a) cannot be shut
down on the fly in order to do a clean snapshot of their file trees,
and (b) manage data that is not only irrelevant but actively hostile
to non-identical devices -- CDMA telephony settings would seriously
mess up a GSM device if emplaced there blind, for example.

When a full backup or restore is initiated from adb, the system will
present a confirmation UI that the user must explicitly respond to
within a short [~ 30 seconds] timeout.  This is to avoid the
possibility of malicious desktop-side software secretly grabbing a copy
of all the user's data for nefarious purposes.

(*) The backup is not strictly a full mirror.  In particular, the
    settings database is not cloned; it is handled the same way that
    it is in cloud backup/restore.  This is because some settings
    are actively destructive if cloned onto a different (or
    especially a different-model) device: telephony settings and
    AndroidID are good examples of this.

(**) On the framework side it doesn't care that it's adb; it just
    sends the tar stream to a file descriptor.  This can easily be
    retargeted around whatever transport we might decide to use
    in the future.

KNOWN ISSUES:

* the security UI is desperately ugly; no proper designs have yet
  been done for it
* restore is not yet implemented
* shared storage backup is not yet implemented
* symlinks aren't yet handled, though some infrastructure for
  dealing with them has been put in place.

Change-Id: Ia8347611e23b398af36ea22c36dff0a276b1ce91
2013-07-30 13:56:56 -07:00
Mathias Agopian 58dc2c8101 fix typo in Vector<>:: push_back and push_front
parameter were inverted.

Change-Id: I867b01de5f58354bb9668fa662dd2a7d78dd3b37
2013-07-30 13:56:56 -07:00
Mathias Agopian bc55d727f3 Add some basic STL compatibility to Vector<>
Change-Id: Iaf72623170ee415372c7989d7ba9ff627167449e
2013-07-30 13:56:56 -07:00
Dianne Hackborn aa3a2c5613 Add new resource configurations for screen width/height in "dp".
You can now specify resource configuration variants "wNNNdp"
and "hNNNdp".  These are the minimum screen width/height in "dp"
units.  This allows you to do things like have your app adjust
its layout based only on the about of horizontal space available.

This introduces a new configuration change flag for screen size.
Note that this configuration change happens each time the orientation
changes.  Applications often say they handle the orientation change
to avoid being restarted at a screen rotation, and this will now
cause them to be restarted.  To address this, we assume the app can
handle this new config change if its target SDK version is < ICS.

Change-Id: I22f8afa136b4f274423978c570fa7c9855040496
2013-07-30 13:56:56 -07:00
Mårten Kongstad 3145b38462 Runtime resource overlay, iteration 1.
Runtime resource overlay allows unmodified applications to appear
as if they had been compiled with additional resources defined. See
libs/utils/README for more information.

This commit is the first iteration of runtime resource overlay. It
provides the actual overlay modifications and loading of trusted overlay
packages (ie residing in /vendor) targeting framework-res.apk.

This commit loads exactly one overlay package. The overlay,
if present, must target framework-res.apk and be located at
/vendor/overlay/framework/framework-res.apk.

Change-Id: If26ee7754813004a96c043dba37fbe99fa3919db
2013-07-30 13:56:56 -07:00
Jeff Brown 43550eee5b Refactor how timeouts are calculated.
Added a timeout mechanism to EventHub and InputReader so that
InputMappers can request timeouts to perform delayed processing of
input when needed.

Change-Id: Iec2045baaf4e67690b15eef3c09a58d5cac76897
2013-07-30 13:56:56 -07:00
Mathias Agopian 7c123375ff fix [4093196] Device lock up - log spam with SharedBufferStack: waitForCondition(LockCondition) timed out
a memory corruption happned when the buffer pool was resized
(like when playing a video or using camera) and there was
no current active buffer. In this case, the faulty code
would index into an array at position -1 which corrupted
24 bytes of data.

also improved region validation code (ifdef'ed out by default)

Bug: 4093196
Change-Id: I915c581d131148959d720e00e3892e9186ab733d
2013-07-30 13:56:56 -07:00
Romain Guy 349626eb76 Modify the GL renderer's functor to pass the clip to WebView
Change-Id: If5efe399ca58f3000b2883e24e9f3736a2025184
2013-07-30 13:56:56 -07:00
Jeff Brown 5e35370a3b Improve VelocityTracker numerical stability.
Replaced VelocityTracker with a faster and more accurate
native implementation.  This avoids the duplicate maintenance
overhead of having two implementations.

The new algorithm requires that the sample duration be at least
10ms in order to contribute to the velocity calculation.  This
ensures that the velocity is not severely overestimated when
samples arrive in bursts.

The new algorithm computes the exponentially weighted moving
average using weights based on the relative duration of successive
sample periods.

The new algorithm is also more careful about how it handles
individual pointers going down or up and their effects on the
collected movement traces.  The intent is to preserve the last
known velocity of pointers as they go up while also ensuring
that other motion samples do not count twice in that case.

Bug: 4086785
Change-Id: I2632321232c64d6b8faacdb929e33f60e64dcdd3
2013-07-30 13:56:56 -07:00
Glenn Kasten 29d4d20c24 Bug 4016329 do full string comparisons
Use full string comparisons instead of partial for
  file extension and MIME type.
Do case-insensitive comparison of MIME type and file extensions.
Fix error in comment for String8::getPathExtension.
Remove dead code -- StringTokenizer is unused.

Change-Id: I322be6235abbdaab5f7eafa48926dbb2cf46dc29
2013-07-30 13:56:56 -07:00
Jeff Brown 9ae794de46 Use touch pad gestures to manipulate the pointer.
1. Single finger tap performs a click.
2. Single finger movement moves the pointer (hovers).
3. Button press plus movement performs click or drag.
   While dragging, the pointer follows the finger that is moving
   fastest.  This is important if there are additional fingers
   down on the touch pad for the purpose of applying force
   to an integrated button underneath.
4. Two fingers near each other moving in the same direction
   are coalesced as a swipe gesture under the pointer.
5. Two or more fingers moving in arbitrary directions are
   transformed into touches in the vicinity of the pointer.
   This makes scale/zoom and rotate gestures possible.

Added a native VelocityTracker implementation to enable intelligent
switching of the active pointer during drags.

Change-Id: I5ada57e7f2bdb9b0a791843eb354a8c706b365dc
2013-07-30 13:56:56 -07:00
Romain Guy b6e92ae9a1 Add support for partial invalidates in WebView
Bug #3461349

This change also fixes two bugs that prevented partial invalidates
from working with other views. Both bugs were in our EGL implementation:
they were preventing the caller from comparing the current context/surface
with another context/surface. This was causing HardwareRenderer to always
redraw the entire screen.

Change-Id: I33e096b304d4a0b7e6c8f92930f71d2ece9bebf5
2013-07-30 13:56:56 -07:00
Jeff Brown 3e2e38bc5b Fade out the mouse pointer after inactivity or other events.
Fades out the mouse pointer:
- after 15 seconds of inactivity normally
- after 3 seconds of inactivity in lights out mode
- after a non-modifier key down
- after a touch down

Extended the native Looper to support enqueuing time delayed
messages.  This is used by the PointerController to control
pointer fade timing.

Change-Id: I87792fea7dbe2d9376c78cf354fe3189a484d9da
2013-07-30 13:56:56 -07:00
Fabrice Di Meglio 5a14f4a721 Add TextLayout Cache
- use GenerationCache for caching
- move GenerationCache.h from libs/hwui/utils to include/utils
- add #define for cache activation / deactivation

Change-Id: Ifaf519f0b5e33b087a453e4aa6430162d8438f20
2013-07-30 13:56:56 -07:00
Mathias Agopian 7332f80db5 Fix sp<> conversion operator / constructor
some of the conversion operators were not using the proper
pointer type when calling incStrong/decStrong, usually it
has no bad consequences, but for some implementation
of the ref-counted object it could lead to recording the wrong
owner id.

Change-Id: If574b9069b8a4cf6e0911a992c8f095aba799995
2013-07-30 13:56:56 -07:00
Mathias Agopian 3e0f87541f Fix a wp<> bug where the owner ID would be wrong
this was introduced recently. we make sure to use
the correct owner id (the sp) instead of the wp.

Change-Id: I78fdc6ec0c2d3e687278b70442d74d1924b512a2
2013-07-30 13:56:56 -07:00
Mathias Agopian b26ea8b30f Fix some issues with RefBase debugging.
First slipt sp<> out of RefBase into StrongPointer.h so it can be reused
more easily and to make it clear that it doesn't require RefBase.

Note: the rest of the change only affects the system when DEBUG_REFS is enabled.

The main problem we fix here is that the owner id associated with each
reference could get out of date when a sp<> or wp<> was moved, for
instance when they're used in a Vector< >.

We fix this issue by calling into RefBase::moveReferences from
a template specialization for sp<TYPE> and wp<TYPE> of the
type helpers. RefBase::moveReferences() has then a chance to
update the owner ids.

There is a little bit of trickery to implement this generically in
RefBase, where we need to use a templatized functor that can turn
a sp<TYPE>* casted to a void* into a RefBase*.

Introduced a new debug option DEBUG_REFS_FATAL_SANITY_CHECKS
currently set to 0 by default as there seem to be an issue
with sp<ANativeWindow> which trips the sanity checks.

Change-Id: I4825b21c8ec47d4a0ef35d760760ae0c9cdfbd7f
2013-07-30 13:56:56 -07:00
Glenn Kasten 966a48f3e7 Bug 3362814 Fix SMP race in access to mRequestExit
Also fix an unlikely SMP race in access to mHoldSelf on entry to _threadLoop.

Change-Id: I6cbc0b94739c7dd5e77e8a5ba0da22cdc0b1a4db
2013-07-30 13:56:55 -07:00
Mathias Agopian 84a23fa4a9 Remove RefBase.h dependency on TextOutput.h
Change-Id: I72cd6b98ef82b4868fe1c8ec87862cf43fb4ee73
2013-07-30 13:56:55 -07:00
Mathias Agopian ff49de731f fix [3408713] Dialog window invisible sometimes
weak pointer comparison operators were implemented wrong,
they were using the internal "unsafe" pointer. We could end up
with two "equal" weak pointer pointing to different objects.

this caused KeyedVector keyed by weak pointer to work incorrectly, in
turn causing a window that just got added to a list to be immediately
removed.

Change-Id: Ib191010c39aafa9229109e4211f6c3b2b2f9696d
2013-07-30 13:56:55 -07:00
Chet Haase b90c51a725 Use optimized display lists for all hwaccelerated rendering
Previously, display lists were used only if hardware acceleration
was enabled for an application (hardwareAccelerated=true) *and* if
setDrawingCacheEnabled(true) was called. This change makes the framework
use display lists for all views in an application if hardware acceleration
is enabled.

In addition, display list renderering has been optimized so that
any view's recreation of its own display list (which is necessary whenever
the visuals of that view change) will not cause any other display list
in its parent hierarchy to change. Instead, when there are any visual
changes in the hierarchy, only those views which need to have new
display list content will recreate their display lists.

This optimization works by caching display list references in each
parent display list (so the container of some child will refer to its
child's display list by a reference to the child's display list). Then when
a view needs to recreate its display list, it will do so inside the same
display list object. This will cause the content to get refreshed, but not
the reference to that content. Then when the view hierarchy is redrawn,
it will automatically pick up the new content from the old reference.

This optimization will not necessarily improve performance when applications
need to update the entire view hierarchy or redraw the entire screen, but it does
show significant improvements when redrawing only a portion of the screen,
especially when the regions that are not refreshed are complex and time-
consuming to redraw.

Change-Id: I68d21cac6a224a05703070ec85253220cb001eb4
2013-07-30 13:56:55 -07:00
Shachar Shemesh b69f49bab9 Normalize output from aapt d
Make the output from aapt dump --values resources and aapt dump xmltree normalized, so that it is unambigously displayed
regardless of the content of the strings.

Change-Id: Ia3bff36c4ee1e9a44f474534e154830948beabdf
2013-07-30 13:56:55 -07:00
Jeff Brown 8659f0be9a Add initial support for cursor-based pointing devices.
Some parts stubbed out but you can plug in a mouse and move
a green cursor around to interact with the UI.

Change-Id: I80d597a7f11d3bd92041890f74b3c77326975e6e
2013-07-30 13:56:55 -07:00
Mathias Agopian c974d4dbe0 dump callstack on Surface use error
Change-Id: I38e260dd47349b9af3a999dda683a083a94be16d
2013-07-30 13:56:55 -07:00
Kenny Root e2fa7dc58e Change assets to use 64-bit API
The asset system and supporting libraries were using off_t instead of
off64_t to access files larger than 2GB (32-bit signed). This change
replaces all off_t with off64_t and lseek64.

There is a new utils/Compat.h added for Mac OS compatibility.

Also fixed some size-related compiler warnings.

Bug: 3205336
Change-Id: I9097b3cb7a602e811fe52f245939d8975da55e9e
2013-07-30 13:56:55 -07:00
Jeff Brown 1d618d63c1 Improve support for external keyboards.
Use Vendor ID, Product ID and optionally the Version to
locate keymaps and configuration files for external devices.

Moved virtual key definition parsing to native code so that
EventHub can identify touch screens with virtual keys and load
the appropriate key layout file.

Cleaned up a lot of old code in EventHub.

Fixed a regression in ViewRoot's fallback event handling.

Fixed a minor bug in FileMap that caused it to try to munmap
or close invalid handled when released if the attempt to map
the file failed.

Added a couple of new String8 conveniences for formatting strings.

Modified Tokenizer to fall back to open+read when mmap fails since
we can't mmap sysfs files as needed to open the virtual key
definition files in /sys/board_properties/.

Change-Id: I6ca5e5f9547619fd082ddac47e87ce185da69ee6
2013-07-30 13:56:55 -07:00
Jeff Brown 04cbbc1c47 Support non-orientation aware keyboards and other devices.
Fixed a bug with dpad keys on external keyboards being rotated
according to the display orientation by adding a new input device
configuration property called "keyboard.orientationAware".

Added a mechanism for overriding the key layout and key character
map in the input device configuration file using the new
"keyboard.layout" and "keyboard.characterMap" properties.

Also added "trackball.orientationAware", "touch.orientationAware" and
"touch.deviceType" configuration properties.

Rewrote the configuration property reading code in native code
so that it can be used by EventHub and other components.

Added basic support for installable idc, kl, and kcm files
in /data/system/devices.  However, there is no provision for
copying files there yet.

Disabled long-press character pickers on full keyboards so that
key repeating works as expected.

Change-Id: I1bd9f0c3d344421db444e7d271eb09bc8bab4791
2013-07-30 13:56:55 -07:00
Jeff Brown d36ec3afda Fix SDK build on Windows due to use of mmap.
Change-Id: Id4bd9a6f932285c93c5853e540efc20b99876564
2013-07-30 13:56:55 -07:00
Jeff Brown 647925ddf0 Added support for full PC-style keyboards.
BREAKING CHANGE: Redesigned the key character map format to
accomodate full keyboards with more comprehensive suite of modifiers.
Old key character maps will not work anymore and must be updated.
The new format is plain text only and it not compiled to a binary
file (so the "kcm" tool will be removed in a subsequent check-in).

Added FULL keyboard type to support full PC-style keyboards.

Added SPECIAL_FUNCTION keyboard type to support special function
keypads that do not have any printable keys suitable for typing
and only have keys like HOME and POWER

Added a special VIRTUAL_KEYBOARD device id convention that maps
to a virtual keyboard with a fixed known layout.  This is designed
to work around issues injecting input events on devices whose
built-in keyboard does not have a useful key character map (ie.
when the built-in keyboard is a special function keyboard only.)

Modified several places where events were being synthesized
to use the virtual keyboard.

Removed support for the "qwerty" default layout.
The new default layout is "Generic".  For the most part "qwerty"
was being used as a backstop in case the built-in keyboard did
not have a key character map (probably because it was a special
function keypad) and the framework needed to be able to inject
key events anyways.  The latter issue is resolved by using the
special VIRTUAL_KEYBOARD device instead of BUILT_IN_KEYBOARD.

Added the concept of a key modifier behavior so that
MetaKeyKeyListener can distinguish between keyboards that use
chorded vs. toggled modifiers.

Wrote more robust key layout and key character map parsers
to enable support for new keyboard features and user installable
key maps.

Fixed a bug in InputReader generating key ups when keys
are released out of sequence.

Updated tons of documentation.

Currently QwertyKeyListener is being used for full keyboards
with autotext and capitalization disabled.  This mostly works
but causes some problems with character pickers, etc.
These issues will be resolved in subsequent changes.

Change-Id: Ica48f6097a551141c215bc0d2c6f7b3fb634d354
2013-07-30 13:56:55 -07:00
Kenny Root ba0165bef0 Split UTF functions from String8/16
Split out all the UTF-8/16/32 handling code from String8/16 to its own
file to allow better reuse of code.

Change-Id: If9ce63920edc75472c38da4adce0d13cda9ad2f7
2013-07-30 13:56:55 -07:00
Kenny Root 328f501eb9 Add path to get different DPI drawables
Allow a caller to request a different density than their current display
allows. This can mean a device displaying mdpi can get a resource that's
in hdpi and have it pretend to be in mdpi resolution. If a drawable
that's returned is not in the requested density, it will set it at the
appropriate density to be scaled up later on.

The API for this is hidden currently.

Bug: 3134688
Change-Id: I6c3908cbdef4907b8d3f1576df9e3b0e7af1755a
2013-07-30 13:56:55 -07:00
Brad Fitzpatrick 9d589aa0d6 Revert "Add length-equality test in String operator== checks."
This reverts commit e28210d401ae4ed1258b84c9b17a172a757190e8.
2013-07-30 13:56:55 -07:00
Brad Fitzpatrick 2881c85e38 Add length-equality test in String operator== checks.
Change-Id: I6ebc6ef85aac4539269f137c1f29f95b9828d4f9
2013-07-30 13:56:55 -07:00
Jeff Brown 48da31b735 Add keycodes and meta-key modifiers to support external keyboards.
Added new key maps for external keyboards.  These maps are intended to
be shared across devices by inheriting the "keyboards.mk" product
makefile as part of the device's product definition.

One of the trickier changes here was to unwind some code in
MetaKeyKeyListener that assumed that only the low 8 bits of the meta key
state were actually used.  The new code abandons bitshifts in favor
of simple conditionals that are probably easier to read anyways.
The special meta key state constants used by MetaKeyKeyListener
are now (@hide) defined in KeyEvent now so as to make it clearer that they
share the same code space even if those codes are not valid for KeyEvents.

The EventHub now takes care of detecting the appropriate key layout
map and key character map when the device is added and sets system
properties accordingly.  This avoids having duplicate code in
KeyCharacterMap to probe for the appropriate key character map
although the current probing mechanism has been preserved for legacy
reasons just in case.

Added support for tracking caps lock, num lock and scroll lock and
turning their corresponding LEDs on and off as needed.

The key character map format will need to be updated to correctly support
PC style external keyboard semantics related to modifier keys.
That will come in a later change so caps lock doesn't actually do
anything right now except turn the shiny LEDs on and off...

Added a list of symbolic key names to KeyEvent and improved the toString()
output for debug diagnosis.  Having this list in a central place in the
framework also allows us to remove it from Monkey so there is one less
thing to maintain when we add new keycodes.

Bug: 2912307
Change-Id: If8c25e8d50a7c29bbf5d663c94284f5f86de5da4
2013-07-30 13:56:55 -07:00
Kenny Root 60cbc84039 OBB: use PBKDF2 for key generation.
Switch to using PBKDF2 for the key generation for OBBs. Any previously
generated OBBs will stop being read correctly. A small pbkdf2gen program
is available to allow generation of appropriate keys with the salts.

Bug: 3059950
Change-Id: If4305c989fd692fd1150eb270dbf751e09c37295
2013-07-30 13:56:55 -07:00
Jeff Brown fcefac2682 Revert to using epoll_wait().
This change depends on the kernel having been patched to use hrtimers
instead of jiffies for scheduling epoll timeouts.

Change-Id: I216bc1c4f565e67ebcb3d2ba4280cb615932bb9e
2013-07-30 13:56:55 -07:00
Jeff Brown 8d15c74d50 Switch Looper back to using poll() instead of epoll().
Added a couple of micro-optimizations to avoid calling wake() unnecessarily
and reduce JNI overhead slightly.

Fixed a minor issue where we were not clearing the "next" field of Messages
returned by the MessageQueue so the Message would hold on to its successor
and potentially prevent the GC from collecting it if the message were leaked
somehow.

Change-Id: I488d29417ce0cdd7d0e447cda76ec978ef7f811c
2013-07-30 13:56:55 -07:00
Kenny Root bf2ad6dd13 Use pread() in ZipFileRO for Linux
AssetManager instances are created by zygote and passed to all its
children so that they don't have to individually open
frameworks-res.apk. This creates a problem for determining the current
file offset when using lseek() on those files, because you can't
guarantee the cross-process locking of a mutex. Luckily, Linux
implements pread() to get around this suckiness.

The problem is that only Linux implements this, so we have to keep the
old locking for use on host builds with aapt and friends. aapt doesn't
have this same problem of sharing file descriptors across forked
processes, so we can keep the local AutoMutex to protect accesses of
those files.

Change-Id: Ibe9f11499a53fe345f50fbaea438815ec0fd363e
2013-07-30 13:56:55 -07:00
Kenny Root a1ef2e0206 ZipFileRO: moar logging and wrap close
There is apparently still a race upon reading the entry Local File
Header that can't be tracked down, so move the LFH check inside the
mutex-protected block so we can call lseek again to see where we are
when we log an error.

Also, close() can fail so use TEMP_FAILURE_RETRY on it so we don't
unwittingly leak file descriptors when Mean Mr. EINTR comes a-knocking.

Change-Id: I753abad0bd882fe28f7281c406fa76f64393ef4c
2013-07-30 13:56:55 -07:00
Jeff Brown 7d90df8dc3 Add suuport for splitting touch events across windows.
This feature is currently used to enable dragging the start and end
selection handles of a TextView at the same time.  Could be used for
other things later.

Deleted some dead code in ArrowKeyMovementMethod and CursorControllers.

Change-Id: I930accd97ca1ca1917aab8a807db2c950fc7b409
2013-07-30 13:56:55 -07:00
Kenny Root f7c1be0e62 Add locking around ZIP seeking
Since we switched to seeking to the LFH to verify its existence instead
of a huge mmap of the file, we have to guarantee that another seek
doesn't happen before we finish our read on the LFH.

Change-Id: If8135d9cb6f2f5cc4db734eafa4f6b5f6269c62a
2013-07-30 13:56:55 -07:00
Jeff Brown d18051870e Looper: use pthread_once for TLS key initialization.
Also fix a Valgrind complaint by zeroing out the entire epoll event
struct since otherwise the data field union would be partly
uninitialized (but not in a harmful way).

Change-Id: I2091ce517e87fcad7c9caf90e2c5e4854a7ca465
2013-07-30 13:56:54 -07:00
Jeff Brown 905682a196 Looper: Drop default parameters in favor of a safer overload.
The idea is that if you're writing code that wants fd/events/data on
return from pollOnce() / pollAll() you should really pass in all of those
arguments.  When I changed the Looper API earlier, it was difficult
to ensure that all callers were passing the right parameters since they
were relying on default parameters to some degree so usage mistakes
would not have been caught by the compiler.

Change-Id: I1f2812894270aaf1515017ac1616b6b312d9b565
2013-07-30 13:56:54 -07:00
Jeff Brown 7901eb25c6 Replace epoll() with poll() and rename PollLoop to Looper.
As part of this change, consolidated and cleaned up the Looper API so
that there are fewer distinctions between the NDK and non-NDK declarations
(no need for two callback types, etc.).

Removed the dependence on specific constants from sys/poll.h such as
POLLIN.  Instead looper.h defines events like LOOPER_EVENT_INPUT for
the events that it supports.  That should help make any future
under-the-hood implementation changes easier.

Fixed a couple of compiler warnings along the way.

Change-Id: I449a7ec780bf061bdd325452f823673e2b39b6ae
2013-07-30 13:56:54 -07:00
Jeff Brown ac84a0a25d Input dispatcher ANR handling enhancements.
This change is essentially a rewrite of the main input dispatcher loop
with the target identification folded in.  Since the input dispatcher now
has all of the window state, it can make better decisions about
when to ANR.

Added a .5 second deadline for processing app switch keys.  This behavior
predates Gingerbread but had not previously been ported.

Fixed some timing inaccuracies in the ANR accounting that could cause
applications to ANR sooner than they should have.

Added a mechanism for tracking key and motion events that have been
dispatched to a window so that appropriate cancelation events can be
synthesized when recovering from ANR.  This change helps to keep
applications in sync so they don't end up with stuck buttons upon
recovery from ANRs.

Added more comments to describe the tricky parts of PollLoop.

Change-Id: I13dffca27acb436fc383980db536abc4d8b9e6f1
2013-07-30 13:56:54 -07:00
Romain Guy 4e30623bda Purge Skia objects from GL caches as needed.
Change-Id: I754c671cf790ad5ae8bf047ad328034217da4ecc
2013-07-30 13:56:54 -07:00
Dianne Hackborn aeaad5f5e9 Modify native ALooper to take an explicit ident.
The ALooper API now uses an explicit "identifier" for the integer
that is returned rather than implicitly using the fd.  This allows
the APIs that had the fd to be a little more sane.

Change-Id: I8507f535ad484c0bdc4a1bd016d87bb09acd7ff0
2013-07-30 13:56:54 -07:00
Kenny Root 6fab9b21ca Add OBB flags to support overlays
* Add flags field in OBB footer to support overlays.

* Remove unused 'crypto' and 'filesystem' fields in obbtool (could
  later be supported in the "flags" field of the OBB footer).

* Add notes to document OBB classes before shipping.

Change-Id: I386b43c32c5edef55210acb5d3322639c08010ba
2013-07-30 13:56:54 -07:00
Jeff Brown 38fb25b9d0 Add support for the PointerLocation overlay.
This change involves adding a new method to IWindowManager,
monitorInput() that returns an InputChannel to receive a copy of all
input that is dispatched to applications.  The caller must have
the READ_INPUT_STATE permission to make this request (similar to
other window manager methods such as getKeycodeState).

Change-Id: Icd14d810174a5b2928671ef16de73af88302aea0
2013-07-30 13:56:54 -07:00
Kenny Root 4e248ec5c6 Initial tool for OBB manipulation
Add "obbtool" host command for adding, removing, and querying Opaque
Binary Blob (OBB) information from a file.

Change-Id: Id2ac41e687ad2a500c362616d6738a8ae7e8f5c3
2013-07-30 13:56:54 -07:00
Dianne Hackborn 0537db078b More native work.
Implement save/restore of state, and add native APIs for
configuration information.

Change-Id: I2a3ddc2ba605db58d7c8b2b31b9215fb323f90b5
2013-07-30 13:56:54 -07:00
Kenny Root 23b4a0936f Fix String8::operator+
The LHS was ignored when using:
  String8 + String8
  String8 + (const char*)

Add unit tests for above.

Bug: 2898473
Change-Id: Ic8fe7be668b665c36aaaa3fc3c3ffdfff0fbba25
2013-07-30 13:56:54 -07:00
Christopher Tate c28f214f6c Support streaming of compressed assets > 1 megabyte
Compressed assets larger than one megabyte are now decompressed on demand
rather than being decompressed in their entirety and held in memory.  Reading
the data in order is relatively efficient, as is seeking forward in the stream.
Seeking backwards is supported, but requires reprocessing the compressed data
from the beginning, so is very inefficient.

In addition, the size limit on compressed assets has been eliminated.

Change-Id: I6e68247957e6c53e7e8ba70d12764695f1723bad
2013-07-30 13:56:54 -07:00
Jeff Brown 35a154e57f Fix bug with phantom input windows.
Add dumpsys integration for the native input dispatcher.
Add some InputDevice API stubs.
Add an appendFormat helper method to String8 for printf style
string formatting mainly for debugging purposes.
Use generic ArrayList<WindowState> everywhere in WindowManagerService
to eliminate unnecessary casts all over.

Change-Id: I9d1e3bd90eb7222d10620200477f11b7bfd25e44
2013-07-30 13:56:54 -07:00
Christopher Tate 9f43945b7c Add native C APIs for working with the Asset Manager
Change-Id: I493b142c4b35e5cc1a1e85283bb5dfb306a6d261
2013-07-30 13:56:54 -07:00
Dianne Hackborn 245708a1be Add new glue code for writing native apps.
This factors out the boiler-plate code from the sample
app to a common glue code that can be used for everyone
writing this style of app: a dedicated app thread that
takes care of waiting for events and processing them.

As part of doing this, ALooper has a new facility to allow
registration of fds that cause ALooper_pollOnce() to return
the fd that has data, allowing the app to drive the loop
without callbacks.  Hopefully this makes some people feel better. :)

Also do some other cleanup of the ALooper API, plus some
actual documentation.

Change-Id: Ic53bd56bdf627e3ba28a3c093faa06a92be522b8
2013-07-30 13:56:53 -07:00
Kenny Root 1d2aeb673f Add OBB file helper class
ObbFile is a binary blob that will be used in packaging large files
with smaller APKs.

Change-Id: Ib1594346cfa2f49113de6565af77c24efbd89d63
2013-07-30 13:56:53 -07:00
Dianne Hackborn 26fc52b1d4 Add new native Looper API.
This allows us to avoid exposing the file descriptor of
the event queue; instead, you attach an event queue to
a looper.  This will also should allow native apps to be
written without the need for a separate thread, by attaching
the event queue to the main thread's looper and scheduling
their own messages there.

Change-Id: I38489282635895ae2cbfacb88599c1b1cad9b239
2013-07-30 13:56:53 -07:00
Mathias Agopian 7b1516795e Fix a bug in sp<> and wp<> which could cause memory corruptions
when assigning a smart pointer to another one, we need to make
sure to read all the data we need from the right-hand-side
reference (the assignee) before we decRef the assigned.

This bug would cause linked-list of smart-pointers to fail
miserably.

Change-Id: Ibb554c15fddf909f7737c632b7c80322e80ea93f
2013-07-30 13:56:53 -07:00
Jeff Brown 9efaaa4359 Even more native input dispatch work in progress.
Added more tests.
Fixed a regression in Vector.
Fixed bugs in pointer tracking.
Fixed a starvation issue in PollLoop when setting or removing callbacks.
Fixed a couple of policy nits.

Modified the internal representation of MotionEvent to be more
efficient and more consistent.

Added code to skip/cancel virtual key processing when there are multiple
pointers down.  This helps to better disambiguate virtual key presses
from stray touches (such as cheek presses).

Change-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c
2013-07-30 13:56:53 -07:00
Jeff Brown 4d643d6fdb Fix include paths.
Change-Id: Ifda45688f9f02710a74d5d7a7d902bacf1441e2e
2013-07-30 13:56:53 -07:00
Jeff Brown 66db68948c Native input dispatch rewrite work in progress.
The old dispatch mechanism has been left in place and continues to
be used by default for now.  To enable native input dispatch,
edit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.

Includes part of the new input event NDK API.  Some details TBD.

To wire up input dispatch, as the ViewRoot adds a window to the
window session it receives an InputChannel object as an output
argument.  The InputChannel encapsulates the file descriptors for a
shared memory region and two pipe end-points.  The ViewRoot then
provides the InputChannel to the InputQueue.  Behind the
scenes, InputQueue simply attaches handlers to the native PollLoop object
that underlies the MessageQueue.  This way MessageQueue doesn't need
to know anything about input dispatch per-se, it just exposes (in native
code) a PollLoop that other components can use to monitor file descriptor
state changes.

There can be zero or more targets for any given input event.  Each
input target is specified by its input channel and some parameters
including flags, an X/Y coordinate offset, and the dispatch timeout.
An input target can request either synchronous dispatch (for foreground apps)
or asynchronous dispatch (fire-and-forget for wallpapers and "outside"
targets).  Currently, finding the appropriate input targets for an event
requires a call back into the WindowManagerServer from native code.
In the future this will be refactored to avoid most of these callbacks
except as required to handle pending focus transitions.

End-to-end event dispatch mostly works!

To do: event injection, rate limiting, ANRs, testing, optimization, etc.

Change-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25
2013-07-30 13:56:53 -07:00
Mathias Agopian 24ed9052bd Fix a typo in Singleton<>
it could cause the sLock field to be emitted several times
in different compilation unit. it also prevented to
have 2 Singleton<> in the same file.
2013-07-30 13:56:53 -07:00
Mathias Agopian 9b0be73f2a added RWLock C++ wrapper
Change-Id: Ia736bf7f6e2c49915a9ab5669551cf89dafa7961
2013-07-30 13:56:53 -07:00
Kenny Root c2b77d2fad ZipUtilsRO rewrite based on Dalvik Zip rewrite
Change the way zip archives are handled.  This is necessary to deal with
very large (~1GB) APK files, for which our current approach of mapping
the entire file falls over.

We now do the classic scavenger hunt for the End Of Central Directory
magic on a buffer of data read from the file, instead of a memory-mapped
section.  We use what we find to create a map that covers the Central
Directory only.

If the caller is interested in unpacking the file contents, we have to
do an additional file read to discover the size of the Local File Header
section so we can skip past it.

This is based on Change I745fb15abb in the dalvik tree. Both
implementations share a common ancestry, but the cost of unifying them
outweighs the benefits of wrapping C calls.

Change-Id: Iddacb50fe913917c2845708a530872d65fdbe620
2013-07-30 13:56:53 -07:00
Dianne Hackborn 88e4960025 New xlarge screen size.
Not complete, only for experimentation at this point.

This includes a reworking of how screen size configurations are matched,
so that if you are on a larger screen we can select configurations for
smaller screens if there aren't any exactly matching the current screen.

The screen size at which we switch to xlarge has been arbitrarily
chosen; the compatibility behavior has not yet been defined.

Change-Id: I1a33b3818eeb51a68fb72397568c39ab040a07f5
2013-07-30 13:56:53 -07:00
Mathias Agopian 68f6481820 libutils Condition are now PRIVATE by default
Condition must be initialized with SHARED for the old behavior, where
they can be used accross processes.

Updated the two places android that require SHARED conditions.

PRIVATE conditions (and mutexes) use more efficient syscalls.

Change-Id: I9a281a4b88206e92ac559c66554e886b9c62db3a
2013-07-30 13:56:53 -07:00
Dianne Hackborn 30a8e2e135 Add ability for some manifest attributes to reference resources.
This loosens our restriction on many manifest attributes requiring
literal string values, to allow various ones to use values from
resources.  This is only allowed if the resource value does not change
from configuration changes, and the restriction is still in place
for attributes that are core to security (requesting permissions) or
market operation (used libraries and features etc).

Change-Id: I4da02f6a5196cb6a7dbcff9ac25403904c42c2c8
2013-07-30 13:56:53 -07:00
Dianne Hackborn 70592f2c47 Refactor car mode.
Extract all UI behavior from dock observer and ACTION_DOCK_EVENT.

Also introduce a desk type to go along with the car type all through
the resource system, since we now need to have corresponding high-level
broadcasts for desk dock mode.  As part of that I also reworked some
of the logic for switching modes to all funnel through a single
update() call that looks all of the current state to decide what to
do next, and fixed various locking issues.

In addition I found there were bugs in the configuration change
handling causing us to only switch into the car mode config and
then never get out of it.  Unfortunately now that we are actually
changing the configuration for each mode change, the transitions
between them are really crummy as we restart all kinds of
activities. :(
2013-07-30 13:56:53 -07:00
Dianne Hackborn aeb43bd6df Fix issue #2448075: aapt doesn't fix up activity-alias android:targetActivity links
And related:

- The aapt tool now sets a resource configurations sdk level to match any configs
  that have been set (for example if you specify density your sdk level will be
  at least 4).
- New option to modify the targetPackage attribute of instrumentation.
- Clean up of aapt options help.
- Fix of UI type values to leave 0 for "unspecified".
- Make the UI mode config APIs public.
2013-07-30 13:56:52 -07:00
Kenny Root 60ed8d122a Use UTF-8 strings to avoid duplicate caching, part 1
StringBlock instances containing UTF-8 strings use a cache to convert
into UTF-16, but using that cache and then using a JNI call to NewString
causes the UTF-8 string as well as two copies of the UTF-16 string to
be held in memory. Getting the UTF-8 string directly from the StringPool
eliminates one copy of the UTF-16 string being held in memory.

This is part 1. Part 2 will include ResXMLParser optimizations.

Change-Id: Ibd4509a485db746d59cd4b9501f544877139276c
2013-07-30 13:56:52 -07:00
Mathias Agopian a580e68cc3 remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).
Add a Flattenable interface to libutils which can be used to flatten
an object into bytestream + filedescriptor stream.
Parcel is modified to handle Flattenable. And GraphicBuffer implements
Flattenable.

Except for the overlay classes libui is now independent of libbinder.
2013-07-30 13:56:52 -07:00
Kenny Root e81635474c Totally remove Unicode.cpp and rely on ICU
Unicode.cpp used a packed data table for character data that essentially
duplicated ICU's functionality.

Change-Id: Ia68fe4ac94e89dc68d9a3f45f33f6e648a5500b7
2013-07-30 13:56:52 -07:00
Kenny Root 861e14ff9f Excise code from Unicode.cpp that was dead
Remove some utility functions for discovering character data
that ICU probably took over a while ago.

Change-Id: I97abe4de2f51eb2bf48679941258bc501184c3dc
2013-07-30 13:56:52 -07:00
Tobias Haamel 4ef8aea3b5 Introduce special UI modes for night and car usage.
The device mode is now called ui mode. Furthermore is the order of
precedence for the resources now in such a way that the ui mode needs
to be specified after the orientation and before the density.

The ui mode can be set, like it is done for the locale, as follows:

IActivityManager am = ActivityManagerNative.getDefault();
Configuration config = am.getConfiguration();
config.uiMode = Configuration.UI_MODE_TYPE_CAR | Configuration.UI_MODE_NIGHT_ANY;
am.updateConfiguration(config);

To allow users to disable the car mode and set the night mode the IUiModeManager
interface is used.

The automatic night mode switching will be added in a separate change.
2013-07-30 13:56:52 -07:00
Kenny Root 1443fdf933 Add string resource type inspection
Allows "aapt dump --values resource" to print out whether a string in a
ResStringPool is in UTF-8 or UTF-16 encoding.

Change-Id: I6478884a70a3b46fee862dece6cb33454fc34843
2013-07-30 13:56:52 -07:00
Dianne Hackborn 235af97deb Propagate background scheduling class across processes.
This is a very simply implementation: upon receiving an IPC, if the handling
thread is at a background priority (the driver will have taken care of
propagating this from the calling thread), then stick it in to the background
scheduling group.  Plus an API to turn this off for the process, which is
used by the system process.

This also pulls some of the code for managing scheduling classes out of
the Process JNI wrappers and in to some convenience methods in thread.h.
2013-07-30 13:56:52 -07:00
Kenny Root 9a2d83e698 Optional use of UTF-8 strings in resource bundles
Allows the use of UTF-8 for packing resources instead of the
default of UTF-16 for Java. When strings are extracted from the
ResStringPool, they are converted to UTF-16 and the result is
cached for subsequent calls.

When using aapt to package, add in the "-8" switch to pack the
resources using UTF-8. This will result in the value, key, and
type strings as well as the compiled XML string values taking
significantly less space in the final application package in
most scenarios.

Change-Id: I129483f8b3d3b1c5869dced05cb525e494a6c83a
2013-07-30 13:56:52 -07:00
Dianne Hackborn 6b8297700b Fix issue #2226370: Resource versions match with equality
Also fixed turned-around increment of version number for resources. :(

Change-Id: I604137272da984bcd69cee4f174e6b7f2c786e46
2013-07-30 13:56:52 -07:00
Dianne Hackborn 7f4b32fd75 Implement issue #1780928: Need support hiding nav keys.
This implements support for devices whose hardware can hide
their navigation keys.  It works much like the existing keyboardHidden
configuration, and for compatibility uses the same configuration
change bit.

Also add FLAG_TURN_ON_SCREEN for windows, which has the system
cause the screen to be turned on when the window is displayed.
Great fun when used with FLAG_SHOW_WHEN_LOCKED!

Change-Id: I0b867f19af85cfd8786a14cea194b34f7bdd9b7a
2013-07-30 13:56:52 -07:00
San Mehat f4d57661be process: Switch to common cutils sched_policy api
Signed-off-by: San Mehat <san@google.com>
2013-07-30 13:56:52 -07:00
San Mehat 7089ab8b38 Process: Add support for using scheduler policies instead of cgroups.
Preference is given to cgroups if available.

Signed-off-by: San Mehat <san@google.com>
2013-07-30 13:56:52 -07:00
Mathias Agopian 51ce3ad760 use broadcast() instead of signal() when signaling the condition-variable Thread::RequestExitAndWait() is waiting for
we could have several thread waiting on the condition and they all need to wake-up.
also added a debug "mTid" field in the class, which contains the tid of the thread (as opposed to pthread_t), this
is useful when debugging under gdb for instance.
2013-07-30 13:56:52 -07:00
Mathias Agopian 641b630d2b fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly
Rewrote SurfaceFlinger's buffer management from the ground-up.
The design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.

The main new feature is to be able to dequeue all buffers at once (very important when there are only two).

A client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.

The current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.

eg. Allowed sequence:   DQ, DQ, LOCK, Q, LOCK, Q
eg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q
2013-07-30 13:56:52 -07:00
Andreas Huber 023a9546ad Support for marshalling pointers / intptr_t in Parcel.
Some refactoring to eliminate code duplication in Parcel implementation.
2013-07-30 13:56:52 -07:00
Dianne Hackborn 0042a806ce Fix issue #2048263: More debugging information
We now hopefully do better about generating the anr reports, and include
information about the malloc loaded assets in meminfo.
2013-07-30 13:56:52 -07:00
Dianne Hackborn ce87c24b3a Fix #2018814: System cannot correctly render assets with "wrap_content" attribute in QVGA
It turns out we were not returning the density for anything retrieved from a
TypedArray...  which basically means any bitmap references from a layout or style...!!!

This is now fixed.

Also fiddle with the density compatibility mode to turn on smoothing in certain situations,
helping the look of things when they need to scale and we couldn't do the scaling at
load time.
2013-07-30 13:56:51 -07:00
Dianne Hackborn af30c1b0ba First pass at reworking screen density/size APIs.
This changes the names of the directories in aapt, to what you see
in the list of DpiTest resources.  Also adds a new "long" configuration
for wide screens, which the platform sets appropriate, and introduces
a new kind of resizeability for not large but significantly larger
than normal screens which may have compatibility issues.
2013-07-30 13:56:51 -07:00
Dianne Hackborn 5fcc03f9b2 Add "nodpi" density, and expose a bunch of density-related APIs.
Also update the DpiTest app to use nodpi images, and try to have a mode
where it turns off compatibility though it's not quite working.
2013-07-30 13:56:51 -07:00
Mathias Agopian de6926bc94 add a ctor to Mutex to specify the type, which can be shared. This is used by sf and af an soon will allow some optimization in the kernel for non shared mutexes 2013-07-30 13:56:51 -07:00
Mathias Agopian 1555436473 implement Mutex and Condition with pthread instead of calling futex directly.
internally pthread uses futex. the implementation consists of simple inlines
there are no implementation files anymore.
2013-07-30 13:56:51 -07:00
Daisuke Miyakawa 44dad3e006 Add useful functions to String8, which enables users to convert between UTF-8 and UTF-32
It will be used in SQL functions in external/sqlite/android.
See https://android-git.corp.google.com/g/Gerrit#change,5511 for example.

Related internal bug id: 1707173
2013-07-30 13:56:51 -07:00
Andy McFadden 34ed82706a Fix sim build.
Looks like older gcc (4.1.x) doesn't properly handle templated
fanciness.  Apparently that's what we have on the build server.
2013-07-30 13:56:51 -07:00
Dianne Hackborn bd875d2638 Don't re-parse the framework resources all the time.
A small optimization to the resource code, to not re-parse the framework
resources every time we build a new AssetManager.  Instead, you can now
construct a ResTable from a previously created one...  of course, like the
existing code for using the data in-place, you can't delete the original
ResTable until you have deleted the one that has been constructed from it.
2013-07-30 13:56:51 -07:00
Dianne Hackborn cfd03822f0 Fix issue #1673793: Theme styles don't apply.
It turns out this was not a problem in the resource code at all.  Rather,
the system process has a cache of pre-loaded attributes it uses to avoid
continually reloading things as it needs them.  Well it turns out this
cache wasn't flushed after a package was uninstalled or a configuration
changed, so you could re-install an app where you change its style resources
so its theme now points to one that is inconsistent in the cache.

This is mostly a problem for developers, where they continually install
new versions of an app where resources have changed.  This could possibly
show up when updating an app on a normal phone, although the problem would
eventually correct itself since this cache uses weak references.

Anyway, the cache is now reworked to be flushed appropriately.

This change also includes an update to aapt to be able to dump the
contents of bags in resources.
2013-07-30 13:56:51 -07:00
Dianne Hackborn 8b72a9bb4e Expand support for different screen sizes.
Applications can now declare that they support small, normal, or
large screens.  Resource selection can also be done based on these
sizes.  By default, pre-Donut apps are false for small and large,
and Donut or later apps are assumed to support all sizes.  In either
case they can use <supports-screens> in their manifest to declare
what they actually support.
2013-07-30 13:56:51 -07:00
Mathias Agopian 35b4039b48 move ui/Time.cpp to core/jni, since this is the only place it is used 2013-07-30 13:56:51 -07:00
Christopher Tate 585d4f410e Only report "unknown metadata" once per restore helper
Also removes the auto-free object, replacing it with direct memory manipulation.
2013-07-30 13:56:51 -07:00
Christopher Tate 02abe53d8a Add file mode to the file-backup saved state blobs
This change puts the file's access mode into the saved-state blob used by the
file backup helpers.  The tests have been updated for the new blob content
format.

What this change *doesn't* do is actually backup/restore the file mode.  This
change is a prerequisite for that, but mode preservation in backup/restore will
require adding metadata to the backup data stream itself, so will be approached
a bit more carefully.

(Also fixed one outright bug in the test program: ReadEntityData() had been
changed to return a ssize_t union of either a byte-count or a negative number
indicating error, but the test program was still assuming that nonzero == error,
and was spuriously failing.)
2013-07-30 13:56:51 -07:00
Joe Onorato 109518880c Helper API cleanup. Allows multiple helpers to function,
because they'll always go in the same order, and this lets
us not have to write headers to keep them paired.
2013-07-30 13:56:50 -07:00
Mathias Agopian fe3b5edcf1 fix warnings that will show up with GCC 4.4 (in master) 2013-07-30 13:56:50 -07:00
Mathias Agopian a33bd1672f improve Vector<> with types that can be trivially moved and remove some unused code.
This optimization applies to sp<> and wp<> which should now perform about the same as regular pointers when placed in to Vector<>.
2013-07-30 13:56:50 -07:00
Dianne Hackborn 4538dd85da Report densities in badging, debugging for nine patch bug.
The aapt tool now reports all available densities like it already did
for locales.  Also this includes more resource data output, which I
was using to examine bug #1867049 (which at this point I am unable to
reproduce).
2013-07-30 13:56:50 -07:00
Joe Onorato aebb1ce05e backup stuff 2013-07-30 13:56:50 -07:00
Joe Onorato b90ae5522a Make RestoreHelper and friends also write out the snapshot state. 2013-07-30 13:56:50 -07:00
Joe Onorato f9f76ac291 FileRestoreHelper and RestoreHelperDispatcher work. 2013-07-30 13:56:50 -07:00
Joe Onorato 1781fd1ae7 checkpoint BackupDatAInput / RestoreHelper 2013-07-30 13:56:50 -07:00
Joe Onorato 9becbac780 Make the file backup helper not crash if a file you requested
can't be stated.  This means you don't need to know if the files
you are backing up exist or not -- we'll figure it out for you.
2013-07-30 13:56:50 -07:00
Joe Onorato 0d1d7ae49a Fix SharedPrefsBackupHelper so it doesn't hard code the paths to the files.
This took quite a bit of refactoring.
2013-07-30 13:56:50 -07:00
Mathias Agopian 14d978d02d get rid of LogSocket which wasn't even implemented (enabled) 2013-07-30 13:56:50 -07:00
Mathias Agopian 09e2b145ff break dependency on utils/ZipEntry.h and utils/ZipFile.h, get rid of inet_address.h and Socket.h which were not used 2013-07-30 13:56:50 -07:00
Mathias Agopian 254406e313 rename string_array.h to StringArray.h and move the implementation from the header file to a new cpp file.
StringArray is used in two places in framework/base and in the Sim. Ideally we should get rid of it and use Vector<String8> instead of creating new code.
2013-07-30 13:56:50 -07:00
Mathias Agopian ba6a87f916 cleanup Debug.h a bit 2013-07-30 13:56:50 -07:00
Mathias Agopian 7c88914df4 rename a few files to camel-case, add copyright notices 2013-07-30 13:56:50 -07:00
Mathias Agopian 9f2dc70fd1 move utils/Pipe.h to the simulator 2013-07-30 13:56:50 -07:00
Mathias Agopian 861db31eb9 get rid of TimerProbe which is never used 2013-07-30 13:56:50 -07:00