Compare commits

..

1292 Commits

Author SHA1 Message Date
Chad Brubaker
081db840be Allow overlap in resolv uid => DNS iface mapping
When multiple rules exist covering a given uid the one added most
recently will be used.

This allows us to handle the simultaneous tuns case where a new tun is
coming online for an already running VPN.

_resolv_clear_iface_for_uid_range now also takes the iface and removes
only that matching (iface, uid range) entry.

Bug: 12134439
Change-Id: I9b9cfcfae2f38c409022a8c76ccadad7e2babd78
2014-03-15 15:29:01 -07:00
Elliott Hughes
04583ce9b9 Upgrade to tzdata2014a.
From the release notes:

  Changes affecting near-future time stamps

    Turkey begins DST on 2014-03-31, not 03-30.  (Thanks to Faruk Pasin
    for the heads-up, and to Tim Parenti for simplifying the update.)

  Changes affecting past time stamps

    Fiji ended DST on 2014-01-19 at 02:00, not the previously-scheduled
    03:00.  (Thanks to Steffen Thorsen.)

    Ukraine switched from Moscow to Eastern European time on 1990-07-01
    (not 1992-01-01), and observed DST during the entire next winter.
    (Thanks to Vladimir in Moscow via Alois Treindl.)

    In 1988 Israel observed DST from 04-10 to 09-04, not 04-09 to
    09-03.  (Thanks to Avigdor Finkelstein.)

(cherry picked from commit 159b28eb46)

Bug: 13193205
Change-Id: I3d302039f7e057a97c9d307ce8d32efa056481ed
2014-03-10 15:23:02 -07:00
Robert Greenwalt
abf91850f9 Merge "Fix dns searchdomain use in gethostbyname." into klp-dev 2014-03-05 18:26:27 +00:00
Elliott Hughes
806f3bd7aa Upgrade to tzdata2013i.
From the release notes:

  Changes affecting near-future time stamps:

    Jordan switches back to standard time at 00:00 on December 20, 2013.
    The 2006-2011 transition schedule is planned to resume in 2014.
    (Thanks to Steffen Thorsen.)

  Changes affecting past time stamps:

    In 2004, Cuba began DST on March 28, not April 4.
    (Thanks to Steffen Thorsen.)

Bug: 13193205
Change-Id: I8f26cc50f6b571804a18ff2113b4a47a22bc56dd
2014-02-25 22:47:29 +00:00
Robert Greenwalt
5fddfb8915 Fix dns searchdomain use in gethostbyname.
Need to load search domain data before we attempt to use it.
This is a cherry pick of an AOSP change c11f6f0f39.

bug:6799630

Change-Id: I4ea1131f06ffdf4037fe67f82af5a0349469b609
2013-12-12 21:34:36 +00:00
Elliott Hughes
5ab8d33aa6 Upgrade to tzdata2013h.
From the release notes:

  Changes affecting current and future time stamps:

    Libya has switched its time zone back to UTC+2 without DST,
    instead of UTC+1 with DST.  (Thanks to Even Scharning.)

    Western Sahara (Africa/El_Aaiun) uses Morocco's DST rules.
    (Thanks to Gwillim Law.)

  Changes affecting future time stamps:

    Acre and (we guess) western Amazonas will switch from UTC-4 to UTC-5
    on 2013-11-10.  This affects America/Rio_Branco and America/Eirunepe.
    (Thanks to Steffen Thorsen.)

    Add entries for DST transitions in Morocco in the year 2038.
    This avoids some year-2038 glitches introduced in 2013g.
    (Thanks to Yoshito Umaoka for reporting the problem.)

(cherry picked from commit 3df3879bd6)

Change-Id: Ibdac6cc1db0fe24c62fe68e99d057dface6b6745
2013-10-31 13:41:31 -07:00
Ed Heyl
be662187aa merge in klp-release (no-op) 2013-10-16 17:34:49 -07:00
The Android Automerger
8e39d2f9f4 merge in klp-release history after reset to klp-dev 2013-10-15 21:13:52 -07:00
Christopher Ferris
fbefb252b0 Modify prefetch for krait memcpy.
I originally modified the krait mainloop prefetch from cacheline * 8 to * 2.
This causes a perf degradation for copies bigger than will fit in the cache.
Fixing this back to the original * 8. I tried other multiples, but * 8 is th
sweet spot on krait.

Bug: 11221806

(cherry picked from commit c3c58fb560)

Change-Id: I369f81d91ba97a3fcecac84ac57dec921b4758c8
2013-10-15 15:44:00 -07:00
Christopher Ferris
ac6bc31942 Remove new aligned memcpy path for cortex-a15.
For some reason the new cortex-a15 memcpy code from ARM is really bad
for really large copies. This change forces us to go down the old path
for all copies.

All of my benchmarks show the new version is faster for large copies, but
something is going on that I don't understand.

Bug: 10838353
Change-Id: I01c16d4a2575e76f4c69862c6f78fd9024eb3fb8
2013-10-15 14:54:02 -07:00
Ed Heyl
f87684eea1 merge in KQS81M 2013-10-08 15:35:17 -07:00
The Android Automerger
303f08b439 merge in klp-release history after reset to klp-dev 2013-10-08 06:00:18 -07:00
Elliott Hughes
3fce401590 Upgrade to tzdata2013g.
From the release notes:

  Changes affecting current and near-future time stamps

    Morocco now observes DST from the last Sunday in March to the last
    Sunday in October, not April to September respectively.  (Thanks
    to Steffen Thorsen.)

(cherry picked from commit 40f072192f)

Change-Id: I247f8cf4ef32ec5d6e6fe3845f9a8977b7e748b9
2013-10-06 19:59:14 -07:00
Elliott Hughes
e1fe52ccf1 Upgrade to tzdata2013f.
From the release notes:

  Changes affecting near-future time stamps

    Tocantins will very likely not observe DST starting this spring.
    (Thanks to Steffen Thorsen.)

    Jordan will likely stay at UTC+3 indefinitely, and will not fall
    back this fall.

    Palestine will fall back at 00:00, not 01:00.  (Thanks to Steffen Thorsen.)

(cherry picked from commit 4ced7ef05a)

Change-Id: Icd4754694fbe3b7c475a63666eeeab36c72908ac
2013-10-06 11:41:17 -07:00
Elliott Hughes
21f5927605 Upgrade to tzdata2013e.
From the release notes:

  Changes affecting near-future time stamps

    This year Fiji will start DST on October 27, not October 20.
    (Thanks to David Wheeler for the heads-up.)  For now, guess that
    Fiji will continue to spring forward the Sunday before the fourth
    Monday in October.

  Changes affecting time stamps before 1970

    Pacific/Johnston is now a link to Pacific/Honolulu.  This corrects
    some errors before 1947.

    Some zones have been turned into links, when they differ from
    existing zones only in older data that was likely invented or that
    differs only in LMT or transition from LMT.  These changes affect
    only time stamps before 1943.  The affected zones are:
    Africa/Juba, America/Anguilla, America/Aruba, America/Dominica,
    America/Grenada, America/Guadeloupe, America/Marigot,
    America/Montserrat, America/St_Barthelemy, America/St_Kitts,
    America/St_Lucia, America/St_Thomas, America/St_Vincent,
    America/Tortola, and Europe/Vaduz.  (Thanks to Alois Treindl for
    confirming that the old Europe/Vaduz zone was wrong and the new
    link is better for WWII-era times.)

    Change Kingston Mean Time from -5:07:12 to -5:07:11.  This affects
    America/Cayman, America/Jamaica and America/Grand_Turk time stamps
    from 1890 to 1912.

    Change the UT offset of Bern Mean Time from 0:29:44 to 0:29:46.
    This affects Europe/Zurich time stamps from 1853 to 1894.  (Thanks
    to Alois Treindl).

    Change the date of the circa-1850 Zurich transition from 1849-09-12
    to 1853-07-16, overriding Shanks with data from Messerli about
    postal and telegraph time in Switzerland.

  Data changes affecting behavior of tzselect and similar programs

    Country code BQ is now called the more-common name "Caribbean Netherlands"
    rather than the more-official "Bonaire, St Eustatius & Saba".

    Remove from zone.tab the names America/Montreal, America/Shiprock,
    and Antarctica/South_Pole, as they are equivalent to existing
    same-country-code zones for post-1970 time stamps.  The data for
    these names are unchanged, so the names continue to work as before.

(cherry picked from commit 35b123ef1e)

Change-Id: Ieb2627cc817db93280ceabe4034800bf36ca3f5f
2013-10-06 11:40:07 -07:00
The Android Automerger
33f6390064 merge in klp-release history after reset to klp-dev 2013-09-29 06:00:40 -07:00
Christopher Ferris
34c2a9fc37 Move stack unwinding test into library.
Bug: 8291716

(cherry picked from commit 8240bed918)

Change-Id: I1da2d0757ed304c352229f9818c052925d4e976a
2013-09-23 12:16:19 -07:00
Christopher Ferris
f4af911065 Create bionic unit test library for use with CTS.
Bug: 8291716

(cherry picked from commit 153d92765b)

Change-Id: Ia53b85b95621b7000034e4c6259d6586d0987dee
2013-09-23 12:16:01 -07:00
Christopher Ferris
7bfef355b1 Change hard-coded directory.
The tests are using /data/data which is not accessible to a non-root
user. Change this to /data/local/tmp which is accessible to all users.

Bug: 8291716

(cherry picked from commit 5227bb363d)

Change-Id: I83bf70aa8edd21b00321363d7ddcb65a5f048ba5
2013-09-23 12:12:58 -07:00
Christopher Ferris
6d1f85dcdc Change hard-coded temporary directory.
The properties tests creates a temporary directory in /data/nativetest,
but this directory might not exist in all circumstances.
Change this to create the temporary directory in /data/local/tmp.

(cherry picked from commit bd6dc6a886)

Change-Id: I15144ece7ffb5c29eded9a1ef399db630f6af5ab
2013-09-23 12:10:49 -07:00
Elliott Hughes
e0d1d4cf49 am 6ebc24fc: am d3f9e815: resolved conflicts for merge of 5d0ad38c to jb-mr2-dev
* commit '6ebc24fcc3cf07f1be936ef9d7a8c3afff1861c7':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 11:50:20 -07:00
Elliott Hughes
6ebc24fcc3 am d3f9e815: resolved conflicts for merge of 5d0ad38c to jb-mr2-dev
* commit 'd3f9e8155bfc17b2d67d2ffe5bc1d3a5e2656cd4':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 11:46:09 -07:00
Brian Carlstrom
7751d9158f Use kernel default for initial thread size
Bug: 10697851

Change-Id: I8d980f5e0b584799536f6e6b891056c968d26cdf
2013-09-13 11:16:50 -07:00
Elliott Hughes
d3f9e8155b resolved conflicts for merge of 5d0ad38c to jb-mr2-dev
Change-Id: I606f6d86aad46c5eda0dc0d907fe691ca0eea826
2013-09-13 11:16:11 -07:00
Elliott Hughes
5d0ad38c72 resolved conflicts for merge of ca2c6f75 to jb-mr1-dev-plus-aosp
Change-Id: If84f3c832a21ca1adf1a8009f50aa4a10f42a57e
2013-09-13 11:09:46 -07:00
Elliott Hughes
ca2c6f75a8 am 592c0708: am b30f6eb0: am 9e6104d5: resolved conflicts for merge of 05292dd6 to jb-mr1-dev
* commit '592c07084bf0d86b42e216002e5aaabf40023ea8':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 10:56:39 -07:00
Elliott Hughes
592c07084b am b30f6eb0: am 9e6104d5: resolved conflicts for merge of 05292dd6 to jb-mr1-dev
* commit 'b30f6eb026db05c969afacc758e529e73f0e314d':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 10:53:43 -07:00
Elliott Hughes
b30f6eb026 am 9e6104d5: resolved conflicts for merge of 05292dd6 to jb-mr1-dev
* commit '9e6104d54f541d43d3c1b785f2dfc1d2e09c0f2f':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 10:51:31 -07:00
Elliott Hughes
9e6104d54f resolved conflicts for merge of 05292dd6 to jb-mr1-dev
Change-Id: I051cad5dc3c985f11c52708f4487e64ea45ca617
2013-09-13 10:17:10 -07:00
Elliott Hughes
05292dd65b resolved conflicts for merge of cc7f0dc5 to jb-dev-plus-aosp
Change-Id: I812d0007ddd1576583a4749461b57ee33fb1eb15
2013-09-13 10:09:56 -07:00
Elliott Hughes
cc7f0dc5a1 Upgrade pre-jb-mr2 releases to tzdata2013d.
From the release notes:

  Changes affecting future time stamps:

    Morocco's midsummer transitions this year are July 7 and August 10,
    not July 9 and August 8.  (Thanks to Andrew Paprocki.)

    Israel now falls back on the last Sunday of October.
    (Thanks to Ephraim Silverberg.)

  Changes affecting past time stamps:

    Specify Jerusalem's location more precisely; this changes the pre-1880
    times by 2 s.

  Changing affecting metadata only:

    Fix typos in the entries for country codes BQ and SX.

Change-Id: I8caa139f0eecbe038643df43a27088278c6185cd
2013-09-13 09:43:15 -07:00
Brian Carlstrom
9a74e36f48 Use kernel default for initial thread size
Bug: 10697851

Change-Id: I8d980f5e0b584799536f6e6b891056c968d26cdf
2013-09-12 22:19:44 -07:00
The Android Automerger
25519f0fb0 merge in klp-release history after reset to klp-dev 2013-09-11 06:00:09 -07:00
Christopher Ferris
883ef2499c __memcpy_chk: Fix signed cmp of unsigned values.
I accidentally did a signed comparison of the size_t values passed in
for three of the _chk functions. Changing them to unsigned compares.

Add three new tests to verify this failure is fixed.

Bug: 10691831
Change-Id: Ia831071f7dffd5972a748d888dd506c7cc7ddba3
2013-09-10 17:34:03 -07:00
The Android Automerger
82a8fe37d7 merge in klp-release history after reset to klp-dev 2013-09-02 06:00:18 -07:00
Christopher Ferris
49c0d471a8 Merge "Fix all debug directives." into klp-dev 2013-08-29 21:21:20 +00:00
Christopher Ferris
05332f2ce7 Fix all debug directives.
The backtrace when a fortify check failed was not correct. This change
adds all of the necessary directives to get a correct backtrace.

Fix the strcmp directives and change all labels to local labels.

Testing:
- Verify that the runtime can decode the stack for __memcpy_chk, __memset_chk,
  __strcpy_chk, __strcat_chk fortify failures.
- Verify that gdb can decode the stack properly when hitting a fortify check.
- Verify that the runtime can decode the stack for a seg fault for all of the
  _chk functions and for memcpy/memset.
- Verify that gdb can decode the stack for a seg fault for all of the _chk
  functions and for memcpy/memset.
- Verify that the runtime can decode the stack for a seg fault for strcmp.
- Verify that gdb can decode the stack for a seg fault in strcmp.

Bug: 10342460
Bug: 10345269

Change-Id: I1dedadfee207dce4a285e17a21e8952bbc63786a
2013-08-28 15:42:05 -07:00
The Android Automerger
da4bedf52f merge in klp-release history after reset to klp-dev 2013-08-27 06:00:58 -07:00
Brian Carlstrom
6ab75bf41e Merge "Fix pthread_getcpuclockid." into klp-dev 2013-08-26 21:21:17 +00:00
Jeff Hao
e9e10c13ff Fix pthread_getcpuclockid.
clock_gettime was returning EINVAL for the values
produced by pthread_getcpuclockid.

Bug: 10346183

(cherry picked from commit 9b06cc3c1b)

Change-Id: Ib81a7024c218a4502f256c3002b9030e2aaa278d
2013-08-26 14:04:16 -07:00
The Android Automerger
8eca269b4b merge in klp-release history after reset to klp-dev 2013-08-26 06:00:41 -07:00
Robert Greenwalt
26ac803232 Merge "Change how DNS resolver handle no default iface" into klp-dev 2013-08-24 12:20:01 +00:00
Robert Greenwalt
d67662b9d6 Change how DNS resolver handle no default iface
We used to just try any iface we'd been told about as a
fallback, but that will end up mistakenly using a secondary
network's dns when we really don't have a default connection.

It also messed up our detection of whether we were doing the
lookup on the default or not (we'd get back our secondary net
iface as the default, do the compare and think we were on default).

Remove the lies and let dns fail if we don't have an iface for it.

bug:10132565

Conflicts:
	libc/netbsd/resolv/res_cache.c

Change-Id: I357a9c34dad83215f44c5e0dd41ce2a7d6fe8f3f
2013-08-23 11:48:26 -07:00
Elliott Hughes
345eb225ae Apply upstream commit 943a6621866e9d6e654f5cfe1494378c1fb8957a.
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Thu Aug 22 12:47:51 2013 -0700

    * localtime.c: Fix another integer overflow bug in mktime.

    (time2sub): Avoid undefined behavior on time_t overflow.
    Reported by Elliott Hughes in
    <http://mm.icann.org/pipermail/tz/2013-August/019580.html>.

Bug: 10310929

(cherry picked from commit 713fe6463e)

Change-Id: I9ec79fd8d825e6b9e8bb5af549dbfc2182346c05
2013-08-22 14:29:07 -07:00
Elliott Hughes
f0c10a4a16 Work around tzcode's reliance on signed overflow.
I've mailed the tz list about this, and will switch to whatever upstream
fix comes along as soon as it's available.

Bug: 10310929

(cherry picked from commit 7843d44a59)

Change-Id: I205e2440703444c50cecd91d3458d33613ddbc59
2013-08-22 12:23:47 -07:00
The Android Automerger
13ea69528e merge in klp-release history after reset to klp-dev 2013-08-22 06:00:33 -07:00
Brian Carlstrom
9ef1fbb644 Make mips_relocate_got tolerate a missing got
Bug: 10094803

(cherry picked from commit 7ee26878065abb494600595349ce58b2b2db3709)

Change-Id: I9fbb65d20011f2f625fde3b15ac8c6887dd03ae4
2013-08-21 10:20:53 -07:00
The Android Automerger
948fbefa2a merge in klp-release history after reset to klp-dev 2013-08-21 06:01:31 -07:00
Christopher Ferris
5f7ccea3ff Update all debug directives.
The libcorkscrew stack unwinder does not understand cfi directives,
so add .save directives so that it can function properly.

Also add the directives in to strcmp.S and fix a missing set of
directives in cortex-a9/memcpy_base.S.

Bug: 10345269

Change-Id: I043f493e0bb6c45bd3f4906fbe1d9f628815b015
2013-08-20 11:22:34 -07:00
The Android Automerger
de19a0c55d merge in klp-release history after reset to klp-dev 2013-08-14 06:04:54 -07:00
Christopher Ferris
f0c3d90913 Create optimized __strcpy_chk/__strcat_chk.
This change pulls the memcpy code out into a new file so that the
__strcpy_chk and __strcat_chk can use it with an include.

The new versions of the two chk functions uses assembly versions
of strlen and memcpy to implement this check. This allows near
parity with the assembly versions of strcpy/strcat. It also means that
as memcpy implementations get faster, so do the chk functions.

Other included changes:
- Change all of the assembly labels to local labels. The other labels
  confuse gdb and mess up backtracing.
- Add .cfi_startproc and .cfi_endproc directives so that gdb is not
  confused when falling through from one function to another.
- Change all functions to use cfi directives since they are more powerful.
- Move the memcpy_chk fail code outside of the memcpy function definition
  so that backtraces work properly.
- Preserve lr before the calls to __fortify_chk_fail so that the backtrace
  actually works.

Testing:

- Ran the bionic unit tests. Verified all error messages in logs are set
  correctly.
- Ran libc_test, replacing strcpy with __strcpy_chk and replacing
  strcat with __strcat_chk.
- Ran the debugger on nexus10, nexus4, and old nexus7. Verified that the
  backtrace is correct for all fortify check failures. Also verify that
  when falling through from __memcpy_chk to memcpy that the backtrace is
  still correct. Also verified the same for __memset_chk and bzero.
  Verified the two different paths in the cortex-a9 memset routine that
  save variables to the stack still show the backtrace properly.

Bug: 9293744
Change-Id: Id5aec8c3cb14101d91bd125eaf3770c9c8aa3f57
(cherry picked from commit 2be91915dc)
2013-08-14 07:46:00 +00:00
Elliott Hughes
3912f90e56 Make ctype.h a little less unhygienic.
This caused trouble for stlport.

(cherry picked from commit 5e9b20f721)

Change-Id: I85d09c12c6de1e8502f83e0ef0f17747fdfe08a5
2013-08-13 14:42:43 -07:00
Elliott Hughes
5951e84646 Fix our missing abs/labs/llabs/imaxabs (and imaxdiv) symbols.
(cherry picked from commit aec2ffbc5a)

Change-Id: Ib61b52dc37e63493094a0a7af23bf89d4a9f0ce5
2013-08-13 14:41:07 -07:00
The Android Automerger
f63a467cdd merge in klp-release history after reset to klp-dev 2013-08-12 06:00:44 -07:00
Elliott Hughes
9e9d1e016f resolved conflicts for merge of 86125aca to klp-dev
Change-Id: I78622ecbad27301b285193a085fa04374aa60033
2013-08-08 18:08:33 -07:00
Elliott Hughes
ceb670cfc0 Merge branch 'klp-dev' of https://googleplex-android.googlesource.com/_direct/platform/bionic into klp-dev 2013-08-08 17:53:31 -07:00
Christopher Ferris
1036cd7939 am 6beb3ea6: (-s ours) am d7d5049d: (-s ours) am 632fd518: (-s ours) Merge "Fix strcpy.c that should have been strcpy.S. DO NOT MERGE"
* commit '6beb3ea6a1a49baef001ddd8c6872631f5e90f82':
  Fix strcpy.c that should have been strcpy.S. DO NOT MERGE
2013-08-08 17:53:19 -07:00
Christopher Ferris
5ec2ab68f9 am 21b4ffa7: (-s ours) am 5427eb5c: (-s ours) am e2066293: (-s ours) Merge "Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE"
* commit '21b4ffa7372b029e5a4898b877feb843da2831e9':
  Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE
2013-08-08 17:53:18 -07:00
Elliott Hughes
840a114eb1 Add futimens.
(cherry picked from commit d0be7c8f9a)

Bug: 10239370
Change-Id: I0087e85a94d83b6ce68ec6a0768c44cbe4bd0132
2013-08-08 17:52:06 -07:00
Elliott Hughes
86125acacd am dce94165: am ee48fed5: Merge "Add futimens."
* commit 'dce94165a5624935db9855e208420d36c763f771':
  Add futimens.
2013-08-08 17:45:45 -07:00
Christopher Ferris
6beb3ea6a1 am d7d5049d: (-s ours) am 632fd518: (-s ours) Merge "Fix strcpy.c that should have been strcpy.S. DO NOT MERGE"
* commit 'd7d5049d58427e23318fa1920d63712676fc7725':
  Fix strcpy.c that should have been strcpy.S. DO NOT MERGE
2013-08-08 17:45:45 -07:00
Christopher Ferris
21b4ffa737 am 5427eb5c: (-s ours) am e2066293: (-s ours) Merge "Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE"
* commit '5427eb5c63417c7bc59bbfe112c97917dcef4e8c':
  Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE
2013-08-08 17:45:44 -07:00
Elliott Hughes
dce94165a5 am ee48fed5: Merge "Add futimens."
* commit 'ee48fed51894f3db324e957058ed2ddcf23dddc7':
  Add futimens.
2013-08-08 17:41:15 -07:00
Christopher Ferris
d7d5049d58 am 632fd518: (-s ours) Merge "Fix strcpy.c that should have been strcpy.S. DO NOT MERGE"
* commit '632fd5183a611b80e009be36f881f572acc41619':
  Fix strcpy.c that should have been strcpy.S. DO NOT MERGE
2013-08-08 17:41:15 -07:00
Christopher Ferris
5427eb5c63 am e2066293: (-s ours) Merge "Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE"
* commit 'e2066293e8279641d4abd13ec3fbdd6f42def83d':
  Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE
2013-08-08 17:41:14 -07:00
Elliott Hughes
ee48fed518 Merge "Add futimens." 2013-08-09 00:37:32 +00:00
Elliott Hughes
d0be7c8f9a Add futimens.
Bug: 10239370
Change-Id: I518340084103dc339ef8a065d4837d6258a1381d
2013-08-08 17:13:33 -07:00
Christopher Ferris
632fd5183a Merge "Fix strcpy.c that should have been strcpy.S. DO NOT MERGE" 2013-08-08 19:12:20 +00:00
Christopher Ferris
e2066293e8 Merge "Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE" 2013-08-08 19:12:00 +00:00
Christopher Ferris
b922ed3498 Fix strcpy.c that should have been strcpy.S. DO NOT MERGE
Merge from internal master.

(cherry-picked from 1ce6654163)

Change-Id: I376b831df42248baadde7202a30a68112f752ff7
2013-08-08 12:09:37 -07:00
Christopher Ferris
4e24dcc8d8 Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE
Create one version of strcat/strcpy/strlen for cortex-a15/krait and another
version for cortex-a9.

Tested with the libc_test strcat/strcpy/strlen tests.
Including new tests that verify that the src for strcat/strcpy do not
overread across page boundaries.

NOTE: The handling of unaligned strcpy (same code in strcat) could probably
be optimized further such that the src is read 64 bits at a time instead of
the partial reads occurring now.

strlen improves slightly since it was recently optimized.

Performance improvements for strcpy and strcat (using an empty dest string):

cortex-a9
- Small copies vary from about 5% to 20% as the size gets above 10 bytes.
- Copies >= 1024, about a 60% improvement.
- Unaligned copies, from about 40% improvement.

cortex-a15
- Most small copies exhibit a 100% improvement, a few copies only
  improve by 20%.
- Copies >= 1024, about 150% improvement.
- Unaligned copies, about 100% improvement.

krait
- Most small copies vary widely, but on average 20% improvement, then
  the performance gets better, hitting about a 100% improvement when
  copies 64 bytes of data.
- Copies >= 1024, about 100% improvement.
- When coping MBs of data, about 50% improvement.
- Unaligned copies, about 90% improvement.

As strcat destination strings get larger in size:

cortex-a9
- about 40% improvement for small dst strings (>= 32).
- about 250% improvement for dst strings >= 1024.

cortex-a15
- about 200% improvement for small dst strings (>=32).
- about 250% improvement for dst strings >= 1024.

krait
- about 25% improvement for small dst strings (>=32).
- about 100% improvement for dst strings >=1024.

Merge from internal master.

(cherry-picked from d119b7b6f4)

Change-Id: I296463b251ef9fab004ee4dded2793feca5b547a
2013-08-08 11:13:46 -07:00
The Android Automerger
b683cf117d merge in klp-release history after reset to klp-dev 2013-08-08 07:53:11 -07:00
Colin Cross
7f4074d17d bionic: name malloc'd regions
Use the new __bionic_name_mem function to name malloc'd memory as
"libc_malloc" on kernels that support it.

Change-Id: I7235eae6918fa107010039b9ab8b7cb362212272
2013-08-08 00:42:39 +00:00
Colin Cross
6771b9cef6 bionic: add function to name memory
Only works on some kernels, and only on page-aligned regions of
anonymous memory.  It will show up in /proc/pid/maps as
[anon:<name>] and in /proc/pid/smaps as Name: <name>

Change-Id: If31667cf45ff41cc2a79a140ff68707526def80e
2013-08-07 15:41:30 -07:00
Christopher Ferris
7c860db074 Optimize __memset_chk, __memcpy_chk.
This change creates assembler versions of __memcpy_chk/__memset_chk
that is implemented in the memcpy/memset assembler code. This change
avoids an extra call to memcpy/memset, instead allowing a simple fall
through to occur from the chk code into the body of the real
implementation.

Testing:

- Ran the libc_test on __memcpy_chk/__memset_chk on all nexus devices.
- Wrote a small test executable that has three calls to __memcpy_chk and
  three calls to __memset_chk. First call dest_len is length + 1. Second
  call dest_len is length. Third call dest_len is length - 1.
  Verified that the first two calls pass, and the third fails. Examined
  the logcat output on all nexus devices to verify that the fortify
  error message was sent properly.
- I benchmarked the new __memcpy_chk and __memset_chk on all systems. For
  __memcpy_chk and large copies, the savings is relatively small (about 1%).
  For small copies, the savings is large on cortex-a15/krait devices
  (between 5% to 30%).
  For cortex-a9 and small copies, the speed up is present, but relatively
  small (about 3% to 5%).
  For __memset_chk and large copies, the savings is also small (about 1%).
  However, all processors show larger speed-ups on small copies (about 30% to
  100%).

Bug: 9293744

Change-Id: I8926d59fe2673e36e8a27629e02a7b7059ebbc98
2013-08-06 15:38:29 -07:00
The Android Automerger
2b899b04e9 merge in klp-release history after reset to master 2013-08-06 08:16:59 -07:00
Christopher Ferris
1ce6654163 Fix strcpy.c that should have been strcpy.S.
Change-Id: Ib4609baad3a14c8b0f37556269781fa2b06916dc
2013-08-05 17:08:06 -07:00
Christopher Ferris
e1857431e8 Merge "Optimize strcat/strcpy, small tweaks to strlen." 2013-08-05 23:32:06 +00:00
Elliott Hughes
e66ffef900 am cd927519: Merge "Fix stdint.h intptr_t/uintptr_t for x86_64/x32"
* commit 'cd927519a94939f2ebc307544f827baade529bc9':
  Fix stdint.h intptr_t/uintptr_t for x86_64/x32
2013-08-05 15:51:54 -07:00
Elliott Hughes
28e0ec8d61 am a0473d77: Merge "syslog needs a valid socket path for _PATH_LOG"
* commit 'a0473d77b2d3a6f26e29cc8c2fdaeb2a4b3ab8f8':
  syslog needs a valid socket path for _PATH_LOG
2013-08-05 15:51:53 -07:00
Elliott Hughes
cd927519a9 Merge "Fix stdint.h intptr_t/uintptr_t for x86_64/x32" 2013-08-05 20:55:24 +00:00
Elliott Hughes
a0473d77b2 Merge "syslog needs a valid socket path for _PATH_LOG" 2013-08-05 20:41:50 +00:00
Robert Greenwalt
662bb875e4 am a9c5bb97: Merge "Fix the detection of alt-network in dns resolver."
* commit 'a9c5bb972df7cbb4e65cfb53673b26f9d42deacd':
  Fix the detection of alt-network in dns resolver.
2013-08-05 11:55:53 -07:00
Robert Greenwalt
a9c5bb972d Merge "Fix the detection of alt-network in dns resolver." 2013-08-05 18:45:03 +00:00
Robert Greenwalt
1d8d9a308c Fix the detection of alt-network in dns resolver.
Used to determine proper A/AAAA record request.

bug:10132565
Change-Id: I7229f6672e879920a6fae58672cddd72db78546c
2013-08-05 18:44:30 +00:00
The Android Automerger
1714c787b6 merge in klp-release history after reset to master 2013-08-05 06:00:46 -07:00
Elliott Hughes
49b24b4efb am 3287dccf: Merge "Add ssse3 implementation of __memcmp16."
* commit '3287dccf2ecced89bb39b857abc8eba997bc3f51':
  Add ssse3 implementation of __memcmp16.
2013-08-02 18:04:01 -07:00
Ben Cheng
b78f43579f am aa2733d1: Merge "Update the comments to reflect the current status."
* commit 'aa2733d17b87c607fccbd6e6a0f44d2d411ffd77':
  Update the comments to reflect the current status.
2013-08-02 17:58:47 -07:00
Elliott Hughes
3287dccf2e Merge "Add ssse3 implementation of __memcmp16." 2013-08-03 00:58:46 +00:00
Elliott Hughes
d0313e7a2a am a6ed05c1: Merge "libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher"
* commit 'a6ed05c1c4c787241b56df132e77512c64cbc595':
  libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher
2013-08-02 17:58:46 -07:00
Alexander Ivchenko
baa91f4f89 Add ssse3 implementation of __memcmp16.
__memcmp16 was missing in x86. Also added C-version for backward
compatibility. Added bionic test for __memcmp16 and for wmemcmp.

Change-Id: I33718441e7ee343cdb021d91dbeaf9ce2d4d7eb4
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>
2013-08-02 17:57:23 -07:00
Ben Cheng
aa2733d17b Merge "Update the comments to reflect the current status." 2013-08-02 23:06:10 +00:00
Ben Cheng
772b797b7b Update the comments to reflect the current status.
Change-Id: I3a6348b568230fe8b21d121e5b8d30561a9703c2
2013-08-02 15:53:18 -07:00
Elliott Hughes
a6ed05c1c4 Merge "libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher" 2013-08-02 22:39:08 +00:00
Christopher Ferris
d119b7b6f4 Optimize strcat/strcpy, small tweaks to strlen.
Create one version of strcat/strcpy/strlen for cortex-a15/krait and another
version for cortex-a9.

Tested with the libc_test strcat/strcpy/strlen tests.
Including new tests that verify that the src for strcat/strcpy do not
overread across page boundaries.

NOTE: The handling of unaligned strcpy (same code in strcat) could probably
be optimized further such that the src is read 64 bits at a time instead of
the partial reads occurring now.

strlen improves slightly since it was recently optimized.

Performance improvements for strcpy and strcat (using an empty dest string):

cortex-a9
- Small copies vary from about 5% to 20% as the size gets above 10 bytes.
- Copies >= 1024, about a 60% improvement.
- Unaligned copies, from about 40% improvement.

cortex-a15
- Most small copies exhibit a 100% improvement, a few copies only
  improve by 20%.
- Copies >= 1024, about 150% improvement.
- Unaligned copies, about 100% improvement.

krait
- Most small copies vary widely, but on average 20% improvement, then
  the performance gets better, hitting about a 100% improvement when
  copies 64 bytes of data.
- Copies >= 1024, about 100% improvement.
- When coping MBs of data, about 50% improvement.
- Unaligned copies, about 90% improvement.

As strcat destination strings get larger in size:

cortex-a9
- about 40% improvement for small dst strings (>= 32).
- about 250% improvement for dst strings >= 1024.

cortex-a15
- about 200% improvement for small dst strings (>=32).
- about 250% improvement for dst strings >= 1024.

krait
- about 25% improvement for small dst strings (>=32).
- about 100% improvement for dst strings >=1024.

Change-Id: Ifd091ebdbce70fe35a7c5d8f71d5914255f3af35
2013-08-02 10:31:51 -07:00
Pavel Chupin
0a9c615a89 Fix stdint.h intptr_t/uintptr_t for x86_64/x32
Patch is required in NDK headers as well to be able to build multilib
GCC with libgomp support.
It's here: https://android-review.googlesource.com/#/c/62982

Change-Id: I2bec25d8cbca0e5ef1a0857008ececd92f4911be
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-08-02 19:23:37 +04:00
Robert Greenwalt
7e5d7485b7 am e6345f1a: Merge "Tell the dns resolver about our domains."
* commit 'e6345f1a1ec691690c69d5663ca8bb2b70240d93':
  Tell the dns resolver about our domains.
2013-07-31 17:57:45 -07:00
Robert Greenwalt
e6345f1a1e Merge "Tell the dns resolver about our domains." 2013-08-01 00:47:29 +00:00
Robert Greenwalt
e0805a94c5 Tell the dns resolver about our domains.
A refactor caused us to not tell the resolver about search domains
until after it had done the domain fanout.

bug:6799630
Change-Id: Ibabd8fa5bcc69b1490fc5e329e62eb0f2d1a5e63
2013-07-31 16:53:46 -07:00
The Android Automerger
1d1fe3bb69 merge in klp-release history after reset to master 2013-07-30 11:08:39 -07:00
Elliott Hughes
abf3638317 am 101b5e1f: Merge "Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way."
* commit '101b5e1f6cc4e24635760928b3d2c1e51c1e5774':
  Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way.
2013-07-29 17:35:49 -07:00
Elliott Hughes
101b5e1f6c Merge "Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way." 2013-07-30 00:29:58 +00:00
Elliott Hughes
c03e1e7439 Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way.
Also make sysconf use PTHREAD_STACK_MIN rather than redefining its
own, different, constant.

Bug: 9997352
Change-Id: I9a8e7d2b18e691439abfb45533e82c36eee9e81d
2013-07-29 17:09:36 -07:00
synergydev
efddf44c8e libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher
This is needed when passing -mcpu=cortex-a9 or higher on a modern
toolchain for prebuilt library compatibility

Change-Id: I73eb2393377914ae26216a8c2828ad973d1c1225
2013-07-29 16:55:08 -07:00
Elliott Hughes
326b52760d am 9a73d08f: Merge "Bump the number of TLS slots to 128."
* commit '9a73d08f4c334c00fe06d583d37e038ebe063eba':
  Bump the number of TLS slots to 128.
2013-07-25 17:04:18 -07:00
Elliott Hughes
9a73d08f4c Merge "Bump the number of TLS slots to 128." 2013-07-25 21:51:05 +00:00
Elliott Hughes
838f01fdc7 Bump the number of TLS slots to 128.
Bug: 9997352
Change-Id: I7bde7228d803e9d4bb83309c5891d54a07e3b025
2013-07-25 14:14:22 -07:00
Elliott Hughes
478314a109 am a9feb5e3: Merge "Avoid sign extension of the mmap offset."
* commit 'a9feb5e33a5261f45fb25fd5e90a56792c6a437e':
  Avoid sign extension of the mmap offset.
2013-07-25 10:51:00 -07:00
Elliott Hughes
a9feb5e33a Merge "Avoid sign extension of the mmap offset." 2013-07-25 17:28:59 +00:00
Elliott Hughes
e320a8c780 Avoid sign extension of the mmap offset.
off_t is signed to support seeking backwards, but that's a liability
when using off_t to represent a subset of a file.

Change-Id: I2a3615166eb16212347eb47f1242e3bfb93c2022
2013-07-25 10:15:07 -07:00
The Android Automerger
48161c898b merge in klp-release history after reset to master 2013-07-24 06:00:57 -07:00
Elliott Hughes
a59b7ed8c3 am bfba6aac: am a8d06766: Merge "[MIPS] __dso_handle.S and __dso_handle_so.S not needed."
* commit 'bfba6aac99115972fad3341aef595c0ca1f7258b':
  [MIPS] __dso_handle.S and __dso_handle_so.S not needed.
2013-07-23 18:10:51 -07:00
Elliott Hughes
bfba6aac99 am a8d06766: Merge "[MIPS] __dso_handle.S and __dso_handle_so.S not needed."
* commit 'a8d06766c7674bbfde852e8bfee4200e75ad8f24':
  [MIPS] __dso_handle.S and __dso_handle_so.S not needed.
2013-07-23 18:07:12 -07:00
Rom Lemarchand
c847f749fe am c5749f1f: am 061246b6: Merge "Restore dlmalloc mmap threshold to 64k"
* commit 'c5749f1f4232e59e66737488036aba1f583867d5':
  Restore dlmalloc mmap threshold to 64k
2013-07-23 13:58:12 -07:00
Rom Lemarchand
c5749f1f42 am 061246b6: Merge "Restore dlmalloc mmap threshold to 64k"
* commit '061246b600c16a80b246804221b9e3fa65e507d9':
  Restore dlmalloc mmap threshold to 64k
2013-07-23 13:52:29 -07:00
The Android Automerger
58ccd60877 merge in klp-release history after reset to master 2013-07-22 06:00:33 -07:00
Elliott Hughes
aa9116f0ed am c2902edf: am 6fe4a58f: Merge "Move stuff only needed by pthread-timers.c into pthread-timers.c."
* commit 'c2902edfc4aaa02977eef7154d05d5369bc48281':
  Move stuff only needed by pthread-timers.c into pthread-timers.c.
2013-07-19 17:19:46 -07:00
Elliott Hughes
c2902edfc4 am 6fe4a58f: Merge "Move stuff only needed by pthread-timers.c into pthread-timers.c."
* commit '6fe4a58f84954523f17114f1f7cf060a3573c073':
  Move stuff only needed by pthread-timers.c into pthread-timers.c.
2013-07-19 17:13:33 -07:00
Elliott Hughes
8b56ba8896 am 178c4185: am e8bd8c2e: Merge "Upgrade mktemp.c to the current upstream version."
* commit '178c41857321732259c3e22d73c86c22ae4359b5':
  Upgrade mktemp.c to the current upstream version.
2013-07-19 16:43:07 -07:00
Elliott Hughes
178c418573 am e8bd8c2e: Merge "Upgrade mktemp.c to the current upstream version."
* commit 'e8bd8c2ed9c71c73682f29020456934c55f260e3':
  Upgrade mktemp.c to the current upstream version.
2013-07-19 16:37:52 -07:00
Colin Cross
15d2784fc1 Merge "Kexec header generated from linux header 3.10" 2013-07-18 17:41:09 +00:00
The Android Automerger
00196d1a46 merge in klp-release history after reset to master 2013-07-18 06:00:28 -07:00
Elliott Hughes
3c212645a0 am 81b46980: am f8a66bb3: Merge "Remove some non-unused makefile generality."
* commit '81b4698059c37ac36aa74d1498bef5654580ad3f':
  Remove some non-unused makefile generality.
2013-07-17 17:45:03 -07:00
Elliott Hughes
81b4698059 am f8a66bb3: Merge "Remove some non-unused makefile generality."
* commit 'f8a66bb31204b42f830c1865a795b5f3eb1e0147':
  Remove some non-unused makefile generality.
2013-07-17 17:41:43 -07:00
Elliott Hughes
ac74b8565a am b6b2375d: am 8fa9081f: Merge "[MIPS] Rewrite MIPS crtbegin* as C files."
* commit 'b6b2375df8ca63a5e349d8277d425ab58e16aeb1':
  [MIPS] Rewrite MIPS crtbegin* as C files.
2013-07-17 17:40:46 -07:00
Elliott Hughes
b6b2375df8 am 8fa9081f: Merge "[MIPS] Rewrite MIPS crtbegin* as C files."
* commit '8fa9081f48c4861f83737d59bf2c2c8f21c7da3f':
  [MIPS] Rewrite MIPS crtbegin* as C files.
2013-07-17 17:36:26 -07:00
Elliott Hughes
66f8452a14 am cbf07a25: am 2be511d4: Merge "Improve stack overflow diagnostics (take 2)."
* commit 'cbf07a25149cd924a348e4dc0395c5d08f86fd7f':
  Improve stack overflow diagnostics (take 2).
2013-07-17 13:53:06 -07:00
Elliott Hughes
cbf07a2514 am 2be511d4: Merge "Improve stack overflow diagnostics (take 2)."
* commit '2be511d405d47eccc61a6e3c338d1877bf33b4fa':
  Improve stack overflow diagnostics (take 2).
2013-07-17 13:50:15 -07:00
Elliott Hughes
4add6968be resolved conflicts for merge of e35d6c28 to master
Change-Id: I237bfc35d872a2e2ff10984012f9811488a5cea7
2013-07-17 13:28:30 -07:00
Elliott Hughes
e35d6c28df am 40e7a878: Merge "Prevent the madvise(MADV_MERGEABLE) mmap hack from affecting errno."
* commit '40e7a87864fee75f7af2caf8e1972d0d764135cd':
  Prevent the madvise(MADV_MERGEABLE) mmap hack from affecting errno.
2013-07-17 13:22:39 -07:00
Elliott Hughes
a5a3b3bdb1 resolved conflicts for merge of 4763ef2b to master
Change-Id: I4d424f9fb438c2ed845bca0bbcae69b4d0f5e3dc
2013-07-17 13:18:43 -07:00
Elliott Hughes
4763ef2b5b am b7b36b81: Merge "mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps"
* commit 'b7b36b819e8029a152859f3204ba2da38a0e2879':
  mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps
2013-07-17 13:05:13 -07:00
The Android Automerger
0976c97fe4 merge in klp-release history after reset to master 2013-07-17 06:00:13 -07:00
Guang Zhu
81b7df7315 am 6f08b865: am 2cf5a6f6: Merge "Revert "Improve stack overflow diagnostics.""
* commit '6f08b8659a3682b7e774af6ed68b1b613e147f1b':
  Revert "Improve stack overflow diagnostics."
2013-07-16 20:23:42 -07:00
Guang Zhu
dd4eb67a48 am 849bfd58: am 8c1b9668: Merge "Revert "Clean up our alternate signal stacks.""
* commit '849bfd58118e8c8a4b1ad8a7c3de74bb3cd13863':
  Revert "Clean up our alternate signal stacks."
2013-07-16 20:23:41 -07:00
Guang Zhu
6f08b8659a am 2cf5a6f6: Merge "Revert "Improve stack overflow diagnostics.""
* commit '2cf5a6f6627549842c0c840ff3615ae942a90ea3':
  Revert "Improve stack overflow diagnostics."
2013-07-16 20:18:57 -07:00
Guang Zhu
849bfd5811 am 8c1b9668: Merge "Revert "Clean up our alternate signal stacks.""
* commit '8c1b96681af91fda86a5493e7f7e4381ce489648':
  Revert "Clean up our alternate signal stacks."
2013-07-16 20:18:57 -07:00
Christopher Ferris
66cb2edba5 am 7ff868a6: am f63c28f0: Merge "Fix assembler errors in generic arm strlen.c."
* commit '7ff868a6307f0d5e63555b5d320b8ad6e490e3c4':
  Fix assembler errors in generic arm strlen.c.
2013-07-16 17:24:40 -07:00
Christopher Ferris
69205c5433 am b1d7fd49: am 6f4fed74: Merge "Add new optimized strlen for arm."
* commit 'b1d7fd4969fdd3d3402b500840561beb30962c1d':
  Add new optimized strlen for arm.
2013-07-16 17:24:40 -07:00
Christopher Ferris
7ff868a630 am f63c28f0: Merge "Fix assembler errors in generic arm strlen.c."
* commit 'f63c28f0338fd647e88f1f9300b2220093af1aae':
  Fix assembler errors in generic arm strlen.c.
2013-07-16 17:22:05 -07:00
Christopher Ferris
b1d7fd4969 am 6f4fed74: Merge "Add new optimized strlen for arm."
* commit '6f4fed74cb9405c0f5322307085d15afed6be764':
  Add new optimized strlen for arm.
2013-07-16 17:21:55 -07:00
Elliott Hughes
152dcf3b3f am 79dfb1af: am f35e0c14: Merge "Clean up our alternate signal stacks."
* commit '79dfb1afda16565a0dd378eca7f72bfe81fae205':
  Clean up our alternate signal stacks.
2013-07-16 15:56:16 -07:00
Elliott Hughes
79dfb1afda am f35e0c14: Merge "Clean up our alternate signal stacks."
* commit 'f35e0c149f1a6801a5af7c339f84d81ae05c3adf':
  Clean up our alternate signal stacks.
2013-07-16 15:50:18 -07:00
Elliott Hughes
617a1e4977 am 10a954de: am 026867c7: Merge "Improve stack overflow diagnostics."
* commit '10a954dea6732232ed6cf56d3aa6ca38673dacbf':
  Improve stack overflow diagnostics.
2013-07-16 15:36:12 -07:00
Elliott Hughes
f2f6b2bad3 am d2acf124: am 9562d38d: Merge "Clean up __builtin_expect usage."
* commit 'd2acf124ed7ad18f8adb5159544c92234cade90e':
  Clean up __builtin_expect usage.
2013-07-16 15:36:12 -07:00
Elliott Hughes
62d6b7526a am 2a18ea14: am f152e386: Merge "EABI syscall cleanup."
* commit '2a18ea1462cf65cc51bfcb1a1c46972ee5af1d01':
  EABI syscall cleanup.
2013-07-16 15:36:11 -07:00
Elliott Hughes
10a954dea6 am 026867c7: Merge "Improve stack overflow diagnostics."
* commit '026867c7dcce7828212dcd4a61806146908e9039':
  Improve stack overflow diagnostics.
2013-07-16 15:31:40 -07:00
Elliott Hughes
d2acf124ed am 9562d38d: Merge "Clean up __builtin_expect usage."
* commit '9562d38df1e4aba941b3433cfd0922fee5ea258b':
  Clean up __builtin_expect usage.
2013-07-16 15:31:39 -07:00
Elliott Hughes
2a18ea1462 am f152e386: Merge "EABI syscall cleanup."
* commit 'f152e386fcf477f3f5de9dc020c3660d4f9c4b81':
  EABI syscall cleanup.
2013-07-16 15:31:39 -07:00
The Android Automerger
7256fbd9b2 merge in klp-release history after reset to master 2013-07-16 06:00:36 -07:00
Elliott Hughes
993ea1061b am 5148661f: am 67750c85: Merge "Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize."
* commit '5148661f8d2be514d0e3c191bc1e489157ae1154':
  Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize.
2013-07-15 16:45:54 -07:00
Elliott Hughes
5148661f8d am 67750c85: Merge "Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize."
* commit '67750c8515573cba294b2f3840249dd7f7d817d5':
  Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize.
2013-07-15 16:42:34 -07:00
Christopher Ferris
d8d10a8994 Fix assembler errors in generic arm strlen.c.
Tested using a static version of the strlen libc_test program
on a nexus7 that uses the generic code.

Change-Id: If04d15dcb6c0b18f27f2fefadca5510ed49016c5
2013-07-15 13:56:45 -07:00
Szymon Starzycki
674be7e0fc Kexec header generated from linux header 3.10
Change-Id: Iac26fcc6e0e25905ab52dba91bec16a4fb479d43
2013-07-15 13:51:56 -07:00
Christopher Ferris
67e9f47476 Merge "Add new optimized strlen for arm." 2013-07-15 19:44:26 +00:00
Christopher Ferris
2fc0717977 Add new optimized strlen for arm.
This optimized version is primarily targeted at cortex-a15.

Tested on all nexus devices using the system/extras/libc_test strlen test.
Tested alignments from 1 to 32 that are powers of 2.
Tested that strlen does not cross page boundaries at all alignments.

Speed improvements listed below:

cortex-a15
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~250% improvement.

cortex-a9
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~85% improvement.

krait
- Sizes >= 32 bytes, ~95% improvement.
- Sizes >= 1024 bytes, ~160% improvement.

Change-Id: I361b1a36ed89ab991f2a8f0abbf0d7416d39c8f5
2013-07-15 12:37:51 -07:00
Elliott Hughes
fc2ada9741 am f384be3b: am 59ed029b: Merge "Upgrade to tzcode2013d."
* commit 'f384be3b5c2062e7ef4e7449b466bf2f24f7bcc8':
  Upgrade to tzcode2013d.
2013-07-15 10:15:45 -07:00
Elliott Hughes
f384be3b5c am 59ed029b: Merge "Upgrade to tzcode2013d."
* commit '59ed029b286a1564f635377296e4f088e0fd2afa':
  Upgrade to tzcode2013d.
2013-07-15 10:11:04 -07:00
The Android Automerger
2d7d92e811 merge in klp-release history after reset to master 2013-07-15 06:00:50 -07:00
Elliott Hughes
d3522051ce am 7e56f462: am 3db1f359: Merge "Add a trivial gmtime(3) test."
* commit '7e56f462ad19791d7b270e297fc994d18df43252':
  Add a trivial gmtime(3) test.
2013-07-12 14:35:19 -07:00
Elliott Hughes
7e56f462ad am 3db1f359: Merge "Add a trivial gmtime(3) test."
* commit '3db1f359e9f218f5f73a7a9f4d80e4be362a526e':
  Add a trivial gmtime(3) test.
2013-07-12 14:28:40 -07:00
Elliott Hughes
47c7e33ccb am ff20b911: am 8a363692: Merge "Add TCP_INFO state enum values."
* commit 'ff20b9110659e67433ce641a6224cdc9ccc01301':
  Add TCP_INFO state enum values.
2013-07-11 18:57:42 -07:00
Nick Kralevich
4fa5d6a5db am ef49e99d: am d30877ae: Merge "syslog.h: add __printflike to syslog functions"
* commit 'ef49e99d92597a4e9fddbba0e1e3feddc06fee53':
  syslog.h: add __printflike to syslog functions
2013-07-11 18:57:41 -07:00
Elliott Hughes
ff20b91106 am 8a363692: Merge "Add TCP_INFO state enum values."
* commit '8a363692be45ed1b36e1f1f21707b6f35f5519c8':
  Add TCP_INFO state enum values.
2013-07-11 18:52:22 -07:00
Nick Kralevich
ef49e99d92 am d30877ae: Merge "syslog.h: add __printflike to syslog functions"
* commit 'd30877ae28f3c308edf142c091b3a8acc4467c6d':
  syslog.h: add __printflike to syslog functions
2013-07-11 18:52:01 -07:00
Geremy Condra
bb17967761 Merge "Add marking of DNS sockets for mark based routing" 2013-07-11 22:10:31 +00:00
Elliott Hughes
f9a1d1cf5f am 09f561b3: am b7f49237: Merge "Fix MIPS build."
* commit '09f561b38b880e551097b807585d0e037fa36442':
  Fix MIPS build.
2013-07-11 10:16:33 -07:00
Elliott Hughes
1087e0df4f am 731f7c2d: am 9d476716: Merge "Add <sys/statvfs.h>."
* commit '731f7c2d0e531d5e0ecdd771d743053f8d093e16':
  Add <sys/statvfs.h>.
2013-07-11 10:16:32 -07:00
Elliott Hughes
09f561b38b am b7f49237: Merge "Fix MIPS build."
* commit 'b7f492375291306065472b67011eebb324de1022':
  Fix MIPS build.
2013-07-09 14:21:50 -07:00
Elliott Hughes
731f7c2d0e am 9d476716: Merge "Add <sys/statvfs.h>."
* commit '9d476716c2bd7bc5a018a71e121257c35e965058':
  Add <sys/statvfs.h>.
2013-07-09 13:44:57 -07:00
Chad Brubaker
c39214e0ac Add marking of DNS sockets for mark based routing
Adds an extra mark parameter to android_getaddrinfoforiface,
android_gethostbyaddrforiface and android_gethostbynameforiface that if set
will cause all packets sent by DNS requests to have that mark

Change-Id: I6f72390e4ce5bfc3cc73183f9b2fb3705a11685f
2013-07-09 13:16:22 -07:00
The Android Automerger
b89a334df8 merge in klp-release history after reset to master 2013-07-09 06:00:16 -07:00
Elliott Hughes
273df910b5 am f3f72e7f: am 4fc8a0c1: Merge "Remove <netinet/icmp6.h> ni_* macros."
* commit 'f3f72e7f277215e9fede7c6f6695654cf7aa0c63':
  Remove <netinet/icmp6.h> ni_* macros.
2013-07-08 15:13:35 -07:00
Elliott Hughes
4df412cba6 am 74b06f8d: am ff145277: Merge "Upgrade to tzdata2013d."
* commit '74b06f8ddcaaa48c7bab418d15aacaf513423ac3':
  Upgrade to tzdata2013d.
2013-07-08 15:09:57 -07:00
Elliott Hughes
f3f72e7f27 am 4fc8a0c1: Merge "Remove <netinet/icmp6.h> ni_* macros."
* commit '4fc8a0c1165537b693c900ac3e2c61470bd7e484':
  Remove <netinet/icmp6.h> ni_* macros.
2013-07-08 15:09:07 -07:00
Elliott Hughes
74b06f8ddc am ff145277: Merge "Upgrade to tzdata2013d."
* commit 'ff145277da9b7fe3d48a27839fc1d6f2ed11604b':
  Upgrade to tzdata2013d.
2013-07-08 14:55:41 -07:00
Elliott Hughes
f33dce1ab6 am 233050b1: am e31c45c9: Merge "Make bionic\'s <netinet/icmp6.h> standalone, like glibc\'s."
* commit '233050b15ec3ce0db534ec6cc24a6061559993d2':
  Make bionic's <netinet/icmp6.h> standalone, like glibc's.
2013-07-08 11:27:53 -07:00
Elliott Hughes
233050b15e am e31c45c9: Merge "Make bionic\'s <netinet/icmp6.h> standalone, like glibc\'s."
* commit 'e31c45c9fa5e0d2853941282e619b753550b82ae':
  Make bionic's <netinet/icmp6.h> standalone, like glibc's.
2013-07-08 11:21:53 -07:00
Elliott Hughes
b1397f97f1 am 62bdd031: am 6b33f31b: Merge "Fix IPv6 filtering definitions in netinet/icmp6.h."
* commit '62bdd03120286708d8c1562eadf5dda00e24911c':
  Fix IPv6 filtering definitions in netinet/icmp6.h.
2013-07-08 10:38:41 -07:00
Elliott Hughes
62bdd03120 am 6b33f31b: Merge "Fix IPv6 filtering definitions in netinet/icmp6.h."
* commit '6b33f31b0994b8132bed8936685522e2e01754d8':
  Fix IPv6 filtering definitions in netinet/icmp6.h.
2013-07-08 10:34:41 -07:00
Elliott Hughes
b611d36c3a am 24400ac1: am e63ea6ac: Merge "Clean up <sys/mount.h>/<linux/fs.h> duplication."
* commit '24400ac1e390615ebcb45deacc1c9213b00f75ff':
  Clean up <sys/mount.h>/<linux/fs.h> duplication.
2013-07-08 10:17:38 -07:00
Elliott Hughes
24400ac1e3 am e63ea6ac: Merge "Clean up <sys/mount.h>/<linux/fs.h> duplication."
* commit 'e63ea6aca7d01ba9219b877ed5fab6de5c6037fb':
  Clean up <sys/mount.h>/<linux/fs.h> duplication.
2013-07-08 10:12:32 -07:00
The Android Automerger
1456ec759c merge in klp-release history after reset to master 2013-07-08 06:00:29 -07:00
Nick Kralevich
20cb10824b am 601f968c: am 84983592: Merge "bionic_atomic_arm.h: Remove < ARMv6 support"
* commit '601f968cedf015c060de8dcf21e7e10bf596901f':
  bionic_atomic_arm.h: Remove < ARMv6 support
2013-07-03 14:33:22 -07:00
Nick Kralevich
601f968ced am 84983592: Merge "bionic_atomic_arm.h: Remove < ARMv6 support"
* commit '84983592ade3ec7d72d082262fb6646849979bfc':
  bionic_atomic_arm.h: Remove < ARMv6 support
2013-07-03 14:28:14 -07:00
Elliott Hughes
1f75ee8606 am a8b954c5: am de2781d9: Merge changes I01345c23,I3b57517c
* commit 'a8b954c51edd9ec8c09a5d1dccacaadf5869d78a':
  Include linux/termios.h from sys/ioctl.h.
  Update linux/types.h to linux 2.6.20.
2013-07-03 13:45:45 -07:00
Elliott Hughes
a8b954c51e am de2781d9: Merge changes I01345c23,I3b57517c
* commit 'de2781d906f27be4df3e03a8e5041dcc1aeb281d':
  Include linux/termios.h from sys/ioctl.h.
  Update linux/types.h to linux 2.6.20.
2013-07-03 13:39:16 -07:00
Elliott Hughes
be438a4c40 am fac9199c: am ebc8ce1d: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."
* commit 'fac9199c7698481805dd9b1adaf89a2584719f4c':
  libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
2013-07-03 10:28:19 -07:00
Elliott Hughes
fac9199c76 am ebc8ce1d: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."
* commit 'ebc8ce1de68a83d772106af98c7cb98150bb5662':
  libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
2013-07-03 10:23:41 -07:00
Elliott Hughes
997368d60d am 833dc584: am 87b4286f: Merge "Expose dn_comp and dn_expand to system C code."
* commit '833dc584d4d02ab8e396b877b38a8a5ad8ba4882':
  Expose dn_comp and dn_expand to system C code.
2013-07-02 16:05:34 -07:00
Elliott Hughes
833dc584d4 am 87b4286f: Merge "Expose dn_comp and dn_expand to system C code."
* commit '87b4286f092094a2e8069a06e20ef5036a258172':
  Expose dn_comp and dn_expand to system C code.
2013-07-02 16:02:30 -07:00
Elliott Hughes
742aad3584 am 7c808b29: am feec97a7: Merge "Fix inttypes.h PRI?PTR and SCN?PTR macros."
* commit '7c808b29d5cea61e5bda90a1b0f2f0e669ee135e':
  Fix inttypes.h PRI?PTR and SCN?PTR macros.
2013-07-02 15:50:36 -07:00
Elliott Hughes
7c808b29d5 am feec97a7: Merge "Fix inttypes.h PRI?PTR and SCN?PTR macros."
* commit 'feec97a7c7fbd032174fb4870a02422c2acd891a':
  Fix inttypes.h PRI?PTR and SCN?PTR macros.
2013-07-02 15:44:48 -07:00
Nick Kralevich
e4723161d5 Merge "mmap: Don't call madvise if mmap fails" 2013-07-02 19:52:44 +00:00
Elliott Hughes
2aac0fcc20 am dcd237a8: am 1ba3a2c2: Merge "Update icmp6.h to current NetBSD."
* commit 'dcd237a89707357ead904a2476bb2210e251c173':
  Update icmp6.h to current NetBSD.
2013-07-02 12:41:37 -07:00
Elliott Hughes
dcd237a897 am 1ba3a2c2: Merge "Update icmp6.h to current NetBSD."
* commit '1ba3a2c26937c68a4a0bd4fdffe95f5162077997':
  Update icmp6.h to current NetBSD.
2013-07-02 12:34:36 -07:00
Nick Kralevich
553a5ec407 mmap: Don't call madvise if mmap fails
Fix improper check of return value from __mmap2. On a failed
mmap(), it returns MAP_FAILED, not 0. This ended up clobbering errno
when madvise subsequently failed.

Change-Id: I364fb2f158fe258c55a73e552195384b2c11c193
2013-07-02 12:31:07 -07:00
The Android Automerger
9db12e44af merge in klp-release history after reset to master 2013-07-02 07:07:20 -07:00
Christopher Ferris
c6ac3ae269 am 269daac2: am 7c14d67b: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."
* commit '269daac2f1d76a478b83ba4cbb57d28b47eef5ec':
  libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
2013-07-01 10:39:08 -07:00
Christopher Ferris
269daac2f1 am 7c14d67b: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."
* commit '7c14d67bc1cc2679365a784e68518bf602b81dc7':
  libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
2013-07-01 10:32:17 -07:00
Nick Kralevich
4b17283c98 am 28d298a6: am 413eef71: Merge "More FORTIFY_SOURCE functions under clang"
* commit '28d298a673da4367f27f428db5e12d7dad3d8e83':
  More FORTIFY_SOURCE functions under clang
2013-07-01 10:04:18 -07:00
Nick Kralevich
28d298a673 am 413eef71: Merge "More FORTIFY_SOURCE functions under clang"
* commit '413eef716f822d5eb4f57618f6780c6af5036460':
  More FORTIFY_SOURCE functions under clang
2013-07-01 10:00:09 -07:00
The Android Automerger
5da8df2840 merge in klp-release history after reset to master 2013-07-01 07:07:20 -07:00
Nick Kralevich
22570f51a5 am a289964b: am 227b47a4: Merge "resolv_private.h: remove #define b64_ntop and b64_pton"
* commit 'a289964bca39c591b54e0c336da1a6730e85cd61':
  resolv_private.h: remove #define b64_ntop and b64_pton
2013-06-28 13:37:08 -07:00
Nick Kralevich
a289964bca am 227b47a4: Merge "resolv_private.h: remove #define b64_ntop and b64_pton"
* commit '227b47a461b27d746b373feb66001cdddc9ba1db':
  resolv_private.h: remove #define b64_ntop and b64_pton
2013-06-28 13:32:43 -07:00
Nick Kralevich
fda0c06605 am 2018cfa8: am 394df35e: Merge "Reorganize FORTIFY_SOURCE tests."
* commit '2018cfa85d4c7f36316376f5b090be5f0d3d13dc':
  Reorganize FORTIFY_SOURCE tests.
2013-06-28 13:15:39 -07:00
Nick Kralevich
2018cfa85d am 394df35e: Merge "Reorganize FORTIFY_SOURCE tests."
* commit '394df35e641816a3b9f0e065840b673dec9c73e5':
  Reorganize FORTIFY_SOURCE tests.
2013-06-28 13:11:14 -07:00
Nick Kralevich
9a268a10bb am f9ef0106: am 78a7bf99: Merge "stdio.h: enable vs?printf clang FORTIFY_SOURCE"
* commit 'f9ef0106da43d21e6cb68d87b86d806f63b215fd':
  stdio.h: enable vs?printf clang FORTIFY_SOURCE
2013-06-27 10:18:17 -07:00
Nick Kralevich
f9ef0106da am 78a7bf99: Merge "stdio.h: enable vs?printf clang FORTIFY_SOURCE"
* commit '78a7bf998d2d29592504984fcf419cd2701c6c54':
  stdio.h: enable vs?printf clang FORTIFY_SOURCE
2013-06-27 10:15:31 -07:00
The Android Automerger
e4450b447e merge in klp-release history after reset to master 2013-06-26 07:07:28 -07:00
Colin Cross
2f76830a01 am 146d79c2: am fbec57d4: Merge changes Ib496e818,I074204e9
* commit '146d79c22a70d772defc63acfa6ac6128102a15f':
  bionic: add compatibility mode for properties
  bionic: use the size of the file to determine property area size
2013-06-25 18:29:14 -07:00
Colin Cross
146d79c22a am fbec57d4: Merge changes Ib496e818,I074204e9
* commit 'fbec57d46c42460b2381484d1610ff21922d162e':
  bionic: add compatibility mode for properties
  bionic: use the size of the file to determine property area size
2013-06-25 17:08:48 -07:00
Elliott Hughes
9145ae66d7 am db6dd600: am b116bf76: Merge "Switch to current upstream getopt_long."
* commit 'db6dd600d23eafb1742e5114bae7a4b8be4c04e1':
  Switch to current upstream getopt_long.
2013-06-25 17:02:11 -07:00
Rom Lemarchand
6937468d37 am baa61864: am 995f17e6: Merge "libc: add swapon and swapoff syscalls"
* commit 'baa61864c515a56d4dbeac46b149b4317b01797b':
  libc: add swapon and swapoff syscalls
2013-06-25 17:02:06 -07:00
Elliott Hughes
43508014c4 am 51371ee0: am c76550b3: Merge "Update x86 machine/endian.h from upstream"
* commit '51371ee0d897285b869aa2af670e153ead471e03':
  Update x86 machine/endian.h from upstream
2013-06-25 17:01:53 -07:00
Elliott Hughes
d9643a3119 am d31287d6: am 7d624e9a: Merge "Kernel dso support for \'dl_iterate_phdr\' function"
* commit 'd31287d6017475209cfee2fea0532bdc8c0f4aac':
  Kernel dso support for 'dl_iterate_phdr' function
2013-06-25 17:01:47 -07:00
Nick Kralevich
caad18c7d1 am 71802135: am bfacb603: Merge "libc: enable FORTIFY_SOURCE snprintf under clang"
* commit '7180213557f3120b391053b4f5861037eda6ebb6':
  libc: enable FORTIFY_SOURCE snprintf under clang
2013-06-25 16:30:53 -07:00
Colin Cross
4fc4c9be84 am a99e29e6: (-s ours) am 1642edb5: Merge changes Ib074192d,I6df3afed,I69070455,Icbe31908,Id3fa4526,I038d451f
* commit 'a99e29e61090da9c21c17cae54211083a2268d6e':
  bionic: store property names as variable-length strings
  bionic: prevent root processes from calling __system_property_add
  bionic: revert to a single (larger) property area
  bionic: reimplement property area as hybrid trie/binary tree
  bionic: add missing memory barriers to system properties
  bionic: make property area expandable
2013-06-25 16:30:34 -07:00
Elliott Hughes
db6dd600d2 am b116bf76: Merge "Switch to current upstream getopt_long."
* commit 'b116bf76286178a7d552c4d0a72b79212c8c93d1':
  Switch to current upstream getopt_long.
2013-06-25 15:58:53 -07:00
Rom Lemarchand
baa61864c5 am 995f17e6: Merge "libc: add swapon and swapoff syscalls"
* commit '995f17e6a9a9903f03f542192da9a83b1cabc684':
  libc: add swapon and swapoff syscalls
2013-06-25 15:28:21 -07:00
Elliott Hughes
51371ee0d8 am c76550b3: Merge "Update x86 machine/endian.h from upstream"
* commit 'c76550b3377f50a2bc53536e2713e14edc8dbeac':
  Update x86 machine/endian.h from upstream
2013-06-25 14:22:14 -07:00
Colin Cross
ad76c85b9c bionic: add compatibility mode for properties
Allow a new bionic to work with an old init property area by supporting
the old format.

Change-Id: I9268214b2f8930e75e3b5c26afe94fa92068bf0b
2013-06-25 13:34:45 -07:00
Colin Cross
285b42a04c bionic: use the size of the file to determine property area size
On the reader size, don't assume that the property size is PA_SIZE,
read it from the size of the file.  Allows init to use a different
property size without recompiling statically linked executables.

Change-Id: I87fb0bf40c4724e3759a583fd9ea1f49492bc958
2013-06-25 13:34:45 -07:00
Greg Hackmann
4fe82929eb bionic: store property names as variable-length strings
Names are immutable, so the fixed-sized arrays can be replaced with
variable-length ones to save memory (especially on internal tree nodes).

Change-Id: Iddf7856fba579b97f355e9ad4b3663a78767b96d
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-25 13:34:42 -07:00
Colin Cross
fc761f8cc0 bionic: prevent root processes from calling __system_property_add
If a root process other than init calls __system_property_add, which
it should never do, it will break the design assumption that there is
only one mutator.

Pass O_EXCL to open() in map_prop_region_rw to ensure that only one
process ever has the property pages open for write.

Change-Id: I8233bfe0beaa40a5003ad53b98c661536b15f6b7
2013-06-25 13:34:36 -07:00
Greg Hackmann
be30c7a78a bionic: revert to a single (larger) property area
d329697 is too complicated.  Change the multiple property pages back to
a single 128K property area that's mapped in entirely at initialization
(the memory will not get allocated until the pages are touched).

d329697 has other changes useful for testing (moving property area
initialization inside bionic and adding __system_property_set_filename)
so undo the change manually rather than with git revert.

Change-Id: Icd137669a4f8bc248e9dd2c1e8cc54e9193c9a6d
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-25 13:34:32 -07:00
Greg Hackmann
d5276422ca bionic: add hierarchical properties test
Deliberately put items several levels deep in the trie hierarchy to test
the trie traversal

Change-Id: I995a1cdd3b5e74162fb5d25bc0f65140bdf2f719
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-25 13:34:29 -07:00
Greg Hackmann
4482d85139 bionic: reimplement property area as hybrid trie/binary tree
See the comments for an explanation of how properties are stored.

The trie structure is designed to scale better than the previous
array-based implementation.  Searching an array with n properties
required average O(n) string compares of the entire key; searching the
trie requires average O(log n) string compares of each token (substrings
between '.' characters).

Change-Id: Ic28b3c5246004a3c502eb02d6e1c9b512884d872
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-25 13:34:24 -07:00
Elliott Hughes
d31287d601 am 7d624e9a: Merge "Kernel dso support for \'dl_iterate_phdr\' function"
* commit '7d624e9aff4c6addea7f2275fe58ff0815d95c70':
  Kernel dso support for 'dl_iterate_phdr' function
2013-06-25 13:17:37 -07:00
Nick Kralevich
7180213557 am bfacb603: Merge "libc: enable FORTIFY_SOURCE snprintf under clang"
* commit 'bfacb603e417c1e2c25ce8482b5c6e31b4db8c9b':
  libc: enable FORTIFY_SOURCE snprintf under clang
2013-06-25 10:34:20 -07:00
The Android Automerger
4261a08409 merge in klp-release history after reset to master 2013-06-25 07:07:12 -07:00
Nick Kralevich
5f7f7fca27 am 95448039: am 0ea1d5c0: Merge "libc: enable sprintf FORTIFY_SOURCE under clang"
* commit '954480393f4539f62cdc3f6cb83c562050ea4f51':
  libc: enable sprintf FORTIFY_SOURCE under clang
2013-06-25 05:59:32 -07:00
Greg Hackmann
c79de97ccc bionic: replace 4K property pages with 32K property pages
Fixes apps compiled statically against new libc but running with old
init

Bug: 9558625
Change-Id: I79e6f02575d278d4c7d8e8546d772ed0529bcaab
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 19:23:34 -07:00
Greg Hackmann
de76bafb21 bionic: replace 4K property pages with 32K property pages
Fixes apps compiled statically against new libc but running with old
init

Bug: 9558625
Change-Id: I79e6f02575d278d4c7d8e8546d772ed0529bcaab
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 18:41:46 -07:00
Greg Hackmann
44c273c293 Revert "bionic: reimplement property area as hybrid trie/binary tree"
This reverts commit 6ac8e6a46d.
2013-06-24 18:05:20 -07:00
Greg Hackmann
890aa0d937 Revert "bionic: add hierarchical properties test"
This reverts commit 0f76e2340c.
2013-06-24 18:05:18 -07:00
Greg Hackmann
fa8cc0629f Revert "bionic: revert to a single (larger) property area"
This reverts commit 5f05348c18.
2013-06-24 18:05:16 -07:00
Greg Hackmann
b938756eb3 Revert "bionic: prevent root processes from calling __system_property_add"
This reverts commit fb9b7b436f.
2013-06-24 18:05:14 -07:00
Greg Hackmann
982463d99b Revert "bionic: store property names as variable-length strings"
This reverts commit 492ce95d9f.
2013-06-24 18:05:10 -07:00
Colin Cross
a99e29e610 am 1642edb5: Merge changes Ib074192d,I6df3afed,I69070455,Icbe31908,Id3fa4526,I038d451f
* commit '1642edb5208fe02ef64d5734fffaf7c4a724fd2f':
  bionic: store property names as variable-length strings
  bionic: prevent root processes from calling __system_property_add
  bionic: revert to a single (larger) property area
  bionic: reimplement property area as hybrid trie/binary tree
  bionic: add missing memory barriers to system properties
  bionic: make property area expandable
2013-06-24 17:10:16 -07:00
Greg Hackmann
492ce95d9f bionic: store property names as variable-length strings
Names are immutable, so the fixed-sized arrays can be replaced with
variable-length ones to save memory (especially on internal tree nodes).

Change-Id: Iee77874b4b55b0f9c5e531d1334be7f7f40086d2
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 16:15:52 -07:00
Colin Cross
fb9b7b436f bionic: prevent root processes from calling __system_property_add
If a root process other than init calls __system_property_add, which
it should never do, it will break the design assumption that there is
only one mutator.

Pass O_EXCL to open() in map_prop_region_rw to ensure that only one
process ever has the property pages open for write.

Change-Id: I6b7c118e5e2fd2b92a2b168b8454fe9707325462
2013-06-24 16:15:52 -07:00
Greg Hackmann
5f05348c18 bionic: revert to a single (larger) property area
d329697 is too complicated.  Change the multiple property pages back to
a single 128K property area that's mapped in entirely at initialization
(the memory will not get allocated until the pages are touched).

d329697 has other changes useful for testing (moving property area
initialization inside bionic and adding __system_property_set_filename)
so undo the change manually rather than with git revert.

Change-Id: I0ecb27843404f93af5489f15bfe657d65175e4f0
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 16:15:52 -07:00
Nick Kralevich
954480393f am 0ea1d5c0: Merge "libc: enable sprintf FORTIFY_SOURCE under clang"
* commit '0ea1d5c0ae94ee581c72451b20813c028f51090c':
  libc: enable sprintf FORTIFY_SOURCE under clang
2013-06-24 15:20:39 -07:00
Greg Hackmann
0f76e2340c bionic: add hierarchical properties test
Deliberately put items several levels deep in the trie hierarchy to test
the trie traversal

Change-Id: Id3cbd2e7d3500216b1ac8025eac70c0939622903
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 13:14:10 -07:00
Greg Hackmann
6ac8e6a46d bionic: reimplement property area as hybrid trie/binary tree
See the comments for an explanation of how properties are stored.

The trie structure is designed to scale better than the previous
array-based implementation.  Searching an array with n properties
required average O(n) string compares of the entire key; searching the
trie requires average O(log n) string compares of each token (substrings
between '.' characters).

Change-Id: I491305bc7aca59609abcd871a5f33d97f89ce714
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 13:14:09 -07:00
Greg Hackmann
a823883548 Merge "bionic: add missing memory barriers to system properties" 2013-06-24 17:15:43 +00:00
The Android Automerger
22476056b0 merge in klp-release history after reset to master 2013-06-24 09:44:30 -07:00
Nick Kralevich
ae9353387d am 100d6784: am 53ddcc90: Merge "linker: Emit a warning on text relocations"
* commit '100d678438f222ad6ef8f3dc0646911b218c50a9':
  linker: Emit a warning on text relocations
2013-06-21 16:01:02 -07:00
Nick Kralevich
100d678438 am 53ddcc90: Merge "linker: Emit a warning on text relocations"
* commit '53ddcc90701d86c7d809a84cf4710c651066e3c7':
  linker: Emit a warning on text relocations
2013-06-21 15:39:21 -07:00
Nick Kralevich
cf3c9ce0f5 am cb25359a: am 68197731: Merge "libc_logging: don\'t keep file descriptors open forever"
* commit 'cb25359a2e20489a3a9f65795a2079abc8fe0b65':
  libc_logging: don't keep file descriptors open forever
2013-06-21 15:15:22 -07:00
Nick Kralevich
cb25359a2e am 68197731: Merge "libc_logging: don\'t keep file descriptors open forever"
* commit '6819773103495a6fd81f024dc6711771320ae4ec':
  libc_logging: don't keep file descriptors open forever
2013-06-21 14:33:48 -07:00
Greg Hackmann
5bfa3ee8b3 bionic: add missing memory barriers to system properties
1) Reading the value must finish before checking whether it's intact

2) Setting the serial's dirty bit must visible before modifying the
value

3) The modified value must be visible before clearing the serial's dirty
bit

4) New properties and their TOC entries must be visible before updating
the property count

Change-Id: I26c680ec025fdb72362d5f618ec0d2b93d381233
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-20 14:41:58 -07:00
Nick Kralevich
33ae76abf3 am 5fed0eea: am 0ce28d20: Merge "libc: enable FORTIFY_SOURCE clang strlcpy"
* commit '5fed0eeabd88bfe241c416f2c2f44a14b6e447fa':
  libc: enable FORTIFY_SOURCE clang strlcpy
2013-06-20 12:34:11 -07:00
Nick Kralevich
5fed0eeabd am 0ce28d20: Merge "libc: enable FORTIFY_SOURCE clang strlcpy"
* commit '0ce28d20ea5fde250576f355004dbcd741b0b884':
  libc: enable FORTIFY_SOURCE clang strlcpy
2013-06-20 12:29:38 -07:00
Elliott Hughes
cb4fd62762 am 33df38a0: am 4eed6509: Merge "stdint.h header is not fully compatible with C99(ISO9899:1999)"
* commit '33df38a04c31de0fca431c549469edb6d2de75e2':
  stdint.h header is not fully compatible with C99(ISO9899:1999)
2013-06-19 12:57:39 -07:00
Elliott Hughes
33df38a04c am 4eed6509: Merge "stdint.h header is not fully compatible with C99(ISO9899:1999)"
* commit '4eed65090b1f0d0d087f26bd7367da90a0cca92d':
  stdint.h header is not fully compatible with C99(ISO9899:1999)
2013-06-19 12:46:40 -07:00
Greg Hackmann
d32969701b bionic: make property area expandable
The property area is initially one 4K region, automatically expanding as
needed up to 64 regions.

To avoid duplicating code, __system_property_area_init() now allocates
and initializes the first region (previously it was allocated in init's
init_property_area() and initialized in bionic).  For testing purposes,
__system_property_set_filename() may be used to override the file used
to map in regions.

Change-Id: Ibe00ef52464bfa590953c4699a6d98383b0142b1
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-19 11:02:15 -07:00
Nick Kralevich
373ea006ce am 1d174a9c: am 02ca0e31: Merge "Fix FORTIFY_SOURCE unittests."
* commit '1d174a9c17f645a27d766a66e7477d797f955e90':
  Fix FORTIFY_SOURCE unittests.
2013-06-19 10:40:46 -07:00
Nick Kralevich
1d174a9c17 am 02ca0e31: Merge "Fix FORTIFY_SOURCE unittests."
* commit '02ca0e314219a4c7205a180a414c509651043f13':
  Fix FORTIFY_SOURCE unittests.
2013-06-19 10:36:55 -07:00
Colin Cross
700b548738 am f4250508: am 3225f498: Merge "bionic: add __system_property_foreach"
* commit 'f4250508d5de415e200888ffdf143f870dc0f829':
  bionic: add __system_property_foreach
2013-06-19 10:31:11 -07:00
Colin Cross
f4250508d5 am 3225f498: Merge "bionic: add __system_property_foreach"
* commit '3225f4984837c4d9e6e9495d2154f2d9987cf457':
  bionic: add __system_property_foreach
2013-06-19 10:27:23 -07:00
The Android Automerger
6e06d4b106 merge in klp-release history after reset to master 2013-06-19 07:40:48 -07:00
Greg Hackmann
577418403d bionic: add __system_property_foreach
find_nth() will be inefficient on a trie.  Since find_nth() is only used
internally and only for enumerating properties, we can add a foreach()
function to do this directly.

Change-Id: I66bde9926c193073d74b244cce9fffd52108fff8
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-18 15:38:31 -07:00
Geremy Condra
1791cb0001 Merge "Fix remove_uidiface_info failing on first entry" 2013-06-18 21:43:52 +00:00
Elliott Hughes
fb11350c81 am 13e23302: am c656d732: Merge "Always use v1 for MIPS TLS access."
* commit '13e23302c93fdd8b52c606277f32dec0627ddbbd':
  Always use v1 for MIPS TLS access.
2013-06-18 14:00:59 -07:00
Elliott Hughes
13e23302c9 am c656d732: Merge "Always use v1 for MIPS TLS access."
* commit 'c656d732c7712b0f73d9c560ccf3cb5ae47d219d':
  Always use v1 for MIPS TLS access.
2013-06-18 13:57:57 -07:00
Nick Kralevich
83476f0747 am d98d35c5: am 0846109c: Merge "libc: Rename fortify error functions."
* commit 'd98d35c5380ce398038d3062d40bc4fe082dce80':
  libc: Rename fortify error functions.
2013-06-18 13:31:56 -07:00
Nick Kralevich
227079bb67 am 3bf62790: am dd0880fe: Merge "libc: add limited FORTIFY_SOURCE support for clang"
* commit '3bf6279034e6a92c3550fae31c5c136bec61344a':
  libc: add limited FORTIFY_SOURCE support for clang
2013-06-18 13:31:56 -07:00
Elliott Hughes
6a87df87a2 am 45ef218b: am 6807af77: Merge "Make LD_PRELOAD failures just warnings."
* commit '45ef218bde353df455062aa3c9a9f84ffed769fc':
  Make LD_PRELOAD failures just warnings.
2013-06-18 13:31:55 -07:00
Colin Cross
bf03f1b4d6 am e421bd71: am 02002443: Merge "bionic: fix deleting property arrays in property benchmark"
* commit 'e421bd71c32e35b8f39f2e51f2d534d2f21f139f':
  bionic: fix deleting property arrays in property benchmark
2013-06-18 13:27:29 -07:00
Nick Kralevich
d98d35c538 am 0846109c: Merge "libc: Rename fortify error functions."
* commit '0846109c96d54a28e413893b0cd4b4acb3aa87fc':
  libc: Rename fortify error functions.
2013-06-18 13:27:18 -07:00
Nick Kralevich
3bf6279034 am dd0880fe: Merge "libc: add limited FORTIFY_SOURCE support for clang"
* commit 'dd0880fec3bb8c998680e78aff9e2ddc2bcf6d7a':
  libc: add limited FORTIFY_SOURCE support for clang
2013-06-18 13:27:17 -07:00
Elliott Hughes
45ef218bde am 6807af77: Merge "Make LD_PRELOAD failures just warnings."
* commit '6807af773f862750efb6860e00402580a5f463f3':
  Make LD_PRELOAD failures just warnings.
2013-06-18 13:27:16 -07:00
Colin Cross
e421bd71c3 am 02002443: Merge "bionic: fix deleting property arrays in property benchmark"
* commit '02002443d4b17de78418d51fc303b4c976ad071a':
  bionic: fix deleting property arrays in property benchmark
2013-06-18 13:23:51 -07:00
Nick Kralevich
ce7c2f28c6 am ba6c021a: am e2fb05b4: Merge "libc: Introduce __errordecl()"
* commit 'ba6c021a53376c75993cc9866deb7c7ff6e1750d':
  libc: Introduce __errordecl()
2013-06-18 13:21:00 -07:00
Nick Kralevich
ba6c021a53 am e2fb05b4: Merge "libc: Introduce __errordecl()"
* commit 'e2fb05b45b9af7b9af8df0ea15bfec63d331d882':
  libc: Introduce __errordecl()
2013-06-18 13:17:35 -07:00
Colin Cross
3b599c1dde am 1a38e063: am 0005b354: Merge "bionic: change properties benchmarks to read a single property"
* commit '1a38e063830924efb8a6d9d7a6135ef54460cb9b':
  bionic: change properties benchmarks to read a single property
2013-06-18 13:07:58 -07:00
Colin Cross
1a38e06383 am 0005b354: Merge "bionic: change properties benchmarks to read a single property"
* commit '0005b3544be345e697592b4dc199ebaa37048559':
  bionic: change properties benchmarks to read a single property
2013-06-18 13:04:10 -07:00
The Android Automerger
cb83bdfa6b merge in master-release history after reset to master 2013-06-18 07:49:19 -07:00
Colin Cross
66a061c8b5 am f6e6e5e7: am 977a3313: Merge changes Iac00ce10,I192d3825
* commit 'f6e6e5e72774e302c461767ca0c194f25502108e':
  bionic: add tests for properties
  bionic: move system property writing from init to bionic
2013-06-17 18:33:50 -07:00
Colin Cross
f6e6e5e727 am 977a3313: Merge changes Iac00ce10,I192d3825
* commit '977a33137d2be0093f474055f839cf665b82b588':
  bionic: add tests for properties
  bionic: move system property writing from init to bionic
2013-06-17 18:21:37 -07:00
Elliott Hughes
9edf071a5d am d2dbf163: am 5995bf88: Merge "don\'t hardcode register r0/v1 when reading the TLS"
* commit 'd2dbf16358bee4777a3e4937cf316fa8bb905559':
  don't hardcode register r0/v1 when reading the TLS
2013-06-17 14:56:04 -07:00
Elliott Hughes
d2dbf16358 am 5995bf88: Merge "don\'t hardcode register r0/v1 when reading the TLS"
* commit '5995bf880e2a7fac249382f0a929b7271c843122':
  don't hardcode register r0/v1 when reading the TLS
2013-06-17 14:53:12 -07:00
Colin Cross
37d9f75dde bionic: add tests for properties
Change-Id: I09b212966f1c9624631653ef2c7a71de78bbbec1
2013-06-17 12:58:18 -07:00
Colin Cross
dc1038b790 bionic: move system property writing from init to bionic
Move the implementation of writing to the system property area
from init to bionic, next to the reader implementation.  This
will allow full property testing to be added to bionic tests.

Add new accessor and waiting functions to hide the implementation
from watchprops and various bionic users.

Also hide some of the implementation details of the property area
from init by moving them into _system_properties.h, and other details
from everybody by moving them into system_properties.h.

Change-Id: I9026e604109e30546b2849b60cab2e7e5ff00ba5
2013-06-17 12:44:34 -07:00
Elliott Hughes
a658ed09e5 am afd4e299: am 657d0da7: Merge "Slight script cleanup; make gensyscalls work from any directory."
* commit 'afd4e2999c3e726498c407fcaf9cccdcd4d24637':
  Slight script cleanup; make gensyscalls work from any directory.
2013-06-17 11:22:01 -07:00
Elliott Hughes
afd4e2999c am 657d0da7: Merge "Slight script cleanup; make gensyscalls work from any directory."
* commit '657d0da7513e01b0eb104c8a8a522c28fdbc807d':
  Slight script cleanup; make gensyscalls work from any directory.
2013-06-17 11:18:58 -07:00
The Android Automerger
31d61f13ab merge in master-release history after reset to master 2013-06-17 07:49:47 -07:00
Chad Brubaker
638503b515 Fix remove_uidiface_info failing on first entry
Change-Id: Ic23506581ff835a6b679e1593eab550a84548056
2013-06-14 15:25:42 -07:00
Elliott Hughes
8f5440c486 am c1e4183c: am 560e9f7e: Merge "Ensure that <stdint.h> defines SIZE_MAX and friends."
* commit 'c1e4183c7ad6943f9cc44fe0b769884370a739cd':
  Ensure that <stdint.h> defines SIZE_MAX and friends.
2013-06-13 18:04:19 -07:00
Elliott Hughes
c1e4183c7a am 560e9f7e: Merge "Ensure that <stdint.h> defines SIZE_MAX and friends."
* commit '560e9f7e7a39e02aca96709043ca06f562f75d58':
  Ensure that <stdint.h> defines SIZE_MAX and friends.
2013-06-13 16:21:55 -07:00
Elliott Hughes
fa3af2dd67 am af975b07: am c843a3e7: Merge "Fix the qsort copyright notice (fixed upstream this afternoon)."
* commit 'af975b076f79b35cb115c0f77fc8fc0e5d3dba67':
  Fix the qsort copyright notice (fixed upstream this afternoon).
2013-06-12 17:51:25 -07:00
Elliott Hughes
af975b076f am c843a3e7: Merge "Fix the qsort copyright notice (fixed upstream this afternoon)."
* commit 'c843a3e7b215bca5e896e1d56c2fa6332770ea83':
  Fix the qsort copyright notice (fixed upstream this afternoon).
2013-06-12 17:46:57 -07:00
Elliott Hughes
050374836f am ddbf561e: am c843d766: Merge "Handles spurious wake-ups in pthread_join()"
* commit 'ddbf561e5ee8f16fc15d26b085d19ce6abf7e4e0':
  Handles spurious wake-ups in pthread_join()
2013-06-12 17:38:26 -07:00
Elliott Hughes
de1b73dd70 am 7ae23868: am 92e841d0: Merge "Take upstream libm changes."
* commit '7ae23868b4741f9b1af874ebbb13ec3ba930d679':
  Take upstream libm changes.
2013-06-12 17:35:02 -07:00
Elliott Hughes
ddbf561e5e am c843d766: Merge "Handles spurious wake-ups in pthread_join()"
* commit 'c843d7667ada205ecbaf773531067076ed4ad271':
  Handles spurious wake-ups in pthread_join()
2013-06-12 17:34:17 -07:00
Elliott Hughes
7ae23868b4 am 92e841d0: Merge "Take upstream libm changes."
* commit '92e841d0aa8d118882a74e3c3fc4b6a6062dcc09':
  Take upstream libm changes.
2013-06-12 17:30:59 -07:00
Elliott Hughes
b0cd876974 am 5065eef8: am 6a44d227: Merge "Take some fixed upstream copyright headers and regenerate NOTICE."
* commit '5065eef801aa78a8a64a016fcf644a6ca91a8133':
  Take some fixed upstream copyright headers and regenerate NOTICE.
2013-06-12 16:23:33 -07:00
Elliott Hughes
5065eef801 am 6a44d227: Merge "Take some fixed upstream copyright headers and regenerate NOTICE."
* commit '6a44d2271f372d0c65b05a5d3377bd00ce92824e':
  Take some fixed upstream copyright headers and regenerate NOTICE.
2013-06-12 16:16:09 -07:00
Elliott Hughes
3267163200 am 5f4d2df2: am 55189a0f: Merge "Switch to current upstream stdio makebuf.c and setvbuf.c."
* commit '5f4d2df2fcddfe62f9e08d1607a8c4e029f01b3d':
  Switch to current upstream stdio makebuf.c and setvbuf.c.
2013-06-12 16:03:49 -07:00
Elliott Hughes
5f4d2df2fc am 55189a0f: Merge "Switch to current upstream stdio makebuf.c and setvbuf.c."
* commit '55189a0fbd26cfd84939d9d3a42a1800a63bd2c5':
  Switch to current upstream stdio makebuf.c and setvbuf.c.
2013-06-12 15:58:41 -07:00
Elliott Hughes
460b70d063 am dc5f5f85: am f1867d47: Merge "Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work.""
* commit 'dc5f5f857c7bf218d33212044539eb73b3fab5f1':
  Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work."
2013-06-12 15:26:46 -07:00
Elliott Hughes
dc5f5f857c am f1867d47: Merge "Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work.""
* commit 'f1867d47cbce4225d712a2684da67031f7350909':
  Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work."
2013-06-12 15:22:04 -07:00
Elliott Hughes
7e06ab5655 am b0a2262c: am 55c5ec64: Merge "Add SIZE_MAX to <stdint.h> in a way that might actually work."
* commit 'b0a2262c3f91085e79c3fd491379e45821254427':
  Add SIZE_MAX to <stdint.h> in a way that might actually work.
2013-06-12 15:11:12 -07:00
Elliott Hughes
b0a2262c3f am 55c5ec64: Merge "Add SIZE_MAX to <stdint.h> in a way that might actually work."
* commit '55c5ec64bd26d92bd1882a9a4c91445de73ebfa2':
  Add SIZE_MAX to <stdint.h> in a way that might actually work.
2013-06-12 15:06:51 -07:00
Elliott Hughes
7ac852fb05 am 3da47942: am 944ea1a3: Merge "Clean up abort."
* commit '3da47942d3fdeb6f39cf84b03c75cfeb69f91449':
  Clean up abort.
2013-06-12 15:02:34 -07:00
Elliott Hughes
3da47942d3 am 944ea1a3: Merge "Clean up abort."
* commit '944ea1a32018c44d6cb55c9454e670b0e152da6d':
  Clean up abort.
2013-06-12 14:58:32 -07:00
Elliott Hughes
1e88a7abca am 834f83de: am 5cde15eb: Merge "<stdint.h> should expose SIZE_MAX."
* commit '834f83de3f3363090385963eef1cd9a053a51a71':
  <stdint.h> should expose SIZE_MAX.
2013-06-12 11:05:18 -07:00
Elliott Hughes
834f83de3f am 5cde15eb: Merge "<stdint.h> should expose SIZE_MAX."
* commit '5cde15eb17f4ddc0949c0cbd38a46e6c0bad7019':
  <stdint.h> should expose SIZE_MAX.
2013-06-12 10:58:23 -07:00
The Android Automerger
2df16acc42 merge in master-release history after reset to master 2013-06-12 07:49:39 -07:00
Nick Kralevich
6d88e4e96b am 26cc1d68: am b6e88020: Merge "fix unittests."
* commit '26cc1d6838c0c4fd18abbf6ea5a38d24aea93893':
  fix unittests.
2013-06-11 16:03:32 -07:00
Nick Kralevich
26cc1d6838 am b6e88020: Merge "fix unittests."
* commit 'b6e880200d1690c00cb843e59c6849a275dbfbb7':
  fix unittests.
2013-06-11 15:56:42 -07:00
The Android Automerger
4a0c222bb1 merge in master-release history after reset to master 2013-06-11 07:49:16 -07:00
Ben Cheng
d20a04c5cf am 77f90de7: am fc104f89: Merge "Fix abort(3) to raise SIGABRT rather than causing SIGSEGV."
* commit '77f90de728b9fa60b83b7f12a45c1113f3189cb2':
  Fix abort(3) to raise SIGABRT rather than causing SIGSEGV.
2013-06-10 17:28:46 -07:00
Ben Cheng
77f90de728 am fc104f89: Merge "Fix abort(3) to raise SIGABRT rather than causing SIGSEGV."
* commit 'fc104f899d47916f76c91127caf9aeaf7b69d4ef':
  Fix abort(3) to raise SIGABRT rather than causing SIGSEGV.
2013-06-10 17:25:31 -07:00
Brian Carlstrom
b181747aa1 am d978d21d: am 8252b8e4: Merge "Honor p_vaddr if set"
* commit 'd978d21d195976fa3f257b8d17ec2fe18fb436a7':
  Honor p_vaddr if set
2013-06-10 15:44:13 -07:00
Brian Carlstrom
d978d21d19 am 8252b8e4: Merge "Honor p_vaddr if set"
* commit '8252b8e4b730b13623f31dc66396e000586d1c58':
  Honor p_vaddr if set
2013-06-10 15:41:19 -07:00
Geremy Condra
72254952e1 Merge "Add clearing of resolv uid and pid interface maps" 2013-06-10 18:45:01 +00:00
The Android Automerger
5074892e0a merge in master-release history after reset to master 2013-06-10 09:52:26 -07:00
Elliott Hughes
efc78bbb9f am 6bcf71c9: am 2fbc9dda: Merge "bionic/x86: Optimization for string routines"
* commit '6bcf71c9ac8395038ca243160d4367759be8dd80':
  bionic/x86: Optimization for string routines
2013-06-07 17:52:16 -07:00
Elliott Hughes
1b14c72420 am fc6f5a08: am 157c4299: Merge "Revert "libc x86: Remove strcat.S""
* commit 'fc6f5a086557f81fce2542b7015268bff697d10c':
  Revert "libc x86: Remove strcat.S"
2013-06-07 17:48:53 -07:00
Elliott Hughes
6bcf71c9ac am 2fbc9dda: Merge "bionic/x86: Optimization for string routines"
* commit '2fbc9dda345486005569be4ec586c6aae9d51650':
  bionic/x86: Optimization for string routines
2013-06-07 17:47:33 -07:00
Elliott Hughes
fc6f5a0865 am 157c4299: Merge "Revert "libc x86: Remove strcat.S""
* commit '157c42997b7aa31b36cca63ad03dbb5a601ce347':
  Revert "libc x86: Remove strcat.S"
2013-06-07 17:44:20 -07:00
Christopher Ferris
b3a7db2dc2 am 83245ba4: am 9647f797: Merge "Implement malloc_usable_size for debug impls."
* commit '83245ba45facf0caff3beb18a27e6604df9094ba':
  Implement malloc_usable_size for debug impls.
2013-06-07 17:36:50 -07:00
Christopher Ferris
83245ba45f am 9647f797: Merge "Implement malloc_usable_size for debug impls."
* commit '9647f797d59222cd91507d4554bf62166ba88e0a':
  Implement malloc_usable_size for debug impls.
2013-06-07 15:16:30 -07:00
Chad Brubaker
87594a32b8 Add clearing of resolv uid and pid interface maps
Cleanup uid interface map variable names

Change-Id: I712dd83276bb23b149af4180515ef33a1bade5ea
2013-06-07 13:03:23 -07:00
Christopher Ferris
3d594c2580 Implement malloc_usable_size for debug impls.
- Implemented chk_memalign.
- Fixed a few bugs in leak_memalign.
- Implemented {leak,fill,check,qemu}_malloc_usable_size.
- Make malloc_usable_size update at run time.
- Add malloc_test.cpp as a small set of tests for the
  malloc debug routines.
- Fix the qemu routines since it's been broken since it moved to C++.
- Add support for the %u format to the out_vformat in libc_logging.cpp.
  This is used by the emulator code.

Tested using the bionic-unit-tests with setprop libc.debug.malloc
set to 1, 5, and 10.

I tested as much as possible on the emulator, but tracing doesn't appear
to be working properly.

Bug: 6143477

Change-Id: Ieba99b58c2228c88d80afd264501004a4dadd212
2013-06-07 12:56:09 -07:00
Geremy Condra
a24d14c05d Merge "Add per UID interface support to resolv cache" 2013-06-06 20:48:44 +00:00
Chad Brubaker
0c9bb49a9d Add per UID interface support to resolv cache
Add methods to attach/detach UID ranges to a specific dns cache/interface.

This mirrors the already existing code for attaching specific processes to
specific interfaces but will be used to push all processes from a given
user to a specific cache/interface.

Change-Id: Ic24391e92d3ca46fcb46cc4fc53e13984dec40b3
2013-06-06 12:31:16 -07:00
Elliott Hughes
b166e699dc am e84cfbef: am b7b4f5b8: Merge "update signal.h to be C90 compatable"
* commit 'e84cfbefd82f552490c580d35a54db4f53b6e5fb':
  update signal.h to be C90 compatable
2013-06-05 18:14:30 -07:00
Elliott Hughes
e51cd6f9c9 am 5a6a0a94: am 18af4503: Merge "Ensure header files using __BEGIN_DECLS include sys/cdefs.h."
* commit '5a6a0a9445d80bf2bd847088921f6d1d99315552':
  Ensure header files using __BEGIN_DECLS include sys/cdefs.h.
2013-06-05 18:11:05 -07:00
Elliott Hughes
e84cfbefd8 am b7b4f5b8: Merge "update signal.h to be C90 compatable"
* commit 'b7b4f5b838cd41407c734af74e8211f5c7da0036':
  update signal.h to be C90 compatable
2013-06-05 18:09:17 -07:00
Elliott Hughes
5a6a0a9445 am 18af4503: Merge "Ensure header files using __BEGIN_DECLS include sys/cdefs.h."
* commit '18af450393b005b4ead896d82cda750e6876fd33':
  Ensure header files using __BEGIN_DECLS include sys/cdefs.h.
2013-06-05 18:06:04 -07:00
Elliott Hughes
0ecb96c3a2 am b9e2dae4: am c5bfb624: Merge "sys/personality.h: include <sys/cdefs.h>"
* commit 'b9e2dae427ef1e1cfdbb3faa1442d4a66a2d3bcd':
  sys/personality.h: include <sys/cdefs.h>
2013-06-05 17:32:20 -07:00
Elliott Hughes
b9e2dae427 am c5bfb624: Merge "sys/personality.h: include <sys/cdefs.h>"
* commit 'c5bfb62433751579e86d5fd24cddf3ae28a49b43':
  sys/personality.h: include <sys/cdefs.h>
2013-06-05 17:29:01 -07:00
Elliott Hughes
bedd8e3de1 am ce208f33: am 8d36050a: Merge "Clean up useless declaration in thread_private.h"
* commit 'ce208f3389769026df02f7aebd85c8f5d3e74c73':
  Clean up useless declaration in thread_private.h
2013-06-05 17:06:50 -07:00
Elliott Hughes
ce208f3389 am 8d36050a: Merge "Clean up useless declaration in thread_private.h"
* commit '8d36050ac2bb1c4a6a04462e64c5440e3c23c9f0':
  Clean up useless declaration in thread_private.h
2013-06-05 17:02:29 -07:00
The Android Automerger
a7b5635e60 merge in master-release history after reset to master 2013-06-05 07:49:30 -07:00
Elliott Hughes
8ed5aec934 am 4b47d9f9: am 4c001859: Merge "Fix declaration of malloc_usable_size()"
* commit '4b47d9f978296e5bb2eaabb8069960eb6f207c80':
  Fix declaration of malloc_usable_size()
2013-06-04 19:02:21 -07:00
Elliott Hughes
4b47d9f978 am 4c001859: Merge "Fix declaration of malloc_usable_size()"
* commit '4c001859feeda27727917c5bd00338e90b801742':
  Fix declaration of malloc_usable_size()
2013-06-04 19:00:03 -07:00
Nick Kralevich
f1b25d0788 am ae533cb1: am a24e81ef: Merge "Add tests for __strcpy_chk()"
* commit 'ae533cb1118be39a3a0587da46fa95bb4d8ee494':
  Add tests for __strcpy_chk()
2013-06-04 12:14:19 -07:00
Nick Kralevich
ae533cb111 am a24e81ef: Merge "Add tests for __strcpy_chk()"
* commit 'a24e81efd30d106cdfa6a019acf7c77cd88b40cc':
  Add tests for __strcpy_chk()
2013-06-04 12:07:16 -07:00
The Android Automerger
680e3f94a0 merge in master-release history after reset to master 2013-06-04 07:49:30 -07:00
Brian Carlstrom
20b0fec8ab am 81bfade8: am 06713930: Merge "Small cleanup of soinfo_elf_lookup."
* commit '81bfade818f1b76cf822f0e7e0862fe61e7c580a':
  Small cleanup of soinfo_elf_lookup.
2013-06-03 20:43:30 -07:00
Brian Carlstrom
81bfade818 am 06713930: Merge "Small cleanup of soinfo_elf_lookup."
* commit '0671393072a78e75a726c58aa3ca718e55eeac3e':
  Small cleanup of soinfo_elf_lookup.
2013-06-03 20:21:04 -07:00
Rom Lemarchand
8ea08d3ff9 Merge "mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps" 2013-06-03 19:40:21 +00:00
The Android Automerger
b472f50057 merge in master-release history after reset to master 2013-06-03 07:49:38 -07:00
Ben Cheng
7ca9057f53 am 72ce296f: am 404d491e: Merge "Use bl instead of blx to support interworking properly."
* commit '72ce296f282803cb026aff5ab180e8a43656612e':
  Use bl instead of blx to support interworking properly.
2013-06-01 09:51:29 -07:00
Ben Cheng
72ce296f28 am 404d491e: Merge "Use bl instead of blx to support interworking properly."
* commit '404d491eb655839bf4260cc168bb79864473e129':
  Use bl instead of blx to support interworking properly.
2013-06-01 08:19:07 -07:00
Ben Cheng
dc1782b156 Merge "Use bl instead of blx to support interworking properly." 2013-05-31 21:36:55 +00:00
Ben Cheng
9e1905794b Use bl instead of blx to support interworking properly.
BUG: 9227177
Change-Id: I742c2f2ecbe332f9c9743e3f4bde8de791a1d289
2013-05-31 14:25:48 -07:00
Nick Kralevich
75c9e17682 am 027a8fae: am 8539961f: Merge "FORTIFY_SOURCE: strcat / strncat optimize"
* commit '027a8fae7750855af2ec0f8dd655e4a48ebf9352':
  FORTIFY_SOURCE: strcat / strncat optimize
2013-05-31 11:21:18 -07:00
Nick Kralevich
027a8fae77 am 8539961f: Merge "FORTIFY_SOURCE: strcat / strncat optimize"
* commit '8539961ff299b05d8feac9be8b119698be22da03':
  FORTIFY_SOURCE: strcat / strncat optimize
2013-05-31 11:14:56 -07:00
Rom Lemarchand
c702a90467 mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps
Reinstate mmap calling madvise(MADV_MERGEABLE) removed in
635df850e5

Change-Id: I290bc5ac6bb32735a3f61dd21e2fce1dfb6dfd4b
Signed-off-by: Rom Lemarchand <romlem@google.com>
2013-05-31 10:05:50 -07:00
Nick Kralevich
b5aa654be6 am d9349abf: am 72f59c84: Merge "Add strncpy FORTIFY_SOURCE tests."
* commit 'd9349abf29506529790abf83cd239b77fa771038':
  Add strncpy FORTIFY_SOURCE tests.
2013-05-30 17:02:01 -07:00
Nick Kralevich
9b7ae336ee am 5630e54c: am d515f468: Merge "libc x86: Remove strcat.S"
* commit '5630e54c3b1a90ee741bbcff129d0c711160ba02':
  libc x86: Remove strcat.S
2013-05-30 17:02:01 -07:00
Nick Kralevich
d9349abf29 am 72f59c84: Merge "Add strncpy FORTIFY_SOURCE tests."
* commit '72f59c84fd73a0a701ce6448d103e9021c1cb060':
  Add strncpy FORTIFY_SOURCE tests.
2013-05-30 16:54:24 -07:00
Nick Kralevich
5630e54c3b am d515f468: Merge "libc x86: Remove strcat.S"
* commit 'd515f46888cf381c1fbbc99a62be727174b30a23':
  libc x86: Remove strcat.S
2013-05-30 16:54:18 -07:00
The Android Automerger
fe09748a5f merge in master-release history after reset to master 2013-05-27 07:50:00 -07:00
Nick Kralevich
3010061a53 am cf342653: am 8d79fd1c: Merge "libc x86: Remove index.S, strcpy.S, strchr.S"
* commit 'cf342653388682c96b3c4eec6a5ed4dbcb6112ef':
  libc x86: Remove index.S, strcpy.S, strchr.S
2013-05-24 13:02:11 -07:00
Nick Kralevich
af5d6029e5 am 080d2aa8: am 2317275f: Merge "libc: delete x86 memchr.S"
* commit '080d2aa8dc0ae318a12f7a424f9bca32b1216791':
  libc: delete x86 memchr.S
2013-05-24 13:02:06 -07:00
Nick Kralevich
cf34265338 am 8d79fd1c: Merge "libc x86: Remove index.S, strcpy.S, strchr.S"
* commit '8d79fd1c94cb021b6852e6f44e27183ec83fe04c':
  libc x86: Remove index.S, strcpy.S, strchr.S
2013-05-24 11:37:30 -07:00
Nick Kralevich
080d2aa8dc am 2317275f: Merge "libc: delete x86 memchr.S"
* commit '2317275f859a685386889139855f2f3314337d53':
  libc: delete x86 memchr.S
2013-05-24 10:43:58 -07:00
The Android Automerger
88cc328c17 merge in master-release history after reset to master 2013-05-22 07:49:33 -07:00
Brian Carlstrom
47b2e046cd am 46bf467a: am f5f29de6: Merge "Fix bionic linker to support segments with zero p_filesz"
* commit '46bf467a151eafaf37f6e3578d8d9bad705b8e44':
  Fix bionic linker to support segments with zero p_filesz
2013-05-21 17:28:40 -07:00
Brian Carlstrom
46bf467a15 am f5f29de6: Merge "Fix bionic linker to support segments with zero p_filesz"
* commit 'f5f29de6ae5a0b74234f111b5691a1e5588671cb':
  Fix bionic linker to support segments with zero p_filesz
2013-05-21 17:23:09 -07:00
The Android Automerger
33cf35317b merge in master-release history after reset to master 2013-05-20 07:49:40 -07:00
Erik Gilling
d5234a3b08 am 4c8eba6f: am 2e317075: Merge "libc/arm: add cortex-a8 cpu variant"
* commit '4c8eba6f2aaf351e29881ca4dc2ec47fc0246446':
  libc/arm: add cortex-a8 cpu variant
2013-05-16 13:20:53 -07:00
Erik Gilling
4c8eba6f2a am 2e317075: Merge "libc/arm: add cortex-a8 cpu variant"
* commit '2e317075b044e94fc75e36d08bec8a7eb5fc31ae':
  libc/arm: add cortex-a8 cpu variant
2013-05-16 13:19:07 -07:00
The Android Open Source Project
0ae3304f83 am 5b75f3bf: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit '5b75f3bfa1a8f380ce213a0088afec7a7901a25b':
2013-05-16 05:44:28 -07:00
The Android Open Source Project
5b75f3bfa1 Reconcile with jb-mr2-release - do not merge
Change-Id: I0839dac295b83f3c5d53d0bb81925b44e3ec17cc
2013-05-16 05:42:53 -07:00
The Android Automerger
231ea5a414 merge in master-release history after reset to master 2013-05-15 07:49:27 -07:00
Elliott Hughes
217c816480 am 0a7fe991: am 5217fb52: Merge "Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX."
* commit '0a7fe991530308fbae9ca033c0045bfc27a7f4c1':
  Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX.
2013-05-14 18:11:57 -07:00
Elliott Hughes
0a7fe99153 am 5217fb52: Merge "Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX."
* commit '5217fb528ca40ece0dbb459dedf7d6fae81dde68':
  Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX.
2013-05-14 18:10:45 -07:00
Elliott Hughes
543f3f0ec4 am 975d4464: am 6f502bc7: Merge "Add more __restricts, clean up __format__ attributes."
* commit '975d4464cef774768cf99a68f3537cfc0678e3f7':
  Add more __restricts, clean up __format__ attributes.
2013-05-14 16:59:34 -07:00
Elliott Hughes
975d4464ce am 6f502bc7: Merge "Add more __restricts, clean up __format__ attributes."
* commit '6f502bc74374804766639e6b1515644875810bda':
  Add more __restricts, clean up __format__ attributes.
2013-05-14 16:56:49 -07:00
Elliott Hughes
940e30cf34 am 20516923: am 349ef893: Merge "Pull upstream FreeBSD revision 249810."
* commit '20516923f59b859f8ca1bfdb3927bc23819ecdb3':
  Pull upstream FreeBSD revision 249810.
2013-05-14 16:26:42 -07:00
Elliott Hughes
20516923f5 am 349ef893: Merge "Pull upstream FreeBSD revision 249810."
* commit '349ef893e82f37632a705f39efc47c0d440f63c7':
  Pull upstream FreeBSD revision 249810.
2013-05-14 16:25:49 -07:00
Elliott Hughes
0128b2c752 am 01678789: am 5b7b2809: Merge "epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events"
* commit '01678789bca18d1a4894ae7f987f847b5ae0ce62':
  epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events
2013-05-14 15:01:33 -07:00
Elliott Hughes
7c7f098995 am 562804ff: am f0f4fa3f: Merge "libc: add timerfd calls"
* commit '562804ff878ede5d0ce0cb0c79ffb9b26777bf76':
  libc: add timerfd calls
2013-05-14 15:01:32 -07:00
Elliott Hughes
d3d014da91 am 31366236: am e1c58ab5: Merge "libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR"
* commit '3136623600a9488859ed7c1681b084ea8315ed50':
  libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR
2013-05-14 15:01:32 -07:00
Elliott Hughes
47e46ed157 am 91cc8014: am 7cb82791: Merge "libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM"
* commit '91cc8014e8cbc5ebfa90708f77f4f319e553a904':
  libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM
2013-05-14 15:01:31 -07:00
Elliott Hughes
01678789bc am 5b7b2809: Merge "epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events"
* commit '5b7b2809a2110dad1b2434f1070e13a08085d94b':
  epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events
2013-05-14 14:59:16 -07:00
Elliott Hughes
562804ff87 am f0f4fa3f: Merge "libc: add timerfd calls"
* commit 'f0f4fa3fb1ea8623b1e1bc59f7967e0470c8e532':
  libc: add timerfd calls
2013-05-14 14:59:16 -07:00
Elliott Hughes
3136623600 am e1c58ab5: Merge "libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR"
* commit 'e1c58ab5bb6284b3e3a2d0e54c295a93780b3f70':
  libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR
2013-05-14 14:59:15 -07:00
Elliott Hughes
91cc8014e8 am 7cb82791: Merge "libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM"
* commit '7cb82791cada0283648fedc316171cbffda79af7':
  libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM
2013-05-14 14:59:15 -07:00
Elliott Hughes
ff5fb5cc4b am 509fc806: am d8a9cccb: Merge "Fix all printf warnings in res_send.c."
* commit '509fc8069757aa6091e044f659f76da0bf59723c':
  Fix all printf warnings in res_send.c.
2013-05-14 11:13:39 -07:00
Elliott Hughes
509fc80697 am d8a9cccb: Merge "Fix all printf warnings in res_send.c."
* commit 'd8a9cccb4d77eecc36425c9240a12bd305031ee3':
  Fix all printf warnings in res_send.c.
2013-05-14 11:10:23 -07:00
The Android Automerger
46fa11a0ae merge in master-release history after reset to master 2013-05-14 07:49:17 -07:00
Todd Poynor
d1ad4f6dab epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events
Change-Id: I4a579fc4a74adaee57911b3974ec2f93d9321e8b
2013-05-13 12:06:36 -07:00
Todd Poynor
04c0ac14a4 libc: add timerfd calls
Change-Id: Id63b907266d5b87c7422a51d393a1430551ca33d
2013-05-13 12:06:15 -07:00
Todd Poynor
60e5144ca3 libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR
Add CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, and CLOCK_MONOTONIC_COARSE
as supported by recent linux kernels.

Bug: 8895727
Change-Id: I3d415a2edbcf2928dd855e876337bf2239ac134a
2013-05-13 11:00:07 -07:00
Todd Poynor
b928bda83d libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM
Change-Id: I3bf934ab207e39b435e6b41a5fbe7eb318496dc0
2013-05-13 11:00:06 -07:00
The Android Automerger
5ff2b9aafd merge in master-release history after reset to master 2013-05-13 07:49:31 -07:00
The Android Automerger
d146e8e4e9 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-05-13 05:55:12 -07:00
Elliott Hughes
a28cb8bd35 am 30d7485d: am 738370d9: Don\'t fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
* commit '30d7485dd30a06e2fb7b8134b6e1a3ecb0ac7ba7':
  Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
2013-05-10 03:06:52 -07:00
Elliott Hughes
30d7485dd3 am 738370d9: Don\'t fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
* commit '738370d9387396922c10910edb61272e585be107':
  Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
2013-05-09 23:40:47 -07:00
Elliott Hughes
a74e6c21e7 am 58f3dbda: am 98f7659d: Merge "Don\'t fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors."
* commit '58f3dbdacd496838661affce358518e0b3a4f7f6':
  Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
2013-05-09 17:56:31 -07:00
Elliott Hughes
58f3dbdacd am 98f7659d: Merge "Don\'t fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors."
* commit '98f7659d7e3a7d75c68a41299f6ee55d7d35c27b':
  Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
2013-05-09 17:53:38 -07:00
Elliott Hughes
738370d938 Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
The GNU dynamic linker silently ignores a DT_PREINIT_ARRAY section
in a shared library. We had ineffectual code that tried to report
an error, which I tried to fix but got wrong --- my version still
wouldn't report the error to the caller, but would prevent us from
continuing to call constructors.

Bug: 8825226

(cherry picked from commit 8147d3c284)

Change-Id: Iad8e7e3743d1a5e6bd1d44ef40b1ab3499cb64f2
2013-05-09 15:53:30 -07:00
Ben Cheng
3c2ab6ffbb am ca54ae44: am 262b7384: Adjust PC value in ARM stack trace.
* commit 'ca54ae44a4c8764028b3092f9f1cfdd619a94fa6':
  Adjust PC value in ARM stack trace.
2013-05-09 09:41:18 -07:00
Ben Cheng
ca54ae44a4 am 262b7384: Adjust PC value in ARM stack trace.
* commit '262b7384e4e691d42070a57472ecc64cf668c480':
  Adjust PC value in ARM stack trace.
2013-05-09 09:37:50 -07:00
The Android Automerger
0d4e9fe58a merge in master-release history after reset to master 2013-05-09 07:49:16 -07:00
Ben Cheng
a078f9dcf0 am 49f6e970: am ff220f70: Merge "Remove a spurious FIXME and unnecessary type cast."
* commit '49f6e9706202b5caef3a68690153a96baa14cab1':
  Remove a spurious FIXME and unnecessary type cast.
2013-05-08 15:04:56 -07:00
Ben Cheng
77a2932836 am 3353e653: am b9256ada: Merge "Adjust PC value in ARM stack trace."
* commit '3353e6535a6964c92c280c36c99e1493befa9dc0':
  Adjust PC value in ARM stack trace.
2013-05-08 15:04:56 -07:00
Nick Kralevich
f8867a5632 am 37cd8800: am d541ba17: Merge "Use restrict pointers for various libc functions."
* commit '37cd8800d532e5901cc3b332bc39d8580f2ba9ab':
  Use restrict pointers for various libc functions.
2013-05-08 15:04:55 -07:00
Ben Cheng
49f6e97062 am ff220f70: Merge "Remove a spurious FIXME and unnecessary type cast."
* commit 'ff220f70036178aa0d7dcf1cbc4825085a84441e':
  Remove a spurious FIXME and unnecessary type cast.
2013-05-08 13:26:12 -07:00
Ben Cheng
3353e6535a am b9256ada: Merge "Adjust PC value in ARM stack trace."
* commit 'b9256adab3aa7e7628d7bbd015132a511de7a43d':
  Adjust PC value in ARM stack trace.
2013-05-08 13:26:11 -07:00
Nick Kralevich
37cd8800d5 am d541ba17: Merge "Use restrict pointers for various libc functions."
* commit 'd541ba17197fd3ef1f60462e51261c4340369218':
  Use restrict pointers for various libc functions.
2013-05-08 13:26:11 -07:00
Ben Cheng
262b7384e4 Adjust PC value in ARM stack trace.
-2 for Thumb BLX(2) or -4 for the rest.

Change-Id: Ie59351a0012c2267309f63f0462fdba4698846fe
2013-05-08 11:21:53 -07:00
The Android Automerger
237ac7be01 merge in master-release history after reset to master 2013-05-06 07:49:08 -07:00
Christopher Ferris
a14f7933f4 Merge "Tune the memcpy for krait." 2013-05-03 23:12:18 +00:00
The Android Automerger
e68c711e78 merge in master-release history after reset to master 2013-05-03 07:49:10 -07:00
Nick Kralevich
f0c9683e17 am c9757ac8: am b01f7afd: Merge "Use __predict_false on some fortify methods."
* commit 'c9757ac81eb48f9cfee0ba7833fed8a3363ecee2':
  Use __predict_false on some fortify methods.
2013-05-02 15:00:41 -07:00
Nick Kralevich
c9757ac81e am b01f7afd: Merge "Use __predict_false on some fortify methods."
* commit 'b01f7afd5fd5df5f8fe925b4fe493269191b62a2':
  Use __predict_false on some fortify methods.
2013-05-02 14:56:37 -07:00
Nick Kralevich
137a9ad176 am 4f614a70: am e4ac8feb: Merge "libc: cleanup strchr"
* commit '4f614a7036b37480695884a4be3f3fe70188cd60':
  libc: cleanup strchr
2013-05-02 14:28:18 -07:00
Nick Kralevich
4f614a7036 am e4ac8feb: Merge "libc: cleanup strchr"
* commit 'e4ac8feb58ed1f963db9a1f32fa74a06a1f594f2':
  libc: cleanup strchr
2013-05-02 14:25:42 -07:00
Christopher Ferris
4d8fe5177e Tune the memcpy for krait.
Streamline the memcpy a bit removing some unnecessary instructions.

The biggest speed improvement comes from changing the size of
the preload. On krait, the sweet spot for the preload in the main
loop is twice the L1 cache line size.

In most cases, these small tweaks yield > 1000MB/s speed ups. As
the size of the memcpy approaches about 1MB, the speed improvement
disappears.

Change-Id: Ief79694d65324e2db41bee4707dae19b8c24be62
2013-05-02 14:04:31 -07:00
The Android Automerger
2a9966da82 merge in master-release history after reset to master 2013-05-02 07:49:13 -07:00
Nick Kralevich
240bc95be1 am 65fe3ea7: am 5e3b502b: Merge "keep test names consistent with other tests."
* commit '65fe3ea708bf16ebaa354080b90b6e6c83a24e70':
  keep test names consistent with other tests.
2013-05-01 15:11:32 -07:00
Nick Kralevich
874ea191de am b9aab3a4: am 8c00c91a: Merge "add strrchr -D_FORTIFY_SOURCE=2 test."
* commit 'b9aab3a462efb79cdae83d9b819e299216f9cf5f':
  add strrchr -D_FORTIFY_SOURCE=2 test.
2013-05-01 15:11:32 -07:00
Nick Kralevich
65fe3ea708 am 5e3b502b: Merge "keep test names consistent with other tests."
* commit '5e3b502b6b56634953ea152409363088974fa5e9':
  keep test names consistent with other tests.
2013-05-01 15:10:07 -07:00
Nick Kralevich
b9aab3a462 am 8c00c91a: Merge "add strrchr -D_FORTIFY_SOURCE=2 test."
* commit '8c00c91aa051f18e107466b5d8c9280a2e1fabc1':
  add strrchr -D_FORTIFY_SOURCE=2 test.
2013-05-01 15:10:07 -07:00
The Android Automerger
33cd3f6848 merge in master-release history after reset to master 2013-05-01 07:49:28 -07:00
Nick Kralevich
6c6949fc00 am 8355ab55: am bee0ab16: Merge "libc: upgrade strrchr to FORTIFY_SOURCE=2"
* commit '8355ab5524557da2737ea9084a8131c1015ae14f':
  libc: upgrade strrchr to FORTIFY_SOURCE=2
2013-04-30 16:30:20 -07:00
Nick Kralevich
8355ab5524 am bee0ab16: Merge "libc: upgrade strrchr to FORTIFY_SOURCE=2"
* commit 'bee0ab16e47086d2f31f6f9ff41328066d5a7128':
  libc: upgrade strrchr to FORTIFY_SOURCE=2
2013-04-30 16:25:23 -07:00
Nick Kralevich
c9bf778112 am 2ff94a09: am c4687130: Merge "libc: upgrade some libc functions to _FORTIFY_SOURCE=2"
* commit '2ff94a096427a5b5e729ae356c98463c9a9dabf1':
  libc: upgrade some libc functions to _FORTIFY_SOURCE=2
2013-04-30 11:57:22 -07:00
Nick Kralevich
2ff94a0964 am c4687130: Merge "libc: upgrade some libc functions to _FORTIFY_SOURCE=2"
* commit 'c46871302e7bd099aaf54d91da93a2248acbf733':
  libc: upgrade some libc functions to _FORTIFY_SOURCE=2
2013-04-30 11:56:08 -07:00
The Android Automerger
3fa53b5978 merge in master-release history after reset to master 2013-04-30 10:23:01 -07:00
Nick Kralevich
d411fbd497 am aed0c3ac: am b94b2851: Merge "libc: upgrade sprintf to _FORTIFY_SOURCE=2"
* commit 'aed0c3ac54fa944b1f8512938277e7dc6b6fa2ee':
  libc: upgrade sprintf to _FORTIFY_SOURCE=2
2013-04-30 08:54:30 -07:00
Nick Kralevich
90a293f7d3 am 56a1b492: am 382a7753: Merge "strncpy: implement _FORTIFY_SOURCE=2"
* commit '56a1b492c40b51204ad1b46a6b46819775c8912a':
  strncpy: implement _FORTIFY_SOURCE=2
2013-04-30 08:54:28 -07:00
Nick Kralevich
780cf25bf4 am 89357dc7: am c6dc62f0: Merge "[NETFILTER]: Fix iptables ABI breakage"
* commit '89357dc730f6bfd532c4aed80373c84904cc3319':
  [NETFILTER]: Fix iptables ABI breakage
2013-04-30 08:46:47 -07:00
Nick Kralevich
aed0c3ac54 am b94b2851: Merge "libc: upgrade sprintf to _FORTIFY_SOURCE=2"
* commit 'b94b2851d72187cc9095864a9c99429ee62d7786':
  libc: upgrade sprintf to _FORTIFY_SOURCE=2
2013-04-29 16:56:29 -07:00
Nick Kralevich
56a1b492c4 am 382a7753: Merge "strncpy: implement _FORTIFY_SOURCE=2"
* commit '382a7753786646483a8101f4e337f9e3a82ec852':
  strncpy: implement _FORTIFY_SOURCE=2
2013-04-29 16:25:41 -07:00
Nick Kralevich
89357dc730 am c6dc62f0: Merge "[NETFILTER]: Fix iptables ABI breakage"
* commit 'c6dc62f09c814b9688aee83e80dcfe80cb0ef604':
  [NETFILTER]: Fix iptables ABI breakage
2013-04-29 12:51:35 -07:00
Andrew Hsieh
cfb0b8bd5e am 83966db8: am f7153fd1: Merge "Remove redundant space within square brackets"
* commit '83966db80b9cccc3417db7566242d30a330cde29':
  Remove redundant space within square brackets
2013-04-25 21:26:46 -07:00
Andrew Hsieh
83966db80b am f7153fd1: Merge "Remove redundant space within square brackets"
* commit 'f7153fd13f469e9ba5aecbfa00fde42530ca2124':
  Remove redundant space within square brackets
2013-04-25 21:22:26 -07:00
Elliott Hughes
b03dc7cfa3 am 9aa57e09: am 9ff1ffd8: Merge "Improve diagnostics in the face of bad tzdata."
* commit '9aa57e09ef7234b6d82ffa4a4889508e64e424b9':
  Improve diagnostics in the face of bad tzdata.
2013-04-25 21:19:48 -07:00
Nick Kralevich
95a46909c7 am ed572aaa: am 5f28fde8: Merge "linker: only re-open std* for setuid programs."
* commit 'ed572aaa0d275eed753afd4b92e05991310e76ac':
  linker: only re-open std* for setuid programs.
2013-04-25 21:19:48 -07:00
Elliott Hughes
9aa57e09ef am 9ff1ffd8: Merge "Improve diagnostics in the face of bad tzdata."
* commit '9ff1ffd805b57160079f42d7eea051c63e0e2bca':
  Improve diagnostics in the face of bad tzdata.
2013-04-25 17:01:42 -07:00
Nick Kralevich
ed572aaa0d am 5f28fde8: Merge "linker: only re-open std* for setuid programs."
* commit '5f28fde8aeee047a70e344c9da937695dc51a3ba':
  linker: only re-open std* for setuid programs.
2013-04-25 17:01:41 -07:00
The Android Automerger
59f27ec089 merge in master-release history after reset to master 2013-04-25 07:49:12 -07:00
The Android Automerger
46de17d26d merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-25 05:55:12 -07:00
Elliott Hughes
baa836baa4 am eb22fc33: am 389b5c1e: Upgrade to tzdata2013c.
* commit 'eb22fc331ed1bff5ee146c252fb4b9fa7f198523':
  Upgrade to tzdata2013c.
2013-04-24 14:28:10 -07:00
Elliott Hughes
eb22fc331e am 389b5c1e: Upgrade to tzdata2013c.
* commit '389b5c1ee52cbf0de4dcdfe266832d251f55db62':
  Upgrade to tzdata2013c.
2013-04-24 14:25:33 -07:00
Elliott Hughes
537e1aa9c6 am b6e895e8: am 87efcd2e: Merge "Don\'t avoid IPv6 when looking for new tzdata."
* commit 'b6e895e80f96301b3921a2ec7327c337ab988b41':
  Don't avoid IPv6 when looking for new tzdata.
2013-04-24 11:01:28 -07:00
Elliott Hughes
b6e895e80f am 87efcd2e: Merge "Don\'t avoid IPv6 when looking for new tzdata."
* commit '87efcd2e63c9f218f476ef88f21e660f9bce633f':
  Don't avoid IPv6 when looking for new tzdata.
2013-04-24 10:58:37 -07:00
Elliott Hughes
389b5c1ee5 Upgrade to tzdata2013c.
From the release notes:

  Changes affecting current and future time stamps:

    Palestine observed DST starting March 29, 2013.  (Thanks to
    Steffen Thorsen.)  From 2013 on, Gaza and Hebron both observe DST,
    with the predicted rules being the last Thursday in March at 24:00
    to the first Friday on or after September 21 at 01:00.

    Assume that the recent change to Paraguay's DST rules is permanent,
    by moving the end of DST to the 4th Sunday in March every year.
    (Thanks to Carlos Raúl Perasso.)

  Changes affecting past time stamps:

    Fix some historical data for Palestine to agree with that of
    timeanddate.com, as follows:

          The spring 2008 change in Gaza and Hebron was on 00:00 Mar 28, not
          00:00 Apr 1.

          The fall 2009 change in Gaza and Hebron on Sep 4 was at 01:00, not
          02:00.

          The spring 2010 change in Hebron was 00:00 Mar 26, not 00:01 Mar 27.

          The spring 2011 change in Gaza was 00:01 Apr 1, not 12:01 Apr 2.

          The spring 2011 change in Hebron on Apr 1 was at 00:01, not 12:01.

          The fall 2011 change in Hebron on Sep 30 was at 00:00, not 03:00.

    Fix times of habitation for Macquarie to agree with the Tasmania
    Parks & Wildlife Service history, which indicates that permanent
    habitation was 1899-1919 and 1948 on.

  Changing affecting metadata only:

    Macquarie Island is politically part of Australia, not Antarctica.
    (Thanks to Tobias Conradi.)

    Sort Macquarie more-consistently with other parts of Australia.
    (Thanks to Tim Parenti.)

(cherry picked from commit 2379088a90)

Change-Id: I77d0ceebdba3489da0069f5792e930adc5810d34
2013-04-23 18:22:31 -07:00
The Android Automerger
70ef50862c merge in master-release history after reset to master 2013-04-23 07:49:08 -07:00
Elliott Hughes
14cbb15b99 am 41dcafc2: am c705daa0: Merge "Disable IPv6 when looking for tzdata updates."
* commit '41dcafc27627dbc79e492056799b3cde4056d412':
  Disable IPv6 when looking for tzdata updates.
2013-04-22 16:57:46 -07:00
Elliott Hughes
41dcafc276 am c705daa0: Merge "Disable IPv6 when looking for tzdata updates."
* commit 'c705daa0a2684d31b8ddc9230e7aa5573880adef':
  Disable IPv6 when looking for tzdata updates.
2013-04-22 16:55:59 -07:00
Elliott Hughes
dd15d3cb28 am dc7e8b89: am 2c60c18c: Merge "Upgrade to tzdata2013c."
* commit 'dc7e8b892db0e997c12a6574ee2468cb3f8a6a2c':
  Upgrade to tzdata2013c.
2013-04-22 12:29:42 -07:00
Elliott Hughes
dc7e8b892d am 2c60c18c: Merge "Upgrade to tzdata2013c."
* commit '2c60c18c505491631a07380f80438fafa80d39f0':
  Upgrade to tzdata2013c.
2013-04-22 12:27:17 -07:00
Elliott Hughes
6180ab7850 am 4f89ab31: am bda2fb5e: Merge "Add signature checking to HTTP tzdata updates."
* commit '4f89ab3166586378d448ca8d5eb4688ab33bb28b':
  Add signature checking to HTTP tzdata updates.
2013-04-22 12:14:04 -07:00
Elliott Hughes
4f89ab3166 am bda2fb5e: Merge "Add signature checking to HTTP tzdata updates."
* commit 'bda2fb5efab914e8442ec9c38961b7182ac5978c':
  Add signature checking to HTTP tzdata updates.
2013-04-22 12:11:48 -07:00
Elliott Hughes
652c68c50e am 9f10e6a9: am 70e0bd3a: Merge "Rename the tzdata update tool, and add HTTP support."
* commit '9f10e6a96afbe85239d18c1cffb560c4f6ae9b4d':
  Rename the tzdata update tool, and add HTTP support.
2013-04-22 11:36:51 -07:00
Elliott Hughes
9f10e6a96a am 70e0bd3a: Merge "Rename the tzdata update tool, and add HTTP support."
* commit '70e0bd3a448fc345d75d16caf40babf36463f0ec':
  Rename the tzdata update tool, and add HTTP support.
2013-04-22 11:34:48 -07:00
The Android Automerger
c689ed1ef7 merge in master-release history after reset to master 2013-04-16 07:49:11 -07:00
Elliott Hughes
9a41d425ea am d23a87d3: am 8c181aa8: Merge "Use hidden visibility for internal-use-only functions"
* commit 'd23a87d3b1c7269a4b55f082555790a3003ba228':
  Use hidden visibility for internal-use-only functions
2013-04-15 11:26:47 -07:00
Elliott Hughes
d23a87d3b1 am 8c181aa8: Merge "Use hidden visibility for internal-use-only functions"
* commit '8c181aa8fe421c62a8e30f4c10e322aca968c27c':
  Use hidden visibility for internal-use-only functions
2013-04-15 11:24:14 -07:00
The Android Automerger
94dcdb0352 merge in master-release history after reset to master 2013-04-15 07:49:20 -07:00
Christopher Ferris
5274339979 am 39e4ed96: am 516a8970: Merge "Rewrite memset for cortexa15 to use strd."
* commit '39e4ed969948fd738d7b670b099c0b2c25351d95':
  Rewrite memset for cortexa15 to use strd.
2013-04-12 12:33:57 -07:00
Elliott Hughes
35a2a61d49 am cf4a5302: am b3c8c4d8: Merge "Switch to current FreeBSD qsort."
* commit 'cf4a53020d85b0017799c31dc41823f9e775a1c5':
  Switch to current FreeBSD qsort.
2013-04-12 12:33:56 -07:00
Christopher Ferris
39e4ed9699 am 516a8970: Merge "Rewrite memset for cortexa15 to use strd."
* commit '516a89705378f43646678e75924529404e52b613':
  Rewrite memset for cortexa15 to use strd.
2013-04-12 12:30:22 -07:00
Elliott Hughes
cf4a53020d am b3c8c4d8: Merge "Switch to current FreeBSD qsort."
* commit 'b3c8c4d8654894cdc72d32bde84a520ccda4d8f3':
  Switch to current FreeBSD qsort.
2013-04-12 12:30:22 -07:00
The Android Automerger
5703eb8007 merge in master-release history after reset to master 2013-04-12 07:49:26 -07:00
Elliott Hughes
a1826f6e59 am 5fe62e50: am ed36d95f: Merge "Start moving to current FreeBSD stdio."
* commit '5fe62e50f61b353657e1cd9cc6b1b1fc02870c9b':
  Start moving to current FreeBSD stdio.
2013-04-11 14:58:37 -07:00
Elliott Hughes
5fe62e50f6 am ed36d95f: Merge "Start moving to current FreeBSD stdio."
* commit 'ed36d95fac5881f78a601e2932f51edfd27c6ba6':
  Start moving to current FreeBSD stdio.
2013-04-11 14:24:37 -07:00
The Android Automerger
651b3e1f9e merge in master-release history after reset to master 2013-04-11 09:22:10 -07:00
The Android Open Source Project
6c48aca345 am ab911a02: Reconcile with jb-mr2-release - do not merge
* commit 'ab911a02af2a5c3977b55cb0994f74635edc7c3a':
2013-04-11 07:47:08 -07:00
The Android Open Source Project
ab911a02af Reconcile with jb-mr2-release - do not merge
Change-Id: I15e9944781325d7a44f0d40ab078aec7723ce9ac
2013-04-11 07:44:55 -07:00
The Android Automerger
637d50e6c0 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-11 05:55:13 -07:00
Elliott Hughes
980d21745c am 76db50dd: am b632857a: Merge "Add missing include and function prototype for sched_getaffinity."
* commit '76db50ddc948541d39bfc351666ba910bd8e6bab':
  Add missing include and function prototype for sched_getaffinity.
2013-04-10 18:22:50 -07:00
Christopher Ferris
b9cfe21c6e am 101dadf6: am fc76c7d3: Merge "Add missing branch in memcpy.S dst aligned case."
* commit '101dadf6a6a689b53f6db809578627448a14bff8':
  Add missing branch in memcpy.S dst aligned case.
2013-04-10 18:22:48 -07:00
Elliott Hughes
76db50ddc9 am b632857a: Merge "Add missing include and function prototype for sched_getaffinity."
* commit 'b632857a50a1fd2b759316d07ace6c36f6f418cf':
  Add missing include and function prototype for sched_getaffinity.
2013-04-10 17:56:22 -07:00
Christopher Ferris
dbc23ea51c resolved conflicts for merge of 3fe5b109 to master
Change-Id: Ifeecc0f8b0935ee1df057e944fc135d5047e248d
2013-04-10 17:54:53 -07:00
Christopher Ferris
101dadf6a6 am fc76c7d3: Merge "Add missing branch in memcpy.S dst aligned case."
* commit 'fc76c7d394ebe0e585777955efadf7cc8ed86636':
  Add missing branch in memcpy.S dst aligned case.
2013-04-10 17:37:49 -07:00
Christopher Ferris
3fe5b10948 am 68fd78ef: Merge "Update to latest cortexa15 memcpy code."
* commit '68fd78efa05fc61adfbdeadeb757caa45663570c':
  Update to latest cortexa15 memcpy code.
2013-04-10 17:37:49 -07:00
Eric Laurent
61735a9069 am 55c015cd: am ccaa0fa6: sound: Add ALSA compressed API headers
* commit '55c015cddd4d8d14e58e7134ae077d637ff5388e':
  sound: Add ALSA compressed API headers
2013-04-10 11:34:31 -07:00
Eric Laurent
55c015cddd am ccaa0fa6: sound: Add ALSA compressed API headers
* commit 'ccaa0fa6e90421831fa589e60f4e7ef6df39bd04':
  sound: Add ALSA compressed API headers
2013-04-10 11:31:08 -07:00
The Android Automerger
7b1d164a4e merge in master-release history after reset to master 2013-04-10 07:49:16 -07:00
Christopher Ferris
e27483c788 Merge "Rewrite memset for cortexa15 to use strd." 2013-04-09 22:58:26 +00:00
Eric Laurent
ccaa0fa6e9 sound: Add ALSA compressed API headers
Added the following headers for ALSA compressed
user space API:
- sound/compress_offload.h
- sound/compress_params.h

Change-Id: I9584c12acdadf31546d2921393b93d491e54a8d3
2013-04-09 09:37:44 -07:00
Christopher Ferris
7ffad9c120 Rewrite memset for cortexa15 to use strd.
Change-Id: Iac3af55f7813bd2b40a41bd19403f2b4dca5224b
2013-04-08 18:48:46 -07:00
The Android Open Source Project
bc37bf00f8 am bb9842b6: Reconcile with jb-mr2-release - do not merge
* commit 'bb9842b61e188ed70cf9bfb0415f2ba8fb406937':
2013-04-08 13:40:28 -07:00
The Android Open Source Project
bb9842b61e Reconcile with jb-mr2-release - do not merge
Change-Id: I562a47cb4eb8222c26aff7652826752825b9a091
2013-04-08 13:35:31 -07:00
The Android Automerger
cad988dafb merge in master-release history after reset to master 2013-04-08 07:49:30 -07:00
The Android Automerger
d4cc0b8a61 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-08 05:55:25 -07:00
Elliott Hughes
8bed98c3ce am fe7f46c0: am 7b4d77e4: Make abort messages available to debuggerd.
* commit 'fe7f46c088f303ea2cb9f6b218cc0f46f5385d43':
  Make abort messages available to debuggerd.
2013-04-05 16:07:15 -07:00
Elliott Hughes
fe7f46c088 am 7b4d77e4: Make abort messages available to debuggerd.
* commit '7b4d77e400d321ccc7cdadd1cd225ebb1a69d358':
  Make abort messages available to debuggerd.
2013-04-05 16:04:13 -07:00
Elliott Hughes
7b4d77e400 Make abort messages available to debuggerd.
This adds __libc_fatal, cleans up the internal logging code a bit more,
and switches suitable callers over to __libc_fatal. In addition to logging,
__libc_fatal stashes the message somewhere that the debuggerd signal handler
can find it before calling abort.

In the debuggerd signal handler, we pass this address to debuggerd so that
it can come back with ptrace to read the message and present it to the user.

Bug: 8531731

(cherry picked from commit 0d787c1fa1)

Change-Id: I5daeeaa36c1fc23f7f437d73a19808d9d558dd4d
2013-04-05 15:57:53 -07:00
Elliott Hughes
f89ce5b518 am 9c7b510a: am 240fb862: Merge "Make abort messages available to debuggerd."
* commit '9c7b510a408740b5b53f8d14b8f43bf2f2d36ae6':
  Make abort messages available to debuggerd.
2013-04-05 11:47:00 -07:00
Elliott Hughes
9c7b510a40 am 240fb862: Merge "Make abort messages available to debuggerd."
* commit '240fb8623b1fe027d0d33a9d4c41d99ceb385b58':
  Make abort messages available to debuggerd.
2013-04-05 11:43:37 -07:00
The Android Automerger
291f5c1e4b merge in master-release history after reset to master 2013-04-04 07:49:14 -07:00
The Android Automerger
ddbe8a23a8 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-04 05:55:10 -07:00
The Android Open Source Project
9207e5aed8 am cd6f4804: Reconcile with jb-mr2-release - do not merge
* commit 'cd6f4804d22a119c1aaf915d70a53924b1666777':
2013-04-03 18:05:26 -07:00
The Android Open Source Project
cd6f4804d2 Reconcile with jb-mr2-release - do not merge
Change-Id: I716c266ad98beb8523f0e4a4a04bbc326388fe93
2013-04-03 16:43:02 -07:00
Elliott Hughes
fbfedc7a7c am 13ab5591: am 014c75c7: Merge "Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a"
* commit '13ab55918a0a114ce1d5c67eeca9c94ce08803ee':
  Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
2013-04-03 12:40:33 -07:00
Elliott Hughes
acec23561e am f5dc9086: am 14c840df: Merge "Fix the SYSCALLS.TXT documentation and remove a dead script."
* commit 'f5dc908695ad4e513504e1a29613d797b95adbf0':
  Fix the SYSCALLS.TXT documentation and remove a dead script.
2013-04-03 12:40:33 -07:00
Kito Cheng
98ac1d64bd am 4bc54686: am 9b84824d: Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
* commit '4bc546860ec36f7ed86ee1a6a7e2bf6db028f02a':
  Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
2013-04-03 12:40:32 -07:00
Elliott Hughes
f3810dbb0a am 57148994: am a69103ff: Fix the SYSCALLS.TXT documentation and remove a dead script.
* commit '57148994df6c3ca0d3c60abe2e1e891e7e12b39c':
  Fix the SYSCALLS.TXT documentation and remove a dead script.
2013-04-03 12:40:31 -07:00
Elliott Hughes
13ab55918a am 014c75c7: Merge "Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a"
* commit '014c75c78bdcad8acde8d0abb2450aa1f78e1a1f':
  Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
2013-04-03 12:37:52 -07:00
Elliott Hughes
f5dc908695 am 14c840df: Merge "Fix the SYSCALLS.TXT documentation and remove a dead script."
* commit '14c840df90bb4fc9935f7e24350e3269b6bd7f17':
  Fix the SYSCALLS.TXT documentation and remove a dead script.
2013-04-03 12:37:51 -07:00
Kito Cheng
4bc546860e am 9b84824d: Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
* commit '9b84824dfd597d8137137fa33295faa26cc70ae0':
  Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
2013-04-03 12:35:49 -07:00
Elliott Hughes
57148994df am a69103ff: Fix the SYSCALLS.TXT documentation and remove a dead script.
* commit 'a69103ffe4b3d55f5bab7e7bfba36ccecddfa4da':
  Fix the SYSCALLS.TXT documentation and remove a dead script.
2013-04-03 12:35:49 -07:00
Kito Cheng
9b84824dfd Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
- eventfd.cpp and eventfd.s will output to the same file when building libc.a
   out/target/product/*/obj/STATIC_LIBRARIES/libc_intermediates/WHOLE/libc_common_objs/eventfd.o
 - And then `eventfd` will undefined when statically linked to libc.

Also add a unit test.

(cherry-pick of 8baa929d5d3bcf63381cf78ba76168c80c303f5e.)

Change-Id: Icd0eb0f4ce0511fb9ec00a504d491afd47d744d3
2013-04-03 11:14:20 -07:00
Elliott Hughes
a69103ffe4 Fix the SYSCALLS.TXT documentation and remove a dead script.
We use the system call constants from the kernel header files now,
so there's no need to check that they've been correctly transcribed
into SYSCALLS.TXT.

This is a work in progress. I've added TODOs to SYSCALLS.TXT explaining
what's left to do.

(cherry-pick of a51916b58b2d211bcf8ffdbe9cf7faa58e57382f.)

Change-Id: I4484acd946b1f548ac3d95327e58add9f98246ab
2013-04-03 11:13:31 -07:00
The Android Automerger
c099884c7c merge in master-release history after reset to master 2013-04-03 07:49:14 -07:00
The Android Automerger
90e19c328f merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-03 06:02:06 -07:00
Elliott Hughes
168486f073 am fe51d25e: am 162b4411: Merge "Stop using unreasonable numbers of map entries."
* commit 'fe51d25e83a8487386c653493e587aa1686503aa':
  Stop using unreasonable numbers of map entries.
2013-04-02 19:25:21 -07:00
Elliott Hughes
a0340cf139 am 40147728: am 1fe11375: Stop using unreasonable numbers of map entries.
* commit '40147728d24a5a85b0ae0ee366b0a3cadb1ea65a':
  Stop using unreasonable numbers of map entries.
2013-04-02 19:25:19 -07:00
Elliott Hughes
fe51d25e83 am 162b4411: Merge "Stop using unreasonable numbers of map entries."
* commit '162b4411fc79fe906020ebdf9e85883237fac8c3':
  Stop using unreasonable numbers of map entries.
2013-04-02 18:05:25 -07:00
Elliott Hughes
40147728d2 am 1fe11375: Stop using unreasonable numbers of map entries.
* commit '1fe1137576a1b7faf2d9bede121cc6faeceb50ff':
  Stop using unreasonable numbers of map entries.
2013-04-02 17:52:20 -07:00
Elliott Hughes
1fe1137576 Stop using unreasonable numbers of map entries.
(cherry-pick of 4ace92c62ada583b220836d76de2cfcb78d4d48d.)

Bug: 8460659
Change-Id: I1a9dc30cbf6a7a2c68cb3d8000921e9178eedb85
2013-04-02 17:48:35 -07:00
Kenny Root
4ea3580749 Merge branch 'master' of https://googleplex-android.googlesource.com/_direct/platform/bionic 2013-04-02 11:06:24 -07:00
Christopher Ferris
5014f417ea Merge "Add missing branch in memcpy.S dst aligned case." 2013-04-02 18:05:54 +00:00
The Android Open Source Project
6517d138fd am cc91c517: Reconcile with jb-mr2-release - do not merge
* commit 'cc91c517bf00431f098b7ca371113dc108071a45':
2013-04-02 11:04:15 -07:00
Lorenzo Colitti
5a3cc2018c am 9ef66e84: am 309e107f: Merge "Update getaddrinfo to RFC6724" into jb-mr2-dev
* commit '9ef66e842f28f58abfbc8458973a2511a055db0c':
  Update getaddrinfo to RFC6724
2013-04-02 11:04:09 -07:00
Christopher Ferris
6ffaa931c3 Add missing branch in memcpy.S dst aligned case.
Change-Id: I0651e46dc5d9b49a997c0c6d099b75097eedb504
2013-04-02 09:19:00 -07:00
The Android Automerger
ea01edd2d4 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-02 09:18:11 -07:00
The Android Automerger
02dc65183b merge in master-release history after reset to master 2013-04-02 09:17:13 -07:00
The Android Open Source Project
cc91c517bf Reconcile with jb-mr2-release - do not merge
Change-Id: Id1d2ab018ca9bc14b36395ae84eb73a120b2befc
2013-04-02 08:39:18 -07:00
Lorenzo Colitti
9ef66e842f am 309e107f: Merge "Update getaddrinfo to RFC6724" into jb-mr2-dev
* commit '309e107f01e13bbe90ba31f2eee5d526ff676222':
  Update getaddrinfo to RFC6724
2013-04-02 08:24:30 -07:00
Christopher Ferris
50bc9395e4 Merge "Update to latest cortexa15 memcpy code." 2013-04-02 02:04:47 +00:00
Elliott Hughes
7506673f63 am 8dd195c5: am 7a29f404: Merge "Update getaddrinfo to RFC6724"
* commit '8dd195c509eed45d1e4b5ab91ddc2ef56fcb0737':
  Update getaddrinfo to RFC6724
2013-04-01 18:21:58 -07:00
Elliott Hughes
8dd195c509 am 7a29f404: Merge "Update getaddrinfo to RFC6724"
* commit '7a29f404e11d3346e79154b8e8d72a3215febced':
  Update getaddrinfo to RFC6724
2013-04-01 18:20:10 -07:00
Lorenzo Colitti
309e107f01 Merge "Update getaddrinfo to RFC6724" into jb-mr2-dev 2013-04-02 00:49:29 +00:00
The Android Automerger
1ec2cf5ba8 merge in master-release history after reset to master 2013-04-01 11:31:26 -07:00
The Android Automerger
a66f6570c1 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-01 05:55:14 -07:00
Lorenzo Colitti
e919b116d3 Update getaddrinfo to RFC6724
Currently, our getaddrinfo implementation does not conform to
any IETF standard. It follows draft-ietf-6man-rfc3484-revise-01,
but that draft has expired. Update the policy table to RFC6724.

Bug: 8276725
Change-Id: I03c63abfcad9b2f3a3bab2718bd2fc6440531843
2013-04-01 19:15:43 +09:00
Christopher Ferris
21ede92d79 Update to latest cortexa15 memcpy code.
This uses the new code original submitted as memcpy.a15.S as
the base. However, the old code handled unaligned src/dst better
so that was spliced in. I optimized the original unaligned code by
removing a few unnecessary instructions. I optimized the a15 code by
rewriting the pre and post code. I also modified the main loop to add
a pld so that larger copies would not stall waiting for memory.

Test cases for the new memcpy:

- Copy all sized values from 0 to 1024 bytes, using whatever alignment
  is returned by malloc.
For each alignment case described below, the test copied from 0 to 128
bytes.
- Src and dst pointers are both aligned to the same value, starting
  at one going through every power of two up to and including 128.
- Src aligned to double word boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to double word boundary.
- Src aligned to 16 bit boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to 16 byte boundary.
- Src aligned to word boundary, dst aligned to 1 byte from a word
  boundary.
- Src aligned to word boundary, dst aligned to 2 bytes from a word
  boundary.
- Src aligned to word boundary, dst aligned to 3 bytes from a word
  boundary.
- Src aligned to 1 byte from a word boundary, dst aligned to a word
  boundary.
- Src aligned to 2 bytes from a word boundary, dst aligned to a word
  boundary.
- Src aligned to 3 bytes from a word boundary, dst aligned to a word
  boundary.

Cases to verify the unaligned source code properly aligns to a 16 bit
boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  4 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  8 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  12 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  16 + 128 bit boundary.

In all cases, a two byte fencepost was placed at the end of the
destination to verify that only the requested number of bytes were copied.

Bug: 8005082
Change-Id: I700b2fab81941959d301ab1934c18fbd8ee3eee4
2013-03-30 14:32:49 -07:00
Elliott Hughes
c099b270c6 am e2bce303: am 96449b3d: Extra logging in pthread_create.
* commit 'e2bce30360a46fa3a235d1e9874d35891673826f':
  Extra logging in pthread_create.
2013-03-29 17:58:38 -07:00
Nick Kralevich
62bb090f8e resolved conflicts for merge of 5b661481 to master
Change-Id: Ifc68a87a95187b61f7f42a0217af43e14db6d4f8
2013-03-29 17:36:52 -07:00
Elliott Hughes
e2bce30360 am 96449b3d: Extra logging in pthread_create.
* commit '96449b3dc16d64ea91df83c9d7942f3e22e76b52':
  Extra logging in pthread_create.
2013-03-29 17:00:51 -07:00
Elliott Hughes
96449b3dc1 Extra logging in pthread_create.
pthread_create returns EAGAIN when it can't allocate a pthread_internal_t,
when it can't allocate a stack for the new thread, or when clone(2) fails
because there are too many threads. It's useful to be able to know why your
pthread_create just failed, so add some logging.

Bug: 8470684

(cherry picked from commit cfa089df23)

Change-Id: Ibfc98a84c1817a931f9ae4c2b88762f0edfb6b79
2013-03-29 16:58:33 -07:00
Elliott Hughes
113054c4eb am e59ecd32: am 6bb17dfa: Merge "Extra logging in pthread_create."
* commit 'e59ecd32798b08e59b4813b3ed8859e5dac5297c':
  Extra logging in pthread_create.
2013-03-29 16:58:02 -07:00
Nick Kralevich
5b661481a8 am b24b6e14: Merge "resolv_cache: hide some libc private functions" into jb-mr2-dev
* commit 'b24b6e1419382146f85571cdda27d48fb348141d':
  resolv_cache: hide some libc private functions
2013-03-29 16:55:20 -07:00
Nick Kralevich
b24b6e1419 Merge "resolv_cache: hide some libc private functions" into jb-mr2-dev 2013-03-29 23:53:40 +00:00
Elliott Hughes
e59ecd3279 am 6bb17dfa: Merge "Extra logging in pthread_create."
* commit '6bb17dfad36edda68da46c2bf68c4297a160ab8a':
  Extra logging in pthread_create.
2013-03-29 16:53:02 -07:00
Nick Kralevich
c01274c4aa resolv_cache: hide some libc private functions
Don't export unnecessary symbols to third party apps.

Bug: 8401049
Change-Id: Ide5abd6ed13e756a85bd1277d93da74d1419addb
2013-03-29 13:56:05 -07:00
The Android Open Source Project
2903a0bac3 am f9e4a6e9: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit 'f9e4a6e93b2d0ca6f2fd01547a04b63a94257a29':
2013-03-29 09:50:35 -07:00
The Android Open Source Project
f9e4a6e93b Reconcile with jb-mr2-release - do not merge
Change-Id: Ie2c8eed6e2ee90bc1d1a59184a503f9dd0dcdc80
2013-03-29 09:48:32 -07:00
The Android Automerger
0f7607f372 merge in master-release history after reset to master 2013-03-28 11:32:29 -07:00
Jean-Baptiste Queru
a3ce0bb1ad am a3de6b47: am d02dd19d: am 267290b3: am 74b324ac: Merge "Update processed linux/fs.h header file"
* commit 'a3de6b47bf444c6efbf386e01e70bc61f9c559de':
  Update processed linux/fs.h header file
2013-03-28 09:02:06 -07:00
Jean-Baptiste Queru
a3de6b47bf am d02dd19d: am 267290b3: am 74b324ac: Merge "Update processed linux/fs.h header file"
* commit 'd02dd19d51fd78c4cfea8be4eaba3df1668910c4':
  Update processed linux/fs.h header file
2013-03-28 09:01:01 -07:00
Jean-Baptiste Queru
d02dd19d51 am 267290b3: am 74b324ac: Merge "Update processed linux/fs.h header file"
* commit '267290b340bee74e5ebbbc60f8c5a9b2a5453957':
  Update processed linux/fs.h header file
2013-03-28 08:59:25 -07:00
Jean-Baptiste Queru
267290b340 am 74b324ac: Merge "Update processed linux/fs.h header file"
* commit '74b324ac09db35d29d16695e9b9c1f0601599812':
  Update processed linux/fs.h header file
2013-03-28 08:57:23 -07:00
The Android Automerger
8398f82ddd merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-28 05:55:13 -07:00
Ken Sumrall
6ed55e06fd am 024f418a: am 887049e4: Merge "Update processed linux/fs.h header file" into jb-mr2-dev
* commit '024f418af284d79e2d307489f33d67b6c564a112':
  Update processed linux/fs.h header file
2013-03-27 14:18:37 -07:00
Ken Sumrall
024f418af2 am 887049e4: Merge "Update processed linux/fs.h header file" into jb-mr2-dev
* commit '887049e46bdd5c14cc00837f959a0195780118a9':
  Update processed linux/fs.h header file
2013-03-27 14:16:47 -07:00
Ken Sumrall
887049e46b Merge "Update processed linux/fs.h header file" into jb-mr2-dev 2013-03-27 21:15:29 +00:00
The Android Open Source Project
416d231f97 am fd59d4d3: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit 'fd59d4d3eaccb9b181f8a2b9c88ffe5060f1e528':
2013-03-26 12:17:40 -07:00
The Android Open Source Project
fd59d4d3ea Reconcile with jb-mr2-release - do not merge
Change-Id: Icad78517674982f0ed6f87a7cc72a4d5b74a519f
2013-03-26 10:49:00 -07:00
The Android Automerger
47a46646f0 merge in master-release history after reset to master 2013-03-26 07:49:18 -07:00
The Android Automerger
6147c2941e merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-26 05:55:11 -07:00
Elliott Hughes
d74b3bb1cb am c813182d: am da2c1586: am 8a6abe38: am bd014c2e: Merge "Remove some dead script code and fix a script comment."
* commit 'c813182d20fa853d944cb9b4dc5c3f1a4d1c7728':
  Remove some dead script code and fix a script comment.
2013-03-25 21:40:33 +00:00
Elliott Hughes
c813182d20 am da2c1586: am 8a6abe38: am bd014c2e: Merge "Remove some dead script code and fix a script comment."
* commit 'da2c158645e10671de990bb71b307d90035320a4':
  Remove some dead script code and fix a script comment.
2013-03-25 21:38:40 +00:00
Elliott Hughes
da2c158645 am 8a6abe38: am bd014c2e: Merge "Remove some dead script code and fix a script comment."
* commit '8a6abe380d2ba513bb714e54a74f4289089cbc18':
  Remove some dead script code and fix a script comment.
2013-03-25 14:36:24 -07:00
Elliott Hughes
8a6abe380d am bd014c2e: Merge "Remove some dead script code and fix a script comment."
* commit 'bd014c2e4246d6e64a6523c73b9a72f379255526':
  Remove some dead script code and fix a script comment.
2013-03-25 14:34:06 -07:00
Elliott Hughes
69684aa312 am 94510371: am 999dff0e: am a850ad4c: am e51d75a9: Merge "Clarify the dlmalloc USAGE_ERROR."
* commit '94510371951bc28f97cdb55df74be26fcebdc1e4':
  Clarify the dlmalloc USAGE_ERROR.
2013-03-25 21:12:59 +00:00
Elliott Hughes
9451037195 am 999dff0e: am a850ad4c: am e51d75a9: Merge "Clarify the dlmalloc USAGE_ERROR."
* commit '999dff0ef3d92c1e84d12d3b8d8324c5ef441b85':
  Clarify the dlmalloc USAGE_ERROR.
2013-03-25 21:10:49 +00:00
Elliott Hughes
999dff0ef3 am a850ad4c: am e51d75a9: Merge "Clarify the dlmalloc USAGE_ERROR."
* commit 'a850ad4cf44e998e24f43df723b6928e42f8294d':
  Clarify the dlmalloc USAGE_ERROR.
2013-03-25 14:05:54 -07:00
Elliott Hughes
a850ad4cf4 am e51d75a9: Merge "Clarify the dlmalloc USAGE_ERROR."
* commit 'e51d75a9acef86008f4d64cf482bbc65e24dc66c':
  Clarify the dlmalloc USAGE_ERROR.
2013-03-25 14:03:38 -07:00
Dima Zavin
e24ec2ad4c am bb06498d: am 369f9234: Merge "libc/arm: add cortex-a7 cpu variant" into jb-mr2-dev
* commit 'bb06498d89dd002a17bad6666276580c94da1749':
  libc/arm: add cortex-a7 cpu variant
2013-03-25 19:44:54 +00:00
Dima Zavin
bb06498d89 am 369f9234: Merge "libc/arm: add cortex-a7 cpu variant" into jb-mr2-dev
* commit '369f92349fc784f6c14ad30f5806f708a8f2c7f7':
  libc/arm: add cortex-a7 cpu variant
2013-03-25 19:43:41 +00:00
Dima Zavin
369f92349f Merge "libc/arm: add cortex-a7 cpu variant" into jb-mr2-dev 2013-03-25 19:42:28 +00:00
Elliott Hughes
7a7d39c3f0 am c538edc1: am c82b339a: am 3c1504d9: am 48f25cef: Merge "Stop generating <sys/linux-syscalls.h>."
* commit 'c538edc1e85b7df35852cf9fbc472b29683fc4a3':
  Stop generating <sys/linux-syscalls.h>.
2013-03-25 17:31:28 +00:00
Elliott Hughes
263be8b1a0 am 053ceea1: am 9386a33e: am 93f3811b: am a4075118: Merge "Unhide __set_errno for backwards compatibility."
* commit '053ceea1172a399b9fddf0ab010cff535c65be0e':
  Unhide __set_errno for backwards compatibility.
2013-03-25 17:31:27 +00:00
Elliott Hughes
c538edc1e8 am c82b339a: am 3c1504d9: am 48f25cef: Merge "Stop generating <sys/linux-syscalls.h>."
* commit 'c82b339a7da4dc36e644f5037c3868155fe454e4':
  Stop generating <sys/linux-syscalls.h>.
2013-03-25 17:29:11 +00:00
Elliott Hughes
053ceea117 am 9386a33e: am 93f3811b: am a4075118: Merge "Unhide __set_errno for backwards compatibility."
* commit '9386a33ea005fc008ff7ce0558d24e5ac68a6430':
  Unhide __set_errno for backwards compatibility.
2013-03-25 17:29:10 +00:00
Elliott Hughes
c82b339a7d am 3c1504d9: am 48f25cef: Merge "Stop generating <sys/linux-syscalls.h>."
* commit '3c1504d9d7d529b8281a447dc69af3ecf6b5ec83':
  Stop generating <sys/linux-syscalls.h>.
2013-03-25 10:24:42 -07:00
Elliott Hughes
9386a33ea0 am 93f3811b: am a4075118: Merge "Unhide __set_errno for backwards compatibility."
* commit '93f3811b744b2100d0f259916876965c242cd3d9':
  Unhide __set_errno for backwards compatibility.
2013-03-25 10:24:42 -07:00
Elliott Hughes
3c1504d9d7 am 48f25cef: Merge "Stop generating <sys/linux-syscalls.h>."
* commit '48f25cef45f8f68567d528a5d833ed45cb760bec':
  Stop generating <sys/linux-syscalls.h>.
2013-03-25 10:22:43 -07:00
Elliott Hughes
93f3811b74 am a4075118: Merge "Unhide __set_errno for backwards compatibility."
* commit 'a40751185f3a7245f73afb45382c23f71dbbcfc3':
  Unhide __set_errno for backwards compatibility.
2013-03-25 10:22:43 -07:00
The Android Automerger
a500fdb18e merge in master-release history after reset to master 2013-03-25 07:49:24 -07:00
The Android Automerger
af66ca6b19 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-25 05:55:24 -07:00
Dima Zavin
0c973d7049 libc/arm: add cortex-a7 cpu variant
Change-Id: I541d665805ea69ca96bb6a5f4d50e56287f8c08c
Signed-off-by: Dima Zavin <dima@android.com>
2013-03-23 01:38:22 -07:00
Elliott Hughes
4584721b5a am 9792b2d1: am ba61bb55: am a3fe475c: am c019345a: Merge "Use the correct names for the __ARM_NR_* syscalls."
* commit '9792b2d16062c3fa334a47501a1cde9bfbedb5c2':
  Use the correct names for the __ARM_NR_* syscalls.
2013-03-22 22:13:44 +00:00
Elliott Hughes
9792b2d160 am ba61bb55: am a3fe475c: am c019345a: Merge "Use the correct names for the __ARM_NR_* syscalls."
* commit 'ba61bb55c4f3d468dd93bedc3deb24a0ef28a948':
  Use the correct names for the __ARM_NR_* syscalls.
2013-03-22 22:12:16 +00:00
Elliott Hughes
ba61bb55c4 am a3fe475c: am c019345a: Merge "Use the correct names for the __ARM_NR_* syscalls."
* commit 'a3fe475c9ff444f45eb3c4dd7fd462326dfdb13d':
  Use the correct names for the __ARM_NR_* syscalls.
2013-03-22 15:09:13 -07:00
Elliott Hughes
a3fe475c9f am c019345a: Merge "Use the correct names for the __ARM_NR_* syscalls."
* commit 'c019345a3a0f3ee8561e595917b75d6419ee4cc8':
  Use the correct names for the __ARM_NR_* syscalls.
2013-03-22 15:07:06 -07:00
Elliott Hughes
cf3fc45376 am dce1b3e2: am e0e5b2f6: am 65163750: am c37dd599: Merge "Fix builds where _FORTIFY_SOURCE is off."
* commit 'dce1b3e26a9f85fcc9a768cc69919299fcb2b5a5':
  Fix builds where _FORTIFY_SOURCE is off.
2013-03-22 18:26:45 +00:00
Elliott Hughes
dce1b3e26a am e0e5b2f6: am 65163750: am c37dd599: Merge "Fix builds where _FORTIFY_SOURCE is off."
* commit 'e0e5b2f6e731c639107e29abec17db2e6eb498e8':
  Fix builds where _FORTIFY_SOURCE is off.
2013-03-22 18:24:53 +00:00
Elliott Hughes
e0e5b2f6e7 am 65163750: am c37dd599: Merge "Fix builds where _FORTIFY_SOURCE is off."
* commit '65163750b11c814d6a75940ab1ede1e907b14d81':
  Fix builds where _FORTIFY_SOURCE is off.
2013-03-22 11:20:22 -07:00
Elliott Hughes
65163750b1 am c37dd599: Merge "Fix builds where _FORTIFY_SOURCE is off."
* commit 'c37dd599561ac07a895bc435d818f000054a498d':
  Fix builds where _FORTIFY_SOURCE is off.
2013-03-22 11:18:26 -07:00
Elliott Hughes
749a9e022c am fbb41988: am b826ebf4: am 85598626: am 34895c1b: Merge "Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'fbb4198857374b816a6c444a52cb3209101e02c9':
  Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 18:17:51 +00:00
Elliott Hughes
fbb4198857 am b826ebf4: am 85598626: am 34895c1b: Merge "Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'b826ebf41e701d0d73be2897cecd560606193bd2':
  Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 18:15:47 +00:00
Elliott Hughes
b826ebf41e am 85598626: am 34895c1b: Merge "Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit '85598626f4ca7914d996371ce0471ab154aa7585':
  Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 11:11:34 -07:00
Elliott Hughes
85598626f4 am 34895c1b: Merge "Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit '34895c1bdfa5df48ee9a7b4368b6def403f24cf1':
  Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 10:59:57 -07:00
Elliott Hughes
74c7d3ff03 am f30ff61e: am b44f9600: am b80a05fa: am 5c5f303e: Merge "Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'f30ff61ef61f3d8b73257e89e4635fc1436f4bbc':
  Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 16:47:49 +00:00
Elliott Hughes
90763e0aee am f0fc7b9b: am a0dcecc5: am bc0d7f73: am e7cb795c: Merge "Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'f0fc7b9bf93029e2e0e2a21ac037d14c7f4db7a2':
  Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 16:47:48 +00:00
Elliott Hughes
f30ff61ef6 am b44f9600: am b80a05fa: am 5c5f303e: Merge "Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'b44f9600a38988749d9f893fc5d2e3b3a07e6938':
  Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 16:45:18 +00:00
Elliott Hughes
f0fc7b9bf9 am a0dcecc5: am bc0d7f73: am e7cb795c: Merge "Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'a0dcecc53e2f45939fdcb0f1ec1d592d91cf41c7':
  Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 16:45:18 +00:00
Elliott Hughes
b44f9600a3 am b80a05fa: am 5c5f303e: Merge "Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'b80a05fa678b287f46dc596353d285a9a7d09fbc':
  Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 09:43:28 -07:00
Elliott Hughes
a0dcecc53e am bc0d7f73: am e7cb795c: Merge "Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'bc0d7f736c2c66868844f2b5c9e6507d3e7a7982':
  Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 09:43:28 -07:00
Elliott Hughes
b80a05fa67 am 5c5f303e: Merge "Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit '5c5f303e4c661a71ae8e4c7fd99fc7674360321e':
  Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 09:41:46 -07:00
Elliott Hughes
bc0d7f736c am e7cb795c: Merge "Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'e7cb795cb639ef4e04b0417ebf4b16b12ea5dc4e':
  Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 09:41:46 -07:00
The Android Automerger
847a62270f merge in master-release history after reset to master 2013-03-22 07:49:16 -07:00
Ken Sumrall
d74a0ffba8 Update processed linux/fs.h header file
Need to get the defintion of the FITRIM ioctl().  Also need
to update the blk_types.h header file as fs.h includes it.

Change-Id: I617622b620925942dc5aead9e49f8e17d17e5d74
2013-03-22 02:12:46 -07:00
Elliott Hughes
1d509cc043 am 472d7115: am ddda044a: am 5686bb30: am 3323628d: Merge "The SYS_ constants should cover all __NR_ values."
* commit '472d7115f1ec8968b645d72d18222687d39f189e':
  The SYS_ constants should cover all __NR_ values.
2013-03-22 05:57:05 +00:00
Elliott Hughes
472d7115f1 am ddda044a: am 5686bb30: am 3323628d: Merge "The SYS_ constants should cover all __NR_ values."
* commit 'ddda044a81b6be2ccdf351ad5c9a2b9800a60f5f':
  The SYS_ constants should cover all __NR_ values.
2013-03-22 05:55:47 +00:00
Elliott Hughes
ddda044a81 am 5686bb30: am 3323628d: Merge "The SYS_ constants should cover all __NR_ values."
* commit '5686bb300304f5de0597f356c6da72b8a090a647':
  The SYS_ constants should cover all __NR_ values.
2013-03-21 22:54:49 -07:00
Elliott Hughes
5686bb3003 am 3323628d: Merge "The SYS_ constants should cover all __NR_ values."
* commit '3323628d635d3973965ee458c1fee7d8ab45136f':
  The SYS_ constants should cover all __NR_ values.
2013-03-21 22:53:44 -07:00
Elliott Hughes
731381ad5f am dfde829f: am c8ded7c6: am a3167257: am babb72dc: Merge "Fix pthread_setname_np\'s behavior on invalid pthread_ts."
* commit 'dfde829fc1c97fe3fbdaf244d2444562b7c2fbfe':
  Fix pthread_setname_np's behavior on invalid pthread_ts.
2013-03-22 05:25:17 +00:00
Elliott Hughes
dfde829fc1 am c8ded7c6: am a3167257: am babb72dc: Merge "Fix pthread_setname_np\'s behavior on invalid pthread_ts."
* commit 'c8ded7c6b1b95ca530383b9698719892d13a4f9e':
  Fix pthread_setname_np's behavior on invalid pthread_ts.
2013-03-22 05:24:12 +00:00
Elliott Hughes
c8ded7c6b1 am a3167257: am babb72dc: Merge "Fix pthread_setname_np\'s behavior on invalid pthread_ts."
* commit 'a316725740ac123de65e225f5bfbf99450f66e6b':
  Fix pthread_setname_np's behavior on invalid pthread_ts.
2013-03-21 22:22:49 -07:00
Elliott Hughes
a316725740 am babb72dc: Merge "Fix pthread_setname_np\'s behavior on invalid pthread_ts."
* commit 'babb72dc292a567674f6d7d2ccf7f63edaf77b80':
  Fix pthread_setname_np's behavior on invalid pthread_ts.
2013-03-21 22:20:53 -07:00
Elliott Hughes
bd43b613b8 am 3a6178f8: am 1e40ace4: am a596aa6a: am 26c815c4: Merge "Drop magic number in strrchr and strchr"
* commit '3a6178f8b9498ece5383fac9feb692e8ed2d4ce0':
  Drop magic number in strrchr and strchr
2013-03-22 03:03:15 +00:00
Elliott Hughes
06a06d5091 am 71afd315: am 17a0d191: am 01c0e19e: am 612333f6: Merge "Don\'t #define SYS_ constants unless they make sense for the current architecture."
* commit '71afd3153544a2795fcb74c86fd895df59aa5feb':
  Don't #define SYS_ constants unless they make sense for the current architecture.
2013-03-22 03:03:15 +00:00
Elliott Hughes
3a6178f8b9 am 1e40ace4: am a596aa6a: am 26c815c4: Merge "Drop magic number in strrchr and strchr"
* commit '1e40ace49e25ee4c469ed4613fe09656d3c0a5d7':
  Drop magic number in strrchr and strchr
2013-03-22 03:00:36 +00:00
Elliott Hughes
71afd31535 am 17a0d191: am 01c0e19e: am 612333f6: Merge "Don\'t #define SYS_ constants unless they make sense for the current architecture."
* commit '17a0d1915f871ad67608a582a4fb3352000cf719':
  Don't #define SYS_ constants unless they make sense for the current architecture.
2013-03-22 03:00:35 +00:00
Elliott Hughes
1e40ace49e am a596aa6a: am 26c815c4: Merge "Drop magic number in strrchr and strchr"
* commit 'a596aa6abfdd8ecdb4bcdd9bcad24a19adcf7525':
  Drop magic number in strrchr and strchr
2013-03-21 19:58:23 -07:00
Elliott Hughes
17a0d1915f am 01c0e19e: am 612333f6: Merge "Don\'t #define SYS_ constants unless they make sense for the current architecture."
* commit '01c0e19e426df5620c5ca822ab546907dbf1fa7d':
  Don't #define SYS_ constants unless they make sense for the current architecture.
2013-03-21 19:58:22 -07:00
Elliott Hughes
a596aa6abf am 26c815c4: Merge "Drop magic number in strrchr and strchr"
* commit '26c815c489197259e3692d4a1e35463989f7c7a3':
  Drop magic number in strrchr and strchr
2013-03-21 19:56:39 -07:00
Elliott Hughes
01c0e19e42 am 612333f6: Merge "Don\'t #define SYS_ constants unless they make sense for the current architecture."
* commit '612333f671a59d98fad6f594f5bf657dbd6c9c4d':
  Don't #define SYS_ constants unless they make sense for the current architecture.
2013-03-21 19:56:38 -07:00
Elliott Hughes
2810ec5464 am 5bed5501: am 3077d883: am c48968d2: am 4453c51c: Merge "Drop unnecessary execution permission for .cpp/.c/.h"
* commit '5bed5501d7048acc77f5365e87fd8487b21ef1f6':
  Drop unnecessary execution permission for .cpp/.c/.h
2013-03-22 02:43:23 +00:00
Elliott Hughes
5bed5501d7 am 3077d883: am c48968d2: am 4453c51c: Merge "Drop unnecessary execution permission for .cpp/.c/.h"
* commit '3077d88347f4b120ee93e73efdbfb017e0e968ec':
  Drop unnecessary execution permission for .cpp/.c/.h
2013-03-22 02:42:02 +00:00
Elliott Hughes
3077d88347 am c48968d2: am 4453c51c: Merge "Drop unnecessary execution permission for .cpp/.c/.h"
* commit 'c48968d268820ee64986f738e227910b29290eab':
  Drop unnecessary execution permission for .cpp/.c/.h
2013-03-21 19:40:15 -07:00
Elliott Hughes
c48968d268 am 4453c51c: Merge "Drop unnecessary execution permission for .cpp/.c/.h"
* commit '4453c51c8269457b337578f809670d0fdb755132':
  Drop unnecessary execution permission for .cpp/.c/.h
2013-03-21 19:38:53 -07:00
Elliott Hughes
b11037a42a am 455637f2: am 5c9a25cc: am f977d2dc: am 800ad824: Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants."
* commit '455637f25180709f7baf261715873f4a0109583c':
  Provide glibc-compatible SYS_* aliases for the __NR_* constants.
2013-03-22 01:55:26 +00:00
Elliott Hughes
455637f251 am 5c9a25cc: am f977d2dc: am 800ad824: Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants."
* commit '5c9a25cc2369846f7cf7f4fe1bdb32cf3dc8a469':
  Provide glibc-compatible SYS_* aliases for the __NR_* constants.
2013-03-22 01:54:20 +00:00
Elliott Hughes
5c9a25cc23 am f977d2dc: am 800ad824: Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants."
* commit 'f977d2dc1dce28a517329e8b4990ebee696faec1':
  Provide glibc-compatible SYS_* aliases for the __NR_* constants.
2013-03-21 18:51:51 -07:00
Elliott Hughes
f977d2dc1d am 800ad824: Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants."
* commit '800ad8249a398e94d039b6f6597e2a51558e41dd':
  Provide glibc-compatible SYS_* aliases for the __NR_* constants.
2013-03-21 18:49:24 -07:00
Elliott Hughes
a2e42c3798 am 6d460efe: am c9edc079: am 39e2a408: am 6eb978c9: Merge "Expose wait4 as wait4 rather than __wait4."
* commit '6d460efed94e3d5825b5c842c112aa6b26357d93':
  Expose wait4 as wait4 rather than __wait4.
2013-03-21 23:25:38 +00:00
Elliott Hughes
6d460efed9 am c9edc079: am 39e2a408: am 6eb978c9: Merge "Expose wait4 as wait4 rather than __wait4."
* commit 'c9edc0797779187ad1b429e956820928051047ae':
  Expose wait4 as wait4 rather than __wait4.
2013-03-21 23:23:46 +00:00
Elliott Hughes
c9edc07977 am 39e2a408: am 6eb978c9: Merge "Expose wait4 as wait4 rather than __wait4."
* commit '39e2a408a64bd24fb0fe7f5eb444b55af1160480':
  Expose wait4 as wait4 rather than __wait4.
2013-03-21 16:19:29 -07:00
Elliott Hughes
39e2a408a6 am 6eb978c9: Merge "Expose wait4 as wait4 rather than __wait4."
* commit '6eb978c9bf02d2bcdece2826577cc65900030690':
  Expose wait4 as wait4 rather than __wait4.
2013-03-21 16:18:22 -07:00
The Android Automerger
3e036b0c99 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-21 05:55:07 -07:00
Christopher Ferris
e269711a1b am 774266bf: am f46e1454: am 9088af19: am 86c31849: Merge "Create arch specific versions of strcmp."
* commit '774266bfa281880e16c2447555177c037575cdaf':
  Create arch specific versions of strcmp.
2013-03-20 22:40:13 +00:00
Christopher Ferris
774266bfa2 am f46e1454: am 9088af19: am 86c31849: Merge "Create arch specific versions of strcmp."
* commit 'f46e14544b446e6dbc241aabb8090cd8e62c158d':
  Create arch specific versions of strcmp.
2013-03-20 22:37:58 +00:00
Christopher Ferris
f46e14544b am 9088af19: am 86c31849: Merge "Create arch specific versions of strcmp."
* commit '9088af19b45d1b7339b982c92ef9113337f5d2c6':
  Create arch specific versions of strcmp.
2013-03-20 15:33:54 -07:00
Christopher Ferris
9088af19b4 am 86c31849: Merge "Create arch specific versions of strcmp."
* commit '86c318497270c80a3791b4cd9835367653636377':
  Create arch specific versions of strcmp.
2013-03-20 15:29:06 -07:00
The Android Open Source Project
fd56f2a3cc am bad0c4d8: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit 'bad0c4d8bb85d91affb7274022f671b40b0a9305':
  am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
2013-03-20 16:42:00 +00:00
The Android Open Source Project
bad0c4d8bb Reconcile with jb-mr2-release - do not merge
Change-Id: I9358f7d5fb867340fa18195fbbd6394c4ad53fce
2013-03-20 09:32:10 -07:00
The Android Automerger
1565771b2a merge in master-release history after reset to master 2013-03-18 07:49:11 -07:00
The Android Automerger
ed12f36a09 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-18 05:55:24 -07:00
Elliott Hughes
6380d21a05 am 92a197f3: am d7dc414a: am 987fc5a3: am adeec096: Merge "Hide various symbols that shouldn\'t be exposed."
* commit '92a197f3051c5befd5e40ec7f23c0643999da259':
  Hide various symbols that shouldn't be exposed.
2013-03-16 00:11:52 +00:00
Elliott Hughes
92a197f305 am d7dc414a: am 987fc5a3: am adeec096: Merge "Hide various symbols that shouldn\'t be exposed."
* commit 'd7dc414afd1847e76ae317880bcedc9678953f9e':
  Hide various symbols that shouldn't be exposed.
2013-03-16 00:10:24 +00:00
Elliott Hughes
d7dc414afd am 987fc5a3: am adeec096: Merge "Hide various symbols that shouldn\'t be exposed."
* commit '987fc5a3c4046831dc9e6c252e99a9c694bbd9ee':
  Hide various symbols that shouldn't be exposed.
2013-03-15 17:09:17 -07:00
Elliott Hughes
987fc5a3c4 am adeec096: Merge "Hide various symbols that shouldn\'t be exposed."
* commit 'adeec096292a3ad63767f13af04836249ecbc075':
  Hide various symbols that shouldn't be exposed.
2013-03-15 17:07:45 -07:00
Elliott Hughes
90f7546c68 am cf23cbb1: am 12ea8005: am 5f829205: am c1416647: Merge "Clean up internal libc logging."
* commit 'cf23cbb1d4826ac579fae28e4fe796a6e4e1ddfd':
  Clean up internal libc logging.
2013-03-15 23:43:01 +00:00
Elliott Hughes
cf23cbb1d4 am 12ea8005: am 5f829205: am c1416647: Merge "Clean up internal libc logging."
* commit '12ea8005665085ae82c1b233ae93d12855e04b8b':
  Clean up internal libc logging.
2013-03-15 23:40:15 +00:00
Elliott Hughes
12ea800566 am 5f829205: am c1416647: Merge "Clean up internal libc logging."
* commit '5f8292050fc07f4bf9e70f37a807ad028e3cfc87':
  Clean up internal libc logging.
2013-03-15 16:36:37 -07:00
Elliott Hughes
5f8292050f am c1416647: Merge "Clean up internal libc logging."
* commit 'c14166477e7fd22693eab194d37624c2f7506ce4':
  Clean up internal libc logging.
2013-03-15 16:34:05 -07:00
Elliott Hughes
744df77d47 am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit '2e7b8d6399fdea6e43dd07f353346324d2bf4ec4':
  Don't search off the end of the index for bad Olson ids.
2013-03-15 12:56:32 -07:00
Elliott Hughes
cc71361ed6 am 270595f4: am e1b0db13: am 50d42294: am e23ed8c6: Merge "Remove useless workaround for HTC RIL bugs."
* commit '270595f4c976a86033ac099a283299c2ec53f24a':
  Remove useless workaround for HTC RIL bugs.
2013-03-15 18:49:50 +00:00
Elliott Hughes
270595f4c9 am e1b0db13: am 50d42294: am e23ed8c6: Merge "Remove useless workaround for HTC RIL bugs."
* commit 'e1b0db1392050900e1f38b16ec2c8e213308e267':
  Remove useless workaround for HTC RIL bugs.
2013-03-15 18:47:48 +00:00
Elliott Hughes
e1b0db1392 am 50d42294: am e23ed8c6: Merge "Remove useless workaround for HTC RIL bugs."
* commit '50d42294bdc983e05eca0fb0099bbb9f634fd5e3':
  Remove useless workaround for HTC RIL bugs.
2013-03-15 11:46:05 -07:00
Elliott Hughes
50d42294bd am e23ed8c6: Merge "Remove useless workaround for HTC RIL bugs."
* commit 'e23ed8c6441389a79c6504295184f7249e01a197':
  Remove useless workaround for HTC RIL bugs.
2013-03-15 11:43:50 -07:00
The Android Automerger
9d6a2c28a5 merge in master-release history after reset to master 2013-03-15 07:49:25 -07:00
Elliott Hughes
045e01caed am c204b501: am 9ede4549: am f8d689bc: am 4d696eb4: Merge "Fix a bug in ZoneCompactor that meant the zonetab offset was wrong."
* commit 'c204b501f44d7b08e2be06693322d5426b3f85ef':
  Fix a bug in ZoneCompactor that meant the zonetab offset was wrong.
2013-03-15 00:45:09 +00:00
Elliott Hughes
c204b501f4 am 9ede4549: am f8d689bc: am 4d696eb4: Merge "Fix a bug in ZoneCompactor that meant the zonetab offset was wrong."
* commit '9ede4549fe083e54cdf2f34b177fc32777f61fac':
  Fix a bug in ZoneCompactor that meant the zonetab offset was wrong.
2013-03-15 00:44:05 +00:00
Elliott Hughes
9ede4549fe am f8d689bc: am 4d696eb4: Merge "Fix a bug in ZoneCompactor that meant the zonetab offset was wrong."
* commit 'f8d689bc56976f8bd37b306053154a0e9d17fb1d':
  Fix a bug in ZoneCompactor that meant the zonetab offset was wrong.
2013-03-14 17:42:42 -07:00
Elliott Hughes
f8d689bc56 am 4d696eb4: Merge "Fix a bug in ZoneCompactor that meant the zonetab offset was wrong."
* commit '4d696eb49d24590a6d6d25657b5bc0103e2d90ba':
  Fix a bug in ZoneCompactor that meant the zonetab offset was wrong.
2013-03-14 17:40:26 -07:00
Christopher Ferris
18fcfa79d3 am 8dcbb90d: am f85fc022: am f694ed1c: am d30b9f09: Merge "Remove unused arm defines."
* commit '8dcbb90dea22a876d9cc517f382bb82c98d87450':
  Remove unused arm defines.
2013-03-14 23:43:26 +00:00
Christopher Ferris
8dcbb90dea am f85fc022: am f694ed1c: am d30b9f09: Merge "Remove unused arm defines."
* commit 'f85fc022f5ad405a7e43ecb6f48bcc6e061e01b5':
  Remove unused arm defines.
2013-03-14 23:40:36 +00:00
Christopher Ferris
f85fc022f5 am f694ed1c: am d30b9f09: Merge "Remove unused arm defines."
* commit 'f694ed1cdbfd2d26cdc2a008b67bfd3451522c8f':
  Remove unused arm defines.
2013-03-14 16:36:45 -07:00
Christopher Ferris
f694ed1cdb am d30b9f09: Merge "Remove unused arm defines."
* commit 'd30b9f0912b4763f0d98bdee23064015223ec03f':
  Remove unused arm defines.
2013-03-14 16:32:21 -07:00
Elliott Hughes
4982e345cf am 2d48d0ea: am c9358706: am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit '2d48d0ea36395da9af4537195483b006900bf7bd':
  Don't search off the end of the index for bad Olson ids.
2013-03-14 22:35:28 +00:00
Elliott Hughes
2d48d0ea36 am c9358706: am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit 'c9358706c6f48eb27f785f3bf15b2ab0d50ff7bc':
  Don't search off the end of the index for bad Olson ids.
2013-03-14 22:33:35 +00:00
Elliott Hughes
c9358706c6 am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit '2e7b8d6399fdea6e43dd07f353346324d2bf4ec4':
  Don't search off the end of the index for bad Olson ids.
2013-03-14 15:30:13 -07:00
Elliott Hughes
2e7b8d6399 am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit 'f861bc5cc3e17322e49f89deea61f278aaefbe76':
  Don't search off the end of the index for bad Olson ids.
2013-03-14 15:17:09 -07:00
Christopher Ferris
65461bbe25 Merge "Create arch specific versions of strcmp." 2013-03-14 21:18:20 +00:00
The Android Automerger
e450d655ba merge in master-release history after reset to master 2013-03-13 07:49:07 -07:00
The Android Automerger
45508566d1 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-13 05:55:08 -07:00
Elliott Hughes
a00988312b am 76ade2ed: am f557e90b: am 2f44c05b: am ec706c24: Merge "Use the kernel\'s MAX_ERRNO in the syscall stubs."
* commit '76ade2ed6077fec0a4978ef7e7e2a99578512c39':
  Use the kernel's MAX_ERRNO in the syscall stubs.
2013-03-13 01:00:12 +00:00
Elliott Hughes
76ade2ed60 am f557e90b: am 2f44c05b: am ec706c24: Merge "Use the kernel\'s MAX_ERRNO in the syscall stubs."
* commit 'f557e90b348d9a3294391076bcd6604a13c803b6':
  Use the kernel's MAX_ERRNO in the syscall stubs.
2013-03-13 00:58:27 +00:00
Elliott Hughes
f557e90b34 am 2f44c05b: am ec706c24: Merge "Use the kernel\'s MAX_ERRNO in the syscall stubs."
* commit '2f44c05bc54073aa6decfc5d933b7e77e7ce5768':
  Use the kernel's MAX_ERRNO in the syscall stubs.
2013-03-12 17:55:54 -07:00
Elliott Hughes
2f44c05bc5 am ec706c24: Merge "Use the kernel\'s MAX_ERRNO in the syscall stubs."
* commit 'ec706c24acb4d1db6a583a57b76adfb9250d39eb':
  Use the kernel's MAX_ERRNO in the syscall stubs.
2013-03-12 17:54:00 -07:00
Christopher Ferris
f0cd52305a am 8cca0154: am b0b974c1: am 2a66ccf1: am 980508b0: Merge "Break bionic implementations into arch versions."
* commit '8cca015403f2f021d557fc81a0423a04a551448a':
  Break bionic implementations into arch versions.
2013-03-12 22:45:21 +00:00
Christopher Ferris
8cca015403 am b0b974c1: am 2a66ccf1: am 980508b0: Merge "Break bionic implementations into arch versions."
* commit 'b0b974c10ce3494fe58be1a3f419656f95c54331':
  Break bionic implementations into arch versions.
2013-03-12 22:43:05 +00:00
Christopher Ferris
b0b974c10c am 2a66ccf1: am 980508b0: Merge "Break bionic implementations into arch versions."
* commit '2a66ccf1bb4dd0183b65264cb8107ba70748f626':
  Break bionic implementations into arch versions.
2013-03-12 15:40:22 -07:00
Christopher Ferris
2a66ccf1bb am 980508b0: Merge "Break bionic implementations into arch versions."
* commit '980508b0ead3ee01e99e93635c57eb76d1aba62d':
  Break bionic implementations into arch versions.
2013-03-12 15:39:38 -07:00
Elliott Hughes
4f73423c68 am 0052a618: am b4d6f28c: am a3214c65: am 94a34010: Merge "Support large errno values on ARM."
* commit '0052a6188ba20c3a9ea99f974bce0c143bd379cb':
  Support large errno values on ARM.
2013-03-12 19:24:10 +00:00
Elliott Hughes
0052a6188b am b4d6f28c: am a3214c65: am 94a34010: Merge "Support large errno values on ARM."
* commit 'b4d6f28cc33f438f9859d6ab5f91e7f2ee1d6d33':
  Support large errno values on ARM.
2013-03-12 19:22:50 +00:00
Elliott Hughes
b4d6f28cc3 am a3214c65: am 94a34010: Merge "Support large errno values on ARM."
* commit 'a3214c65620827628a87849a5fbad5a4ef97eeb1':
  Support large errno values on ARM.
2013-03-12 12:18:49 -07:00
Elliott Hughes
a3214c6562 am 94a34010: Merge "Support large errno values on ARM."
* commit '94a34010c1f989032c0a4dc7a7a68d069ca23b1e':
  Support large errno values on ARM.
2013-03-12 12:17:15 -07:00
Elliott Hughes
6734451334 am 60414ba1: am 746f1286: am 5d998b4a: am f21aa3b6: Merge "Use more types than just \'unsigned\' in the linker."
* commit '60414ba165da87e427aef45b651ec7d4f26b084f':
  Use more types than just 'unsigned' in the linker.
2013-03-12 19:07:18 +00:00
Elliott Hughes
60414ba165 am 746f1286: am 5d998b4a: am f21aa3b6: Merge "Use more types than just \'unsigned\' in the linker."
* commit '746f128602772997b57e24fc8546473d01d6f955':
  Use more types than just 'unsigned' in the linker.
2013-03-12 19:05:53 +00:00
Elliott Hughes
746f128602 am 5d998b4a: am f21aa3b6: Merge "Use more types than just \'unsigned\' in the linker."
* commit '5d998b4a21aab09da750e8e43cb608f5ee6b1f3d':
  Use more types than just 'unsigned' in the linker.
2013-03-12 12:03:06 -07:00
Elliott Hughes
5d998b4a21 am f21aa3b6: Merge "Use more types than just \'unsigned\' in the linker."
* commit 'f21aa3b61ebc6b1a7c34265699f40bd9b5af7952':
  Use more types than just 'unsigned' in the linker.
2013-03-12 12:00:55 -07:00
Elliott Hughes
947695bd9b am 5487ecb5: am e9cdce33: am 3c9afb5e: am 6b4c77f8: Merge "Use Elf32_Addr instead of unsigned in linker"
* commit '5487ecb52a328906b81635f8c8018f48031c19a1':
  Use Elf32_Addr instead of unsigned in linker
2013-03-12 17:43:55 +00:00
Elliott Hughes
5487ecb52a am e9cdce33: am 3c9afb5e: am 6b4c77f8: Merge "Use Elf32_Addr instead of unsigned in linker"
* commit 'e9cdce33f398e43952d11ef38027e2d255f16531':
  Use Elf32_Addr instead of unsigned in linker
2013-03-12 17:42:37 +00:00
Elliott Hughes
e9cdce33f3 am 3c9afb5e: am 6b4c77f8: Merge "Use Elf32_Addr instead of unsigned in linker"
* commit '3c9afb5e17eaa2ed5a12d71a1a09fe85f06fcb48':
  Use Elf32_Addr instead of unsigned in linker
2013-03-12 10:40:56 -07:00
Elliott Hughes
3c9afb5e17 am 6b4c77f8: Merge "Use Elf32_Addr instead of unsigned in linker"
* commit '6b4c77f854c079138d552608b9df5fa3035f0fcc':
  Use Elf32_Addr instead of unsigned in linker
2013-03-12 10:38:46 -07:00
Christopher Ferris
a9a5870d16 Create arch specific versions of strcmp.
This uses the new strcmp.a15.S code as the basis for new versions
of strcmp.S.

The cortex-a15 code is the performance optimized version of strcmp.a15.S
taken with only the addition of a few pld instructions.
The cortex-a9 code is the same as the cortex-a15 code except that the
unaligned strcmp code was taken from the original strcmp.S.
The krait code is the same as the cortex-a15 code except that one path
in the unaligned strcmp code was taken from the original strcmp.S code
(the 2 byte overlap case).
The generic code is the original unmodified strmp.S from the bionic
subdirectory.

All three new versions underwent these test cases:

Strings the same, all same size:
- Both pointers double word aligned.
- One pointer double word aligned, one pointer word aligned.
- Both pointers word aligned.
- One pointer double word aligned, one pointer 1 off a word alignment.
- One pointer double word aligned, one pointer 2 off a word alignment.
- One pointer double word aligned, one pointer 3 off a word alignment.
- One pointer word aligned, one pointer 1 off a word alignment.
- One pointer word aligned, one pointer 2 off a word alignment.
- One pointer word aligned, one pointer 3 off a word alignment.
For all cases where it made sense, the two pointers were also tested
swapped.

Different strings, all same size:
- Single difference at double word boundary.
- Single difference at word boudary.
- Single difference at 1 off a word alignment.
- Single difference at 2 off a word alignment.
- Single difference at 3 off a word alignment.

Different sized strings, strings the same until the end:
- Shorter string ends on a double word boundary.
- Shorter string ends on word boundary.
- Shorter string ends at 1 off a word boundary.
- Shorter string ends at 2 off a word boundary.
- Shorter string ends at 3 off a word boundary.

For all different cases, run them through the same pointer alignment
cases when the strings are the same size.
For all cases the two pointers were also tested swapped.

Bug: 8005082
Change-Id: I5f3dc02b48afba2cb9c13332ab45c828ff171a1c
2013-03-12 10:25:11 -07:00
The Android Automerger
1a6e73d0ac merge in master-release history after reset to master 2013-03-12 07:49:24 -07:00
The Android Open Source Project
70d97ae3d0 am 7c8af225: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit '7c8af2252a5814a34f30922ac7d5d63bd891e525':
2013-03-12 14:16:36 +00:00
The Android Open Source Project
7c8af2252a Reconcile with jb-mr2-release - do not merge
Change-Id: Ia0c7d98294053c4dfab78608959f2f3f53c8e2a0
2013-03-12 07:14:11 -07:00
The Android Automerger
24ec903cd8 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-12 05:55:15 -07:00
Elliott Hughes
3284773891 am 03e71235: am 8c73f69c: am 36cb88b7: am 53630c0e: Merge "Cache the most-recently used timezone for mktime_tz and localtime_tz."
* commit '03e712357d1f4de204ac9ad5cbef53acba48db9d':
  Cache the most-recently used timezone for mktime_tz and localtime_tz.
2013-03-12 01:50:53 +00:00
Elliott Hughes
03e712357d am 8c73f69c: am 36cb88b7: am 53630c0e: Merge "Cache the most-recently used timezone for mktime_tz and localtime_tz."
* commit '8c73f69cf42d78f37b9b82bf0cc62d2cd1985fcc':
  Cache the most-recently used timezone for mktime_tz and localtime_tz.
2013-03-12 01:48:34 +00:00
Elliott Hughes
8c73f69cf4 am 36cb88b7: am 53630c0e: Merge "Cache the most-recently used timezone for mktime_tz and localtime_tz."
* commit '36cb88b70c39e507e9017f0bd7121da57e568744':
  Cache the most-recently used timezone for mktime_tz and localtime_tz.
2013-03-11 18:46:23 -07:00
Elliott Hughes
36cb88b70c am 53630c0e: Merge "Cache the most-recently used timezone for mktime_tz and localtime_tz."
* commit '53630c0e5bb6f845ba633e8dedc08b827f7b5d0c':
  Cache the most-recently used timezone for mktime_tz and localtime_tz.
2013-03-11 18:44:19 -07:00
Jean-Baptiste Queru
23167e7556 am 1467dfa5: (-s ours) am a60f3818: am b2525ba8: am 7915b22e: am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '1467dfa5cd28b8b4e07cfe86b020a07bd0d0da24':
2013-03-11 19:51:51 +00:00
Jean-Baptiste Queru
1467dfa5cd am a60f3818: am b2525ba8: am 7915b22e: am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'a60f38181465d5f5a37ea8f9ad34326ea2e21ef0':
2013-03-11 19:41:34 +00:00
Elliott Hughes
3d0bf2b30c am 9969b48d: am 60ac09bd: am 6d6f5e61: am 4b032ee9: Merge "Let bionic use the correct definition of ssize_t."
* commit '9969b48d235e71f87be67549fdd274c8e82f3f6f':
  Let bionic use the correct definition of ssize_t.
2013-03-11 19:41:19 +00:00
Jean-Baptiste Queru
a60f381814 am b2525ba8: am 7915b22e: am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'b2525ba8a0f91594df17e893d036c416a109b012':
2013-03-11 12:35:36 -07:00
Elliott Hughes
9969b48d23 am 60ac09bd: am 6d6f5e61: am 4b032ee9: Merge "Let bionic use the correct definition of ssize_t."
* commit '60ac09bdb2ddc4076f78a91f260cd5a1e179c82b':
  Let bionic use the correct definition of ssize_t.
2013-03-11 19:34:11 +00:00
Jean-Baptiste Queru
b2525ba8a0 am 7915b22e: am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '7915b22e8f70b80a9fc2c41f9734194c58b546fc':
2013-03-11 12:30:58 -07:00
Jean-Baptiste Queru
7915b22e8f am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'a4b20d712b9c6cbc562529d3a41bf8ea1515562a':
2013-03-11 12:28:17 -07:00
Elliott Hughes
60ac09bdb2 am 6d6f5e61: am 4b032ee9: Merge "Let bionic use the correct definition of ssize_t."
* commit '6d6f5e618e054e79d80a02f2c3f76ce0fd73bb2a':
  Let bionic use the correct definition of ssize_t.
2013-03-11 12:27:58 -07:00
Jean-Baptiste Queru
a4b20d712b am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'b8e1033c5b5813cb97d19645075591a357e9f04a':
2013-03-11 12:22:41 -07:00
Jean-Baptiste Queru
b8e1033c5b am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'e5412a9a9597433ae2540b390269c514c46402f1':
2013-03-11 12:19:03 -07:00
Jean-Baptiste Queru
e5412a9a95 Reconcile with jb-mr1-release - do not merge 2013-03-11 12:15:11 -07:00
Elliott Hughes
cd9c4cfae3 am 022d7c50: am bf32ffcf: am 0b765862: am 62c5cd07: Merge "Upgrade to tzdata2013b."
* commit '022d7c50db28fbf90e197f0c88b23b7e3a74a07b':
  Upgrade to tzdata2013b.
2013-03-11 18:39:13 +00:00
Elliott Hughes
022d7c50db am bf32ffcf: am 0b765862: am 62c5cd07: Merge "Upgrade to tzdata2013b."
* commit 'bf32ffcf027d0089e84fafb0114f6b40825f84ac':
  Upgrade to tzdata2013b.
2013-03-11 18:33:57 +00:00
Elliott Hughes
bf32ffcf02 am 0b765862: am 62c5cd07: Merge "Upgrade to tzdata2013b."
* commit '0b765862e134e87174ddf9bdfa32528392f85e96':
  Upgrade to tzdata2013b.
2013-03-11 11:29:24 -07:00
Elliott Hughes
6d6f5e618e am 4b032ee9: Merge "Let bionic use the correct definition of ssize_t."
* commit '4b032ee9b94137e41ee54e9bb3bcf0ba5ad43cbc':
  Let bionic use the correct definition of ssize_t.
2013-03-11 11:07:29 -07:00
Elliott Hughes
0b765862e1 am 62c5cd07: Merge "Upgrade to tzdata2013b."
* commit '62c5cd0781e95c1c50b63c37a9a87bc158e64d38':
  Upgrade to tzdata2013b.
2013-03-11 09:57:53 -07:00
The Android Automerger
e767b0f555 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-11 05:55:24 -07:00
The Android Automerger
568eb7bd76 merge in master-release history after reset to master 2013-03-08 07:49:16 -08:00
Elliott Hughes
5bb64976a0 am 7a9749ec: am 8a015722: resolved conflicts for merge of 4706606c to jb-mr2-dev
* commit '7a9749eca06816ba3b63e55660bc1c2b7285dc52':
  Regenerate NOTICE files.
2013-03-07 21:25:35 +00:00
Elliott Hughes
7a9749eca0 am 8a015722: resolved conflicts for merge of 4706606c to jb-mr2-dev
* commit '8a0157227242eeb7917f064e0d81014bcda6d8f7':
  Regenerate NOTICE files.
2013-03-07 21:23:22 +00:00
Elliott Hughes
8a01572272 resolved conflicts for merge of 4706606c to jb-mr2-dev
Change-Id: Ibf6340df901c870cd05a2ab56536ad23b6fd491c
2013-03-07 13:19:20 -08:00
Elliott Hughes
4706606c88 am 809eed1d: Merge "Regenerate NOTICE files."
* commit '809eed1dedb833af1aba56c6a1d059123b43049a':
  Regenerate NOTICE files.
2013-03-07 12:02:00 -08:00
The Android Automerger
a7a3bcef75 merge in master-release history after reset to master 2013-03-07 07:49:10 -08:00
The Android Automerger
a312b02e85 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-07 05:55:07 -08:00
Elliott Hughes
30be06bc7a am 0f644ccf: am 0a2ee475: am ad7c275e: am c9f80814: Merge "Upgrade to current NetBSD popen/pclose."
* commit '0f644ccf6dfb4f00473fc90f369d842e09ab13df':
  Upgrade to current NetBSD popen/pclose.
2013-03-07 01:09:36 +00:00
Elliott Hughes
0f644ccf6d am 0a2ee475: am ad7c275e: am c9f80814: Merge "Upgrade to current NetBSD popen/pclose."
* commit '0a2ee4750ac4e9e5949dbf97fbad68065e83b632':
  Upgrade to current NetBSD popen/pclose.
2013-03-07 01:07:08 +00:00
Elliott Hughes
0a2ee4750a am ad7c275e: am c9f80814: Merge "Upgrade to current NetBSD popen/pclose."
* commit 'ad7c275e45088e1f13656b97dabbe911fff83664':
  Upgrade to current NetBSD popen/pclose.
2013-03-07 01:04:52 +00:00
Elliott Hughes
ad7c275e45 am c9f80814: Merge "Upgrade to current NetBSD popen/pclose."
* commit 'c9f80814259a81dce12ba35d1750fa2b23fef48d':
  Upgrade to current NetBSD popen/pclose.
2013-03-06 17:03:28 -08:00
Brian Carlstrom
4bf33991b2 am 6b89c634: am c7b9f954: am 91392116: am 33031fed: Merge "Fix typo of DT_NEEDED for DT_NULL"
* commit '6b89c6341f2d805b7d9913d69ef6038b60b2af7b':
  Fix typo of DT_NEEDED for DT_NULL
2013-03-07 00:18:45 +00:00
Brian Carlstrom
6b89c6341f am c7b9f954: am 91392116: am 33031fed: Merge "Fix typo of DT_NEEDED for DT_NULL"
* commit 'c7b9f954a5278115333516a40c0d2839648a6877':
  Fix typo of DT_NEEDED for DT_NULL
2013-03-07 00:15:48 +00:00
Brian Carlstrom
c7b9f954a5 am 91392116: am 33031fed: Merge "Fix typo of DT_NEEDED for DT_NULL"
* commit '91392116ff859b2e7656ded729b8c758107241aa':
  Fix typo of DT_NEEDED for DT_NULL
2013-03-07 00:12:13 +00:00
Brian Carlstrom
91392116ff am 33031fed: Merge "Fix typo of DT_NEEDED for DT_NULL"
* commit '33031fed84e24fb7791f123df45abc1a3812ac59':
  Fix typo of DT_NEEDED for DT_NULL
2013-03-06 16:11:07 -08:00
Elliott Hughes
85598b9668 am 165825e3: am 9c0c056b: am 6b1aa1b1: am db794197: Merge "Fix debug malloc."
* commit '165825e3e83fb2ae43b60b1b5ef44cbc55f7979f':
  Fix debug malloc.
2013-03-06 23:29:12 +00:00
Elliott Hughes
165825e3e8 am 9c0c056b: am 6b1aa1b1: am db794197: Merge "Fix debug malloc."
* commit '9c0c056beddf8c4100769ad01404311a6d70efae':
  Fix debug malloc.
2013-03-06 23:27:40 +00:00
Elliott Hughes
9c0c056bed am 6b1aa1b1: am db794197: Merge "Fix debug malloc."
* commit '6b1aa1b16bc2cf8ba17e33fca4ffc399368b356c':
  Fix debug malloc.
2013-03-06 23:24:59 +00:00
Elliott Hughes
6b1aa1b16b am db794197: Merge "Fix debug malloc."
* commit 'db794197cc880e3805bcefbea780476a359066c2':
  Fix debug malloc.
2013-03-06 15:22:24 -08:00
Elliott Hughes
6646adeac0 am bbef1f57: am bac72aba: am 50a2cd86: am 0b4a85bf: Merge "Fix TIMING/STATS/COUNT_PAGES dynamic linker build"
* commit 'bbef1f57509504ca11f26968beafd4aa0cfd4643':
  Fix TIMING/STATS/COUNT_PAGES dynamic linker build
2013-03-06 17:52:39 +00:00
Elliott Hughes
bbef1f5750 am bac72aba: am 50a2cd86: am 0b4a85bf: Merge "Fix TIMING/STATS/COUNT_PAGES dynamic linker build"
* commit 'bac72abae4578bf2df9227a9c3d2c7233c83a06b':
  Fix TIMING/STATS/COUNT_PAGES dynamic linker build
2013-03-06 17:47:07 +00:00
Elliott Hughes
bac72abae4 am 50a2cd86: am 0b4a85bf: Merge "Fix TIMING/STATS/COUNT_PAGES dynamic linker build"
* commit '50a2cd865e7cc8c72d926548ed5d64e269003055':
  Fix TIMING/STATS/COUNT_PAGES dynamic linker build
2013-03-06 17:44:43 +00:00
Elliott Hughes
50a2cd865e am 0b4a85bf: Merge "Fix TIMING/STATS/COUNT_PAGES dynamic linker build"
* commit '0b4a85bf1e11e28f66d0f101f9e7d4c51a0bb31c':
  Fix TIMING/STATS/COUNT_PAGES dynamic linker build
2013-03-06 09:41:56 -08:00
Brian Carlstrom
01b5c0f126 am 8f4880e2: am 2527a8b5: am 9043202b: am 20958207: Merge "Fix MIPS linker build"
* commit '8f4880e2c66d60283d443f6c9b5ef4136d2c6621':
  Fix MIPS linker build
2013-03-06 16:53:22 +00:00
Elliott Hughes
0864ade9de am 5673f9f7: am c1a5d20d: am 9a0b658c: am c41dcad0: Merge "More linker cleanup."
* commit '5673f9f73b545c8b4801c1494600ff2220bf8dca':
  More linker cleanup.
2013-03-06 16:53:22 +00:00
Brian Carlstrom
8f4880e2c6 am 2527a8b5: am 9043202b: am 20958207: Merge "Fix MIPS linker build"
* commit '2527a8b5a652d7f88b662fe3788e29b6bc2bbe78':
  Fix MIPS linker build
2013-03-06 16:48:18 +00:00
Elliott Hughes
5673f9f73b am c1a5d20d: am 9a0b658c: am c41dcad0: Merge "More linker cleanup."
* commit 'c1a5d20d08118bb778f99b14ca74d6654e4f4eba':
  More linker cleanup.
2013-03-06 16:48:05 +00:00
The Android Automerger
bc08713ba4 merge in master-release history after reset to master 2013-03-06 07:49:13 -08:00
The Android Automerger
f5fc5d467c merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-06 05:55:11 -08:00
Brian Carlstrom
2527a8b5a6 am 9043202b: am 20958207: Merge "Fix MIPS linker build"
* commit '9043202b5bb8e0725b0302e9da9d3a57c837e798':
  Fix MIPS linker build
2013-03-06 09:18:59 +00:00
Brian Carlstrom
9043202b5b am 20958207: Merge "Fix MIPS linker build"
* commit '20958207d5f9d36cc6f6b3edc4ff899c73b72b02':
  Fix MIPS linker build
2013-03-06 01:17:27 -08:00
Elliott Hughes
c1a5d20d08 am 9a0b658c: am c41dcad0: Merge "More linker cleanup."
* commit '9a0b658c9c1f8f4492f61a75909e5ca2f05c3ac1':
  More linker cleanup.
2013-03-06 06:44:06 +00:00
Elliott Hughes
9a0b658c9c am c41dcad0: Merge "More linker cleanup."
* commit 'c41dcad040ede2975ea63e383a8a3d36e3642d56':
  More linker cleanup.
2013-03-05 22:42:33 -08:00
Brian Carlstrom
d18e5bb412 am a2cfd1a2: am 8c65a1e4: am a2517de3: am 036f9097: Merge "Minor linker cleanup, primarily to use Elf32_Dyn"
* commit 'a2cfd1a27fe552a42d668c708d98ca3f8bee90b9':
  Minor linker cleanup, primarily to use Elf32_Dyn
2013-03-06 01:27:56 +00:00
Brian Carlstrom
a2cfd1a27f am 8c65a1e4: am a2517de3: am 036f9097: Merge "Minor linker cleanup, primarily to use Elf32_Dyn"
* commit '8c65a1e466dae62217700065256921ba86290faa':
  Minor linker cleanup, primarily to use Elf32_Dyn
2013-03-06 01:25:09 +00:00
Brian Carlstrom
8c65a1e466 am a2517de3: am 036f9097: Merge "Minor linker cleanup, primarily to use Elf32_Dyn"
* commit 'a2517de3844d95b5f00a4666b8dae00ef893ac24':
  Minor linker cleanup, primarily to use Elf32_Dyn
2013-03-06 01:22:25 +00:00
Brian Carlstrom
a2517de384 am 036f9097: Merge "Minor linker cleanup, primarily to use Elf32_Dyn"
* commit '036f909720fd0d56dbd04b9a761fb1d0714980b0':
  Minor linker cleanup, primarily to use Elf32_Dyn
2013-03-05 17:20:35 -08:00
Elliott Hughes
074a94c01e am b3b00378: am 97a8217a: am 3f7b1cd3: am be21fe7a: Merge "Upgrade to tzdata2013a."
* commit 'b3b0037884e9b0bcba787e84448815f2a4b4dccd':
  Upgrade to tzdata2013a.
2013-03-05 22:29:17 +00:00
Elliott Hughes
b3b0037884 am 97a8217a: am 3f7b1cd3: am be21fe7a: Merge "Upgrade to tzdata2013a."
* commit '97a8217ae1a23a808f7bb3af2f492040e7080549':
  Upgrade to tzdata2013a.
2013-03-05 22:25:39 +00:00
Elliott Hughes
97a8217ae1 am 3f7b1cd3: am be21fe7a: Merge "Upgrade to tzdata2013a."
* commit '3f7b1cd3acf9990efea9f75559b2f873ab3838fe':
  Upgrade to tzdata2013a.
2013-03-05 22:23:45 +00:00
Elliott Hughes
3f7b1cd3ac am be21fe7a: Merge "Upgrade to tzdata2013a."
* commit 'be21fe7a5947e24f9f0db90f8e16c54766d1237a':
  Upgrade to tzdata2013a.
2013-03-05 14:22:01 -08:00
Ben Cheng
fbb281b15d am 7eaed030: am 6ad68558: am e5e6e17c: am 133d97e4: Merge "Add stack unwinding directives to memcpy."
* commit '7eaed030deacb14a6fe628e229af6c9a3a620f3c':
  Add stack unwinding directives to memcpy.
2013-03-05 21:24:43 +00:00
Ben Cheng
7eaed030de am 6ad68558: am e5e6e17c: am 133d97e4: Merge "Add stack unwinding directives to memcpy."
* commit '6ad68558ed4429f7ab0dbad9a5bbf18aacde8362':
  Add stack unwinding directives to memcpy.
2013-03-05 21:22:49 +00:00
Ben Cheng
6ad68558ed am e5e6e17c: am 133d97e4: Merge "Add stack unwinding directives to memcpy."
* commit 'e5e6e17c5bd06e097c5bb4da9a23b5e293309ab9':
  Add stack unwinding directives to memcpy.
2013-03-05 21:20:42 +00:00
Ben Cheng
e5e6e17c5b am 133d97e4: Merge "Add stack unwinding directives to memcpy."
* commit '133d97e4b07a733787fb85692ad8427fdc3d1d22':
  Add stack unwinding directives to memcpy.
2013-03-05 13:17:23 -08:00
Elliott Hughes
c6ef78e83e am 136e00d6: am c96ad9bc: am 7b69ac53: am cf9a9604: Merge "Switch to upstream-freebsd for the unmolested wchar code."
* commit '136e00d6e9bc19617e49a6b7bf81f749ff8a48e3':
  Switch to upstream-freebsd for the unmolested wchar code.
2013-03-05 21:14:04 +00:00
Elliott Hughes
136e00d6e9 am c96ad9bc: am 7b69ac53: am cf9a9604: Merge "Switch to upstream-freebsd for the unmolested wchar code."
* commit 'c96ad9bcd28fcd2b34040a2a696262057a11470b':
  Switch to upstream-freebsd for the unmolested wchar code.
2013-03-05 21:05:24 +00:00
Elliott Hughes
c96ad9bcd2 am 7b69ac53: am cf9a9604: Merge "Switch to upstream-freebsd for the unmolested wchar code."
* commit '7b69ac535abca0e7867524e68f5a3581cc367de8':
  Switch to upstream-freebsd for the unmolested wchar code.
2013-03-05 20:28:28 +00:00
Elliott Hughes
7b69ac535a am cf9a9604: Merge "Switch to upstream-freebsd for the unmolested wchar code."
* commit 'cf9a9604adb27600c79ca236578a8be89168202f':
  Switch to upstream-freebsd for the unmolested wchar code.
2013-03-05 12:27:09 -08:00
The Android Open Source Project
69a278f679 am adff4e86: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit 'adff4e8630e8d468253255b521caecfbb161dbbe':
2013-03-05 15:58:51 +00:00
The Android Open Source Project
adff4e8630 Reconcile with jb-mr2-release - do not merge
Change-Id: I2635d0c79d4adc135c7f0b6345547ed5e3114158
2013-03-05 07:53:05 -08:00
The Android Automerger
ee84789761 merge in master-release history after reset to master 2013-03-05 07:49:15 -08:00
The Android Automerger
5b5aa0317c merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-05 05:55:15 -08:00
Elliott Hughes
3f794facd3 am 7ef3ccb7: am 81e0f35a: am 2125c155: am d392e044: Merge "Move realpath.c to upstream-freebsd."
* commit '7ef3ccb7bb5f334e4ca8911a5d0eca7dd0da6b92':
  Move realpath.c to upstream-freebsd.
2013-03-04 23:59:47 +00:00
Elliott Hughes
7ef3ccb7bb am 81e0f35a: am 2125c155: am d392e044: Merge "Move realpath.c to upstream-freebsd."
* commit '81e0f35acc41cfafccc6d28a9122f115ca6e4a16':
  Move realpath.c to upstream-freebsd.
2013-03-04 23:58:16 +00:00
Elliott Hughes
81e0f35acc am 2125c155: am d392e044: Merge "Move realpath.c to upstream-freebsd."
* commit '2125c15506cbe9e4062d72ebb723d164e9c01c1f':
  Move realpath.c to upstream-freebsd.
2013-03-04 23:56:56 +00:00
The Android Open Source Project
781c4b19f4 am 98650e04: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit '98650e04e6d87e0b2c82151eacbe483ac15949d9':
  Avoid changing the C++ ABI with ssize_t.
2013-03-04 19:10:07 +00:00
The Android Open Source Project
98650e04e6 Reconcile with jb-mr2-release - do not merge
Change-Id: I92fd2ef799f358dd022234bc5fa7e6693f0619f0
2013-03-04 11:06:25 -08:00
Elliott Hughes
2125c15506 am d392e044: Merge "Move realpath.c to upstream-freebsd."
* commit 'd392e044c7a03ff1c0903c3512d00955bc7de473':
  Move realpath.c to upstream-freebsd.
2013-03-04 08:25:58 -08:00
The Android Automerger
e290a7e348 merge in master-release history after reset to master 2013-03-04 07:49:05 -08:00
The Android Automerger
2ec68f6833 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-04 05:55:08 -08:00
Christopher Ferris
0a1ab287ff am 29cc4946: (-s ours) Merge "Remove unused arm defines. DO NOT MERGE" into jb-mr2-dev
* commit '29cc4946ac8ac89fa0c49e5da8b5b328065d4b2c':
  Remove unused arm defines. DO NOT MERGE
2013-03-02 01:19:47 +00:00
Christopher Ferris
29cc4946ac Merge "Remove unused arm defines. DO NOT MERGE" into jb-mr2-dev 2013-03-02 01:16:00 +00:00
Christopher Ferris
947b3ab02b Remove unused arm defines. DO NOT MERGE
The defines HAVE_32_BYTE_CACHE_LINES and ARCH_ARM_USE_NON_NEON_MEMCPY
are not used by any code. The previous memcpy code that used these
has been split into different architecture versions to avoid the need
for them.

Bug: 8005082

(cherry picked from commit 6e1a5cf31b)

Change-Id: I69654d47db1458136782b5504290f620e924ee75
2013-03-01 16:54:56 -08:00
Ben Cheng
f85e173616 am b9ef7f4e: am 52b3aed7: am c5c6cb3f: am 66273ac2: Merge "Adding strcmp tuned for Cortex-A15."
* commit 'b9ef7f4e122bee55110ac703f391ab961484f3d8':
  Adding strcmp tuned for Cortex-A15.
2013-03-01 18:34:45 +00:00
Ben Cheng
89d7f5e482 am ae280bcd: am 55fc93a9: am 8f149da0: am b3b1ab62: Merge "Adding memcpy tuned for Cortex-A15."
* commit 'ae280bcdbee8d31096c1b332b20fa32f941ef12f':
  Adding memcpy tuned for Cortex-A15.
2013-03-01 18:34:45 +00:00
Nick Kralevich
1f415124ec am 04190c53: am cc646773: am 305a9995: am 8fa924e5: Merge "unistd.h: don\'t include sys/capability.h"
* commit '04190c53e3ac2958322a603d7bfb9b07b92d595e':
  unistd.h: don't include sys/capability.h
2013-03-01 18:34:44 +00:00
Ben Cheng
b9ef7f4e12 am 52b3aed7: am c5c6cb3f: am 66273ac2: Merge "Adding strcmp tuned for Cortex-A15."
* commit '52b3aed7982e9d68aad0652f54d5ee180ddf1c5a':
  Adding strcmp tuned for Cortex-A15.
2013-03-01 18:28:25 +00:00
Ben Cheng
ae280bcdbe am 55fc93a9: am 8f149da0: am b3b1ab62: Merge "Adding memcpy tuned for Cortex-A15."
* commit '55fc93a90961022e38ef0bb63bcb81d2b4e5aef6':
  Adding memcpy tuned for Cortex-A15.
2013-03-01 18:28:25 +00:00
Nick Kralevich
04190c53e3 am cc646773: am 305a9995: am 8fa924e5: Merge "unistd.h: don\'t include sys/capability.h"
* commit 'cc64677342209d38f88138c03d3ded0e1d61637c':
  unistd.h: don't include sys/capability.h
2013-03-01 18:28:24 +00:00
Ben Cheng
52b3aed798 am c5c6cb3f: am 66273ac2: Merge "Adding strcmp tuned for Cortex-A15."
* commit 'c5c6cb3f13642386e08acf687b4bc39f568bad0c':
  Adding strcmp tuned for Cortex-A15.
2013-03-01 10:26:52 -08:00
Ben Cheng
55fc93a909 am 8f149da0: am b3b1ab62: Merge "Adding memcpy tuned for Cortex-A15."
* commit '8f149da08dc3125824e168f8d29613be80b2085c':
  Adding memcpy tuned for Cortex-A15.
2013-03-01 10:26:52 -08:00
Nick Kralevich
cc64677342 am 305a9995: am 8fa924e5: Merge "unistd.h: don\'t include sys/capability.h"
* commit '305a999589a8dfde077589106853522d483d24d2':
  unistd.h: don't include sys/capability.h
2013-03-01 10:26:51 -08:00
The Android Automerger
424f21b6a7 merge in master-release history after reset to master 2013-03-01 07:49:10 -08:00
Christopher Ferris
c7f9669226 am 7c83a1ed: (-s ours) Break bionic implementations into arch versions. DO NOT MERGE
* commit '7c83a1ed81a15f3e75836c1ac7d500a952f02e10':
  Break bionic implementations into arch versions. DO NOT MERGE
2013-03-01 02:36:41 +00:00
Christopher Ferris
7c83a1ed81 Break bionic implementations into arch versions. DO NOT MERGE
Move arch specific code for arm, mips, x86 into separate
makefiles.
In addition, add different arm cpu versions of memcpy/memset.

Bug: 8005082

(cherry picked from commit acdde8c1cf)

Change-Id: I0108d432af9f6283ae99adfc92a3399e5ab3e31d
2013-02-28 17:45:16 -08:00
Elliott Hughes
730da15840 Avoid changing the C++ ABI with ssize_t.
Bug: 8253769
Change-Id: Ia325003ed6e59da553e2bdde7c43515bc191b8ba
2013-02-28 15:21:51 -08:00
Elliott Hughes
bfc25aa33c am 04766565: am 9c102ccf: am 7fe8229b: am 9c1912c4: Merge "Avoid changing the C++ ABI with ssize_t."
* commit '04766565d3743d70f679ca180d7fcc35321143b8':
  Avoid changing the C++ ABI with ssize_t.
2013-02-28 22:38:45 +00:00
Elliott Hughes
04766565d3 am 9c102ccf: am 7fe8229b: am 9c1912c4: Merge "Avoid changing the C++ ABI with ssize_t."
* commit '9c102ccf9517637f9d293b4e52f9a40573d8fc1d':
  Avoid changing the C++ ABI with ssize_t.
2013-02-28 19:46:19 +00:00
Elliott Hughes
9c102ccf95 am 7fe8229b: am 9c1912c4: Merge "Avoid changing the C++ ABI with ssize_t."
* commit '7fe8229b49ea091d769b63052247ca12280975eb':
  Avoid changing the C++ ABI with ssize_t.
2013-02-28 11:44:20 -08:00
Sasha Levitskiy
fbae9f3c30 Bionic: Libc: Resolv: Stricter function signatures, unitialized return bug fix.
Stricter input parameters help avoid ugly casting when passing
	pointers to immutable protobuf data.
	While at it: an int return was dropped from 2 functions whose users
	never used the result; one of the return paths was returning an
	uninitialized value.
	Size_t for portablity and warning supression, misc warnings addressed.

Change-Id: I2d5cbdaf0c9b6c4621a7d397772da13da5dc0943
2013-02-28 18:46:54 +00:00
The Android Automerger
de8481bcf7 merge in master-release history after reset to master 2013-02-28 07:49:07 -08:00
Christopher Ferris
6e1a5cf31b Remove unused arm defines.
The defines HAVE_32_BYTE_CACHE_LINES and ARCH_ARM_USE_NON_NEON_MEMCPY
are not used by any code. The previous memcpy code that used these
has been split into different architecture versions to avoid the need
for them.

Bug: 8005082
Change-Id: I14e0368c5bb4c3a80e72520f7cfd97e359918cce
2013-02-27 16:26:41 -08:00
The Android Automerger
e9ca2d80ed merge in master-release history after reset to master 2013-02-27 07:49:09 -08:00
Christopher Ferris
acdde8c1cf Break bionic implementations into arch versions.
Move arch specific code for arm, mips, x86 into separate
makefiles.
In addition, add different arm cpu versions of memcpy/memset.

Bug: 8005082
Change-Id: I04f3d0715104fab618e1abf7cf8f7eec9bec79df
2013-02-26 16:04:34 -08:00
Nick Kralevich
30f1622a34 am 82f4cc5d: am 58b997c8: am f5f906c1: Merge "libc: create sys/capability.h"
* commit '82f4cc5de495c6cc3d3736ab075ccd05285beabc':
  libc: create sys/capability.h
2013-02-26 21:55:28 +00:00
Nick Kralevich
82f4cc5de4 am 58b997c8: am f5f906c1: Merge "libc: create sys/capability.h"
* commit '58b997c8121455ecb9aa1b80d7c796115149ec2a':
  libc: create sys/capability.h
2013-02-26 13:51:26 -08:00
The Android Automerger
c453d42e20 merge in master-release history after reset to master 2013-02-26 07:49:08 -08:00
Elliott Hughes
aa13eaa934 am d9cb6988: am 406968b2: am c0e9ddd0: Merge "Reimplement scandir(3)."
* commit 'd9cb69881a062c615a8009be0a70270c70eb35da':
  Reimplement scandir(3).
2013-02-25 22:58:44 +00:00
Elliott Hughes
d9cb69881a am 406968b2: am c0e9ddd0: Merge "Reimplement scandir(3)."
* commit '406968b2444bf29e449acebdfb7ff174abd1e0ad':
  Reimplement scandir(3).
2013-02-25 14:56:51 -08:00
The Android Automerger
a6cef2de96 merge in master-release history after reset to master 2013-02-25 07:49:15 -08:00
Elliott Hughes
92ce5cc4bc am ed1068c8: am 7b8bf681: am f6bb5bf4: Merge "Add the glibc-compatible names to <sys/endian.h>."
* commit 'ed1068c86ea0380e4b4909252367ffacc812ad57':
  Add the glibc-compatible names to <sys/endian.h>.
2013-02-22 14:09:30 -08:00
Elliott Hughes
ed1068c86e am 7b8bf681: am f6bb5bf4: Merge "Add the glibc-compatible names to <sys/endian.h>."
* commit '7b8bf68133cda6c5ff9207248b563c2f6297e22a':
  Add the glibc-compatible names to <sys/endian.h>.
2013-02-22 14:06:12 -08:00
Elliott Hughes
726642cfa5 am dd843914: am 440bc83d: am 7b2c6385: Merge "Fix <memory.h> to be a synonym for <string.h> like in glibc."
* commit 'dd8439141aeac6dc3a64e25f313d08833e1d85f5':
  Fix <memory.h> to be a synonym for <string.h> like in glibc.
2013-02-22 12:16:14 -08:00
Elliott Hughes
dd8439141a am 440bc83d: am 7b2c6385: Merge "Fix <memory.h> to be a synonym for <string.h> like in glibc."
* commit '440bc83d924fa616614b4b426da66c2893048887':
  Fix <memory.h> to be a synonym for <string.h> like in glibc.
2013-02-22 12:12:45 -08:00
Nick Kralevich
bcedca25d3 am 41fb968c: am cadc8583: am bc0e7ee1: Merge "libc: add sys/signal.h for compatibility"
* commit '41fb968c4268d080b0be4493876672efc4a71e16':
  libc: add sys/signal.h for compatibility
2013-02-22 11:59:38 -08:00
Nick Kralevich
41fb968c42 am cadc8583: am bc0e7ee1: Merge "libc: add sys/signal.h for compatibility"
* commit 'cadc858329a5929911eff5f9a208229112e36a93':
  libc: add sys/signal.h for compatibility
2013-02-22 11:56:39 -08:00
Nick Kralevich
5d36baee95 Merge "gethostbyname: fix crash" 2013-02-22 19:32:37 +00:00
The Android Automerger
d2a3e69c26 merge in master-release history after reset to master 2013-02-22 07:49:20 -08:00
Nick Kralevich
bfe0640e41 Don't pass pid to dnsproxyd
dnsproxyd can already determine our pid by looking at our
socket connection. It's dangerous (and unneeded) to pass it
ourselves.

Change-Id: I2596d02e361b302259ddb084be2fb75be59889c5
2013-02-21 21:34:11 -08:00
Nick Kralevich
a6b24b7afb gethostbyname: fix crash
When an app doesn't have the internet permission, android_open_proxy
returns NULL, causing a segfault when calling fprintf. Fixed.

Change-Id: I598855350ed0db3cc88e5ae3b400145418a3a615
2013-02-21 20:12:42 -08:00
Elliott Hughes
7dfc6a3cd1 am e974e951: am 2a5b57db: am 580a7073: Merge "Stop advertising rindex(3), which is both deprecated and unimplemented."
* commit 'e974e951606d2efbad4bafe5edbd09c13d875f6a':
  Stop advertising rindex(3), which is both deprecated and unimplemented.
2013-02-21 18:01:17 -08:00
Elliott Hughes
e974e95160 am 2a5b57db: am 580a7073: Merge "Stop advertising rindex(3), which is both deprecated and unimplemented."
* commit '2a5b57db8c711b6f33581a68cfb7b82298ad988c':
  Stop advertising rindex(3), which is both deprecated and unimplemented.
2013-02-21 17:57:53 -08:00
Nick Kralevich
d470955eb5 am 72e983d6: am 398f46dd: am a0259b42: Merge "libc: remove bcmp prototype"
* commit '72e983d62828e1db5049800b7edef5a1b0cbbcbd':
  libc: remove bcmp prototype
2013-02-21 17:45:27 -08:00
Nick Kralevich
72e983d628 am 398f46dd: am a0259b42: Merge "libc: remove bcmp prototype"
* commit '398f46dd92fbb72e2a275cddccffdfde384bb3b4':
  libc: remove bcmp prototype
2013-02-21 17:42:07 -08:00
Elliott Hughes
448f1f08c2 am caeb0bf5: am 719d46f8: am a9ff09d1: Merge "Fix raise(3) so it works in signal handlers."
* commit 'caeb0bf53c8299d53f246573392fd688cae8a625':
  Fix raise(3) so it works in signal handlers.
2013-02-21 15:19:55 -08:00
Elliott Hughes
caeb0bf53c am 719d46f8: am a9ff09d1: Merge "Fix raise(3) so it works in signal handlers."
* commit '719d46f8ac4f2af89f8e8927db8c460b91622417':
  Fix raise(3) so it works in signal handlers.
2013-02-21 14:21:13 -08:00
The Android Automerger
8f8bc0664a merge in master-release history after reset to master 2013-02-21 08:30:27 -08:00
Jean-Baptiste Queru
55779c4316 am aa96db5b: (-s ours) am 818b1423: (-s ours) Fix mako builds. Do not merge.
* commit 'aa96db5ba0a39d8fac0925871632031d21e1ab3e':
  Fix mako builds. Do not merge.
2013-02-20 14:03:19 -08:00
Jean-Baptiste Queru
aa96db5ba0 am 818b1423: (-s ours) Fix mako builds. Do not merge.
* commit '818b1423d228e478245a1b0d2fe687606ea1741c':
  Fix mako builds. Do not merge.
2013-02-20 14:00:43 -08:00
Ed Heyl
37d6d8e933 Merge remote-tracking branch 'goog/jb-mr2-release' 2013-02-20 13:47:20 -08:00
The Android Automerger
44f8f7b86a merge in jb-mr2-release history after reset to master 2013-02-20 05:55:13 -08:00
Elliott Hughes
cae2173952 am ccd40316: Merge "use architecture-specific ssize_t definition"
* commit 'ccd403161cdcc88a0ffcaecd1bc707e2d4c88a1c':
  use architecture-specific ssize_t definition
2013-02-19 14:37:19 -08:00
Elliott Hughes
77272874f8 am 593abb7b: Merge "stdlib: atexit: include <sys/cdefs.h>"
* commit '593abb7b593a34d501c90512953a7368add6d185':
  stdlib: atexit: include <sys/cdefs.h>
2013-02-19 14:19:33 -08:00
Elliott Hughes
5593d50c72 am eeecff72: Merge "Fix pthreads functions that should return ESRCH."
* commit 'eeecff7293efd6becf3b07b8d24cada3d820c894':
  Fix pthreads functions that should return ESRCH.
2013-02-19 13:46:37 -08:00
Elliott Hughes
6f55284103 am b5862d4d: Merge "Update linker README."
* commit 'b5862d4d8a1246dc1e21695cf3bacafefedf0428':
  Update linker README.
2013-02-19 11:39:40 -08:00
The Android Automerger
82232f0e6b merge in jb-mr2-release history after reset to master 2013-02-19 09:50:40 -08:00
Elliott Hughes
4174337525 am 7f67f78a: Merge "dalvik is big enough and ugly enough to handle System.arraycopy itself."
* commit '7f67f78ad5c3da689997edd8fbb5afb6e5fc6355':
  dalvik is big enough and ugly enough to handle System.arraycopy itself.
2013-02-15 17:00:58 -08:00
Elliott Hughes
6af19237b7 am 39804dcd: Merge "Fix the pthread_setname_np test."
* commit '39804dcde6c1c596285432b28cdb09382ce59663':
  Fix the pthread_setname_np test.
2013-02-15 14:48:05 -08:00
Elliott Hughes
15c401d4ac am 3e3b239d: Merge "Fix the stack protector death test."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '3e3b239d2be0c5a92e91385f4f10b8f7da8d2837':
  Fix the stack protector death test.
2013-02-14 18:22:16 -08:00
Elliott Hughes
56a007c157 am 0a2cb815: Merge "Simplify __stack_chk_fail, and fix it so we get debuggerd stack traces."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '0a2cb815974ea96af664fa966079966a08916722':
  Simplify __stack_chk_fail, and fix it so we get debuggerd stack traces.
2013-02-14 15:59:15 -08:00
Nick Kralevich
f93de61e7b am b128f49f: Merge "bionic: Add securebits.h"
# Via Gerrit Code Review (1) and Nick Kralevich (1)
* commit 'b128f49fd58beecc5287ddff6366a97e5aa2e468':
  bionic: Add securebits.h
2013-02-14 15:05:22 -08:00
Elliott Hughes
7331af73f2 am c2d26ce7: Merge "Turn on -Werror for ssp.cpp."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'c2d26ce7452e69b9492cd28b7c0271866798658b':
  Turn on -Werror for ssp.cpp.
2013-02-14 11:23:48 -08:00
Nick Kralevich
dfa1e59b7d am fe33fc79: Merge "fix compiler warning."
# Via Gerrit Code Review (1) and Nick Kralevich (1)
* commit 'fe33fc790a16d85ce4109a4575d6fdcd88d42023':
  fix compiler warning.
2013-02-14 09:59:09 -08:00
The Android Automerger
8561261b5e merge in jb-mr2-release history after reset to master 2013-02-14 05:55:17 -08:00
Elliott Hughes
2346559cb4 am 6b97c7dc: Merge "ffs was not being built for x86."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '6b97c7dc0376577276abbdacc52e5cc11cf8a7fd':
  ffs was not being built for x86.
2013-02-13 17:08:07 -08:00
Elliott Hughes
4c897b692d am 97f2ec50: Merge "Stop using the local gcc."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '97f2ec50a7993d2db7ef4511a251e6823f5dba10':
  Stop using the local gcc.
2013-02-13 17:08:07 -08:00
Elliott Hughes
5ca3e4a349 am 95b1ea1b: Merge "Add a bunch more missing ENDs to assembler routines."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '95b1ea1bb3c93369d96045420b91b7617992d8bd':
  Add a bunch more missing ENDs to assembler routines.
2013-02-13 15:27:11 -08:00
Elliott Hughes
a7603ff87a am 2fee0340: Merge "Everyone has CLZ."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '2fee0340a93637507de6a860914dc3e14d44ee94':
  Everyone has CLZ.
2013-02-13 15:27:10 -08:00
Elliott Hughes
8ca1da6e71 resolved conflicts for merge of 62727429 to master
Change-Id: I8a3d167f3ef279a7c46cb8fb90c9477beff84d8e
2013-02-13 13:51:54 -08:00
Elliott Hughes
6aca0ce367 am f659b3c9: Merge "Add a test that getaddrinfo works when hints are NULL."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'f659b3c90d8b55a44945af807364a5df0475bd0e':
  Add a test that getaddrinfo works when hints are NULL.
2013-02-13 09:18:45 -08:00
Elliott Hughes
2db16ea38e am 3002d64b: Merge "Everyone has a TLS register."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '3002d64bcd4644456803dd0547d20b39e14be02c':
  Everyone has a TLS register.
2013-02-13 08:11:24 -08:00
Elliott Hughes
32a2340067 am 9cbe1e63: Merge "Fix __pthread_clone and __bionic_clone error handling on x86."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '9cbe1e63ddf8b61b8ded3d357a30c3d6ed67906f':
  Fix __pthread_clone and __bionic_clone error handling on x86.
2013-02-13 08:11:23 -08:00
The Android Automerger
d41c26e2d8 merge in jb-mr2-release history after reset to master 2013-02-13 05:55:21 -08:00
Elliott Hughes
a244e4eb61 am baf2c09f: Merge "Put the right number of Ls after 64-bit constants."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'baf2c09f3f47a35b195eb83cc7acffeaf4b6d4e9':
  Put the right number of Ls after 64-bit constants.
2013-02-12 20:38:05 -08:00
Elliott Hughes
761b344bff am 59aeff94: Merge "Use ENTRY/END in custom x86 assembler too."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '59aeff94178e03c908791695f6dd4c9bd8c7115b':
  Use ENTRY/END in custom x86 assembler too.
2013-02-12 20:17:26 -08:00
Elliott Hughes
bc35693e6b am 07f7e62a: Merge "Clean up pthread_create."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '07f7e62a259d13208d6186670d3748e339690127':
  Clean up pthread_create.
2013-02-12 18:20:10 -08:00
Elliott Hughes
d8ceaf5afa am 899d6528: Merge "Give up trying to build the pthread_setname_np tests for glibc."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '899d65283db0c78537ed27aa3a6c019000ec05da':
  Give up trying to build the pthread_setname_np tests for glibc.
2013-02-12 18:20:09 -08:00
Elliott Hughes
dde1d876b1 am 991ee7d8: Merge "Simplify pthread_create, using more public API."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '991ee7d89574e8d04c8863a2850613073a2f96b3':
  Simplify pthread_create, using more public API.
2013-02-12 16:52:26 -08:00
Elliott Hughes
f4e258c22e am 4912782c: Merge "Really set errno if __pthread_clone fails."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '4912782c6af7169686acc9553fb0bb33251b0d0d':
  Really set errno if __pthread_clone fails.
2013-02-12 16:23:25 -08:00
Elliott Hughes
78715fca0b am 558a8b1d: Merge "Revert "Revert "More pthreads cleanup."""
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '558a8b1d3b31300941af78232f2f7f4cb4e933b9':
  Revert "Revert "More pthreads cleanup.""
2013-02-12 16:23:24 -08:00
Dima Zavin
ac480b422a am 3fa67465: Merge "add factory property file definition"
# By Andrew Boie
# Via Andrew Boie (1) and Gerrit Code Review (1)
* commit '3fa67465365baf87f751bea09847e32f01005788':
  add factory property file definition
2013-02-12 11:12:49 -08:00
The Android Automerger
1bb43b02ad merge in jb-mr2-release history after reset to master 2013-02-12 07:10:11 -08:00
Elliott Hughes
191f880bdf am bfa199ab: am fcaf4e9f: Merge "Revert "More pthreads cleanup.""
# Via Gerrit Code Review (2) and Android Git Automerger (1)
* commit 'bfa199ab4019a7de9b95cd3db86c4d7176438803':
  Revert "More pthreads cleanup."
2013-02-11 22:20:39 -08:00
Elliott Hughes
23731e841a am a2a9817f: am 85f491f9: Merge "More pthreads cleanup."
# Via Android Git Automerger (1) and others
* commit 'a2a9817f4c08d1f56d90f02ed13f531e8093f8e8':
  More pthreads cleanup.
2013-02-11 18:39:32 -08:00
Elliott Hughes
13478d856a am 605cc293: am 83bf28e6: Merge "Fix MIPS build."
# Via Android Git Automerger (1) and others
* commit '605cc29358c9a6d575d097fd4b78a483c9dbf89e':
  Fix MIPS build.
2013-02-11 18:23:17 -08:00
Elliott Hughes
0f6882f43d am 8e2b28cb: am c56be54a: Merge "Use ENTRY/END in ARM __get_sp."
# Via Android Git Automerger (1) and others
* commit '8e2b28cb6c16d8a5671ccb333965bb56b2990d7a':
  Use ENTRY/END in ARM __get_sp.
2013-02-11 18:15:13 -08:00
Elliott Hughes
a2b8b833d2 am c440d244: am cae7b2cf: Merge "Fix __pthread_clone on ARM to set errno on failure."
# Via Android Git Automerger (1) and others
* commit 'c440d2442361b78196d2935469ecf78d5c3470e5':
  Fix __pthread_clone on ARM to set errno on failure.
2013-02-11 18:15:07 -08:00
Elliott Hughes
b940711587 am 03798dd2: am 1fea0f25: Merge "Clean up ARM assembler files to use ENTRY/END."
# Via Android Git Automerger (1) and others
* commit '03798dd23cd3d1dc1ee4c4b0472c75369aa1e10f':
  Clean up ARM assembler files to use ENTRY/END.
2013-02-11 18:15:04 -08:00
Elliott Hughes
5bb4f54b4d am 6b73d13f: am 2d3e7233: Merge "Revert "Revert "Pull the pthread_key_t functions out of pthread.c."""
# Via Android Git Automerger (1) and others
* commit '6b73d13fa414afeecba6718bf724e8ac922bac39':
  Revert "Revert "Pull the pthread_key_t functions out of pthread.c.""
2013-02-11 17:34:32 -08:00
Elliott Hughes
1b21249d5a am e4b08318: am 8397cdba: Merge "Revert "Pull the pthread_key_t functions out of pthread.c.""
# Via Gerrit Code Review (2) and Android Git Automerger (1)
* commit 'e4b08318c13fac774b233a5459427563d2983f79':
  Revert "Pull the pthread_key_t functions out of pthread.c."
2013-02-11 17:34:30 -08:00
Elliott Hughes
376bce0097 am 024246ec: am 09e89c3c: Merge "Pull the pthread_key_t functions out of pthread.c."
# Via Android Git Automerger (1) and others
* commit '024246ec274e30bb4a24468d8319620534e13b34':
  Pull the pthread_key_t functions out of pthread.c.
2013-02-11 17:34:29 -08:00
The Android Automerger
c087b7a80f merge in jb-mr2-release history after reset to master 2013-02-11 07:10:25 -08:00
Elliott Hughes
63358ae068 am 8f509e8b: am 9a9bb243: Merge "Switch to using AT_RANDOM for the stack guards."
# Via Android Git Automerger (1) and others
* commit '8f509e8be11876023d4bcb3e827ca096f22fc0c5':
  Switch to using AT_RANDOM for the stack guards.
2013-02-08 11:43:09 -08:00
Elliott Hughes
01cf1678e7 am 636d21f3: am 03579da2: Merge "Add a few more missing libm long double stubs."
# Via Android Git Automerger (1) and others
* commit '636d21f32b8aa9cd3ef7c91c729179e53daddc3a':
  Add a few more missing libm long double stubs.
2013-02-07 20:29:44 -08:00
Nick Kralevich
5eef90699d am f156b901: am fa75fce5: Merge "update xattr.h"
# Via Android Git Automerger (1) and others
* commit 'f156b901b1e51971192c573444b5b7f63e6bc22a':
  update xattr.h
2013-02-07 20:29:43 -08:00
Elliott Hughes
7d2bc92717 am 86e4e234: am 964886af: Merge "Remove dead code from gensyscalls.py."
# Via Android Git Automerger (1) and others
* commit '86e4e23408c157176d20b4baca00eb4d2f7566dc':
  Remove dead code from gensyscalls.py.
2013-02-07 20:29:42 -08:00
Elliott Hughes
8c372fc77e am 5bb67760: am f6afd3b6: Merge "Fix x86 build, remove void* arithmetic."
# Via Android Git Automerger (1) and others
* commit '5bb67760f0baddd815334bf87be79f0e7fd9fafe':
  Fix x86 build, remove void* arithmetic.
2013-02-07 14:45:28 -08:00
Elliott Hughes
dd698ec89a am 8ddef40d: am 59e9a496: Merge "__progname should be const char*, not char*."
# Via Android Git Automerger (1) and others
* commit '8ddef40dad42372ac5596d48f327f162745d7bb8':
  __progname should be const char*, not char*.
2013-02-07 14:45:27 -08:00
Elliott Hughes
389ebfa16f am 6f67cd22: am 2f41531f: Merge "Clean up the argc/argv/envp/auxv handling."
# Via Android Git Automerger (1) and others
* commit '6f67cd224e6ffdfa2619849eb4b9b2ff6c1e2c59':
  Clean up the argc/argv/envp/auxv handling.
2013-02-07 14:45:24 -08:00
Robert Greenwalt
a7d9b655e5 Merge "dns cache per interface iteration 2" 2013-02-07 19:02:16 +00:00
Mattias Falk
c63e59039d dns cache per interface iteration 2
name server addresses are read from the dns
cache associated wih the interface on which
the request shall be done.

processes which has requested to issue dns request
using specific interface are now proxied to netd.

added methods to attach/detach a process to a specific
dns cache/interface.

added getaddrinfoforinface method which takes an
interface as an argument.

bug:4815099
bug:5465296
Change-Id: I7a8fe1980cdf99d4d296ddc5c6411f0c72162263
2013-02-07 09:40:16 -08:00
Elliott Hughes
ffc807fdb6 am 4e9d9e4d: am d4187efd: Merge "Switch x86 syscall stubs over to the ENTER/END style of the ARM stubs."
# Via Android Git Automerger (1) and others
* commit '4e9d9e4df8309493e65c5ca15513644361fda314':
  Switch x86 syscall stubs over to the ENTER/END style of the ARM stubs.
2013-02-07 09:17:14 -08:00
The Android Automerger
a3e0f95fba merge in jb-mr2-release history after reset to master 2013-02-07 07:10:16 -08:00
Elliott Hughes
001437e861 am 09559dd0: am d32fdbaf: Merge "Add a missing logbl stub."
# Via Android Git Automerger (1) and others
* commit '09559dd04604dae062a2a50ce8dc78fd7d0e4a2f':
  Add a missing logbl stub.
2013-02-06 19:45:01 -08:00
Elliott Hughes
5dc29e97a6 am d2a6d8d7: am c9ab32e4: Merge "Improve benchmarking tool, add a few math benchmarks."
# Via Android Git Automerger (1) and others
* commit 'd2a6d8d77d1052b2cef7c0296d1396da5d3f7736':
  Improve benchmarking tool, add a few math benchmarks.
2013-02-06 19:44:53 -08:00
Elliott Hughes
4b9ed9e153 am 5fe28661: am d10a5a02: Merge "Remove the currently-unused i387 assembler to make way for the new."
# Via Android Git Automerger (1) and others
* commit '5fe286618ffea7cb8872a74501bf36d5036ca2a9':
  Remove the currently-unused i387 assembler to make way for the new.
2013-02-06 12:27:59 -08:00
Elliott Hughes
1c3039301b am 0e51a861: am 4fc2a74b: Merge "Remove partial implementation of MIPS non-PIC support."
# Via Android Git Automerger (1) and others
* commit '0e51a861241ea49455c519890b34e80eccfd4709':
  Remove partial implementation of MIPS non-PIC support.
2013-02-06 11:55:06 -08:00
The Android Automerger
a9ebf6c951 merge in jb-mr2-release history after reset to master 2013-02-06 07:10:08 -08:00
Elliott Hughes
6dd470d4d0 am df8c72e5: am d7ff139f: Merge "Remove bogus extra alignment from sbrk."
# Via Android Git Automerger (1) and others
* commit 'df8c72e510ae9d0a9970a31555ea51ea0c8f19ca':
  Remove bogus extra alignment from sbrk.
2013-02-05 17:14:50 -08:00
The Android Automerger
d418c2bd0a merge in jb-mr2-release history after reset to master 2013-02-05 07:10:12 -08:00
Elliott Hughes
303339e8d1 am 3cbcb87b: am a4f88fdc: Merge "Document the mallinfo struct, add missing attributes."
# Via Android Git Automerger (1) and others
* commit '3cbcb87bd1e86bd2bdb218fd324648e5bc7e8260':
  Document the mallinfo struct, add missing attributes.
2013-02-04 17:19:44 -08:00
Elliott Hughes
d1f2fafb72 am 384bdb37: am a3120aaf: Merge "Add basic tests for posix_memalign."
# Via Android Git Automerger (1) and others
* commit '384bdb3776bedaf22e8f1a3dfe7c6118b4bcefa4':
  Add basic tests for posix_memalign.
2013-02-04 17:19:34 -08:00
Elliott Hughes
b72952171b am ada6de67: (-s ours) am a1821f01: Merge "Regenerate msm_ion.h."
# Via Android Git Automerger (1) and others
* commit 'ada6de673be2a66bcfa822e0bb895219391c22a8':
  Regenerate msm_ion.h.
2013-02-04 17:00:26 -08:00
Elliott Hughes
54a2587446 am 16444e0f: am 3dc6b57c: Merge "Don\'t claim there were no leaks if we weren\'t even checking."
# Via Android Git Automerger (1) and others
* commit '16444e0f85585508e74d6166b8bbb4acb19738a0':
  Don't claim there were no leaks if we weren't even checking.
2013-02-04 11:29:33 -08:00
Elliott Hughes
46b3f0bb97 am 33e4365d: am 1bf83555: Merge "Make sincosl call sinl and cosl."
# Via Android Git Automerger (1) and others
* commit '33e4365d87364d8d9c8c4427255050b5e9b8cffe':
  Make sincosl call sinl and cosl.
2013-02-04 11:29:26 -08:00
Elliott Hughes
9cdd76954d am 422c400d: am ae70b946: Merge "Update the libm/NOTICE file after the upgrade."
# Via Android Git Automerger (1) and others
* commit '422c400dd3f6f2fdf096dc33da5b7033b6a58a10':
  Update the libm/NOTICE file after the upgrade.
2013-02-04 11:29:25 -08:00
Elliott Hughes
96a5819afb am 704d9c5b: am a9dd3670: Merge "Restore bionic\'s <linux/elf-em.h>."
# Via Android Git Automerger (1) and others
* commit '704d9c5b45515cc2421bfe3b37c93117da0a1334':
  Restore bionic's <linux/elf-em.h>.
2013-02-04 11:29:24 -08:00
Elliott Hughes
fb7a4850b8 am ff26e25b: am 44badc70: Merge "Upgrade libm."
# Via Android Git Automerger (1) and others
* commit 'ff26e25b51eb672a4c8244946e0f2b4328786f55':
  Upgrade libm.
2013-02-04 11:29:22 -08:00
The Android Automerger
37247ae63c merge in jb-mr2-release history after reset to master 2013-02-04 07:10:06 -08:00
Brian Muramatsu
322c7edba3 Remove MSM headers
Bug 7115545

These headers will be moved to hardware/qcom/msm8960 project.

Change-Id: Idb970c196be239e186e0a406d19135aa27225aca
2013-02-01 16:28:40 -08:00
The Android Automerger
3c72524611 merge in jb-mr2-release history after reset to master 2013-01-31 07:10:09 -08:00
Elliott Hughes
8db7a4cb20 am 9743d7fb: am fb55511e: am e1a124e5: Merge "Say explicitly if there were no leaks."
# Via Android Git Automerger (2) and others
* commit '9743d7fb60836229fde0fbdbd9fb87c78eaa00b7':
  Say explicitly if there were no leaks.
2013-01-30 12:27:12 -08:00
Elliott Hughes
0243962d20 am 9d43c079: am 4e882503: am a990cf5b: Merge "Clean up trailing whitespace in the kernel headers."
# Via Android Git Automerger (2) and others
* commit '9d43c079875ebd2540daccb180e9d6d0fa06061d':
  Clean up trailing whitespace in the kernel headers.
2013-01-30 10:33:52 -08:00
The Android Automerger
4c59597089 merge in jb-mr2-release history after reset to master 2013-01-30 07:10:15 -08:00
Elliott Hughes
8dfe0daf6f am 5821e11d: am 7bc49fcf: am 323287ea: Merge "Fix valgrind build."
# Via Android Git Automerger (2) and others
* commit '5821e11d0b577fda45b81f0c9ea13c1c1c5de1a8':
  Fix valgrind build.
2013-01-29 18:11:34 -08:00
Elliott Hughes
278c059663 am 9d995d67: am 1cc09402: am f6721978: Merge "Fix x86 build to use <elf.h>."
# Via Android Git Automerger (2) and others
* commit '9d995d67217e44e022c9e5d0767634fa81f87b78':
  Fix x86 build to use <elf.h>.
2013-01-29 17:09:13 -08:00
Elliott Hughes
d9397a7c5e am 0a383883: am be11de2b: am 5fb409b7: Merge "Bring the NOTICE files back up to date."
# Via Android Git Automerger (2) and others
* commit '0a383883fa3d358ff4af6b653a0918f4cd01ef7e':
  Bring the NOTICE files back up to date.
2013-01-29 17:09:12 -08:00
Elliott Hughes
a1b8c145cb am a7f44b5a: am 172e038f: am f09f6db5: Merge "Use the NetBSD <sys/exec_elf.h>."
# Via Android Git Automerger (2) and others
* commit 'a7f44b5afe64199eeee715e613c7d42d2724232c':
  Use the NetBSD <sys/exec_elf.h>.
2013-01-29 17:09:11 -08:00
Elliott Hughes
3638641014 am f5d6238c: am 3f20ecc2: am 3db2fc5a: Merge "Don\'t collect useless stack frames; do demangle C++ symbols."
# Via Android Git Automerger (2) and others
* commit 'f5d6238c4b6433f193c6d06c1dd89110b497e449':
  Don't collect useless stack frames; do demangle C++ symbols.
2013-01-29 12:09:31 -08:00
The Android Automerger
2a523d1a06 merge in jb-mr2-release history after reset to master 2013-01-29 07:10:09 -08:00
Elliott Hughes
62228694a0 am 2218b89c: am d383ac15: am a0151cbf: Merge "Unit tests for formatting code, fix %%."
# Via Android Git Automerger (2) and others
* commit '2218b89ca7017e3f1cdb0641528787cd9985501a':
  Unit tests for formatting code, fix %%.
2013-01-28 14:14:44 -08:00
The Android Automerger
8482fbb691 merge in jb-mr2-release history after reset to master 2013-01-28 07:10:05 -08:00
Elliott Hughes
609ca692a9 am d265d367: am f07db754: am 0a91b11d: Merge "More debug malloc fixes."
# Via Android Git Automerger (2) and others
* commit 'd265d3674937651d23a0252e6aad0ee09b02492a':
  More debug malloc fixes.
2013-01-25 18:11:55 -08:00
Iliyan Malchev
ac10757e2a Merge "bionic: update processed msm_vidc_enc.h" 2013-01-26 01:41:55 +00:00
Elliott Hughes
98ce9888b1 am 88af7232: am 7ae99845: am 6a94cb74: Merge "arm syscall : for eabi call_default don\'t use stack"
# By Matthieu Castet
# Via Android Git Automerger (2) and others
* commit '88af723267e86c7b2a685f97c6e442d3766ad9a9':
  arm syscall : for eabi call_default don't use stack
2013-01-25 17:11:52 -08:00
Nick Kralevich
85e76a3652 am 2ebcd19c: am 27818d2a: am b871e5d6: Merge "system_properties: do more checking of file"
# Via Android Git Automerger (2) and others
* commit '2ebcd19cbc42c5edce189df630a48feb9ffec16d':
  system_properties: do more checking of file
2013-01-25 17:11:51 -08:00
Iliyan Malchev
3eaa03df03 bionic: update processed msm_vidc_enc.h
Change-Id: If9aeec6f43b8b2951d1372042c884cd0e01f0a5a
Signed-off-by: Iliyan Malchev <malchev@google.com>
2013-01-25 11:26:53 -08:00
The Android Automerger
0f01df7fc9 merge in jb-mr2-release history after reset to master 2013-01-25 07:10:05 -08:00
Nick Kralevich
ddbb728eff am 151e91e6: am da2d2c61: am 82ef8296: Merge "prctl.h: include sys/cdefs.h"
# Via Android Git Automerger (2) and others
* commit '151e91e66c95a7e415903b87b8157a9bc422df45':
  prctl.h: include sys/cdefs.h
2013-01-24 16:15:39 -08:00
Nick Kralevich
472fdc95a6 am b8726037: am e7d937b5: am b3351f12: Merge "libc: use more secure system properties if available"
* commit 'b8726037ee1100e2704e90d0a54ea2313bf96b00':
  libc: use more secure system properties if available
2013-01-23 16:16:06 -08:00
Nick Kralevich
f5b111df06 am b8726037: am e7d937b5: am b3351f12: Merge "libc: use more secure system properties if available"
* commit 'b8726037ee1100e2704e90d0a54ea2313bf96b00':
  libc: use more secure system properties if available
2013-01-23 11:12:07 -08:00
The Android Automerger
d72183aa16 merge in jb-mr2-release history after reset to master 2013-01-23 07:10:07 -08:00
Elliott Hughes
828aaaac5e am c08ab018: am 40107623: am 778a68e1: Merge "Don\'t free anything when reporting leaks."
* commit 'c08ab018ad133a4e177013d79be547fd55968eac':
  Don't free anything when reporting leaks.
2013-01-22 22:16:11 -08:00
Elliott Hughes
9d28f5bf4a am ce8732b1: am 552e02fa: am 5c8f75ef: Merge "Disable leak checking for mksh; it\'s way too leaky."
* commit 'ce8732b188d96f4c313d20e6be17362a508f572d':
  Disable leak checking for mksh; it's way too leaky.
2013-01-22 22:16:10 -08:00
Elliott Hughes
28fa8e109e am a8e0f2b9: am b16ec162: am 28f82b26: Merge "Add const for first argument of sigismember for fit POSIX spec"
* commit 'a8e0f2b956b5a31311d778b478e63093bc2cac7a':
  Add const for first argument of sigismember for fit POSIX spec
2013-01-22 17:31:20 -08:00
Elliott Hughes
7f0976ef0e am 5f79f75b: am 57edf36c: am 8d6302cd: Merge "Our strcoll(3) is no different from NetBSD\'s, so take exactly theirs."
* commit '5f79f75ba6241ca9cab42e69a68d66d1ca28e031':
  Our strcoll(3) is no different from NetBSD's, so take exactly theirs.
2013-01-22 15:36:26 -08:00
Elliott Hughes
774cef56ee am ad551eaa: am 5f7b6b83: am 547eba0a: Merge "Avoid overflow in memccpy."
* commit 'ad551eaa0429bf5085f2901c5d367e8a54b7ed16':
  Avoid overflow in memccpy.
2013-01-22 15:23:53 -08:00
Elliott Hughes
bdd209561e am 1029364e: am e8e1f34a: am 85597e2b: Merge "Clean up debuggerd-related logging."
* commit '1029364ec5710755164ec9a7f0fe625cc184bb60':
  Clean up debuggerd-related logging.
2013-01-22 15:23:49 -08:00
Elliott Hughes
0b9b068b3f am 0dfb2eca: am 0609c0fe: am 7af7895e: Merge "Use the new non-allocating logging for dlmalloc failures."
* commit '0dfb2ecaab681e27fa81462daec9882ebcf36edc':
  Use the new non-allocating logging for dlmalloc failures.
2013-01-22 15:23:48 -08:00
Nick Kralevich
f27874740f Revert "libc: make system properties more secure."
This reverts commit f10c5a2215.

Bug: 8045561
2013-01-22 15:21:01 -08:00
Nick Kralevich
0acf4069e9 am 98ae1a85: am e652ed30: am 244bee5b: Merge "bionic_auxv.h: fix #define conflict"
* commit '98ae1a85b057f6534bee7e52897a80694ba8b2e1':
  bionic_auxv.h: fix #define conflict
2013-01-22 13:46:31 -08:00
Nick Kralevich
25e3f4a90d Merge "Revert "libc: make system properties more secure."" 2013-01-22 21:26:18 +00:00
Nick Kralevich
8897a9565a Revert "libc: make system properties more secure."
This reverts commit f10c5a2215.

Bug: 8045561
2013-01-22 12:44:11 -08:00
Elliott Hughes
f669fdf11e am 04afcd25: am 8ef83bc4: am 02f96b9d: Merge "Add missing extern "C"."
* commit '04afcd25a3758090009d3261f4c573b8ed73e03a':
  Add missing extern "C".
2013-01-22 11:35:50 -08:00
Elliott Hughes
16f7b78fd1 am 4cd5703b: am 75b64a1b: am ca483765: Merge "Fix the duplication in the debugging code."
* commit '4cd5703b9eef30a32271819503808576666e1601':
  Fix the duplication in the debugging code.
2013-01-22 10:05:19 -08:00
The Android Automerger
5f0de35c3e merge in jb-mr2-release history after reset to master 2013-01-21 07:10:08 -08:00
Robert Greenwalt
1136b7d821 Merge "Revert "dns cache per interface iteration 2"" 2013-01-19 00:40:38 +00:00
Robert Greenwalt
b002a2ff77 Revert "dns cache per interface iteration 2"
This reverts commit f1464ff956

Change-Id: I3496b9a8cb54614fe3eea016d1391c8a89f3db38
2013-01-19 00:40:24 +00:00
Geremy Condra
b1d1a7682f Merge "libc: make system properties more secure." 2013-01-19 00:26:23 +00:00
Nick Kralevich
f10c5a2215 libc: make system properties more secure.
Currently, system properties are passed via the environment
variable ANDROID_PROPERTY_WORKSPACE and a file descriptor passed
from parent to child. This is insecure for setuid executables,
as the environment variable can be changed by the caller.

Modify system property handling so that we get the properties
from a root owned properties file, rather than using an
environment variable.

Related to bug: 8029617

Change-Id: I5717e51f20f9e4339ed0a1fdf2fc797e52670fbb
2013-01-18 14:30:07 -08:00
Nick Kralevich
c82bc4f472 am 9468ee53: am f246ae98: am 5496bbf6: Merge "Revert "Filter ANDROID_PROPERTY_WORKSPACE""
* commit '9468ee53ac01a86255bd00976d8aa5a1a4141020':
  Revert "Filter ANDROID_PROPERTY_WORKSPACE"
2013-01-18 14:01:54 -08:00
The Android Automerger
f73a885f53 merge in jb-mr2-release history after reset to master 2013-01-18 07:10:09 -08:00
Guang Zhu
bf1d225593 Revert "Filter ANDROID_PROPERTY_WORKSPACE"
Temporarily revert the change since DNS resolution seems
broken right now in ping util.

Bug: 8029617

This reverts commit a0f64756a4.
2013-01-17 23:25:24 -08:00
Nick Kralevich
c5c99adeed am 8e833972: am 0a0c2321: am 4bfaf1e5: Merge "FORTIFY_SOURCE: optimize"
* commit '8e833972c2506267024136a0f609bdbb26dcc498':
  FORTIFY_SOURCE: optimize
2013-01-17 17:08:21 -08:00
Elliott Hughes
e230306135 am a4723742: am 261e9d08: am e4ca88d9: Merge "Add functionlity to the scripts to replace tokens in kernel headers based on architecture."
* commit 'a4723742c1ee0daa2ec17a148334c548b5edf3a8':
  Add functionlity to the scripts to replace tokens in kernel headers based on architecture.
2013-01-17 16:53:57 -08:00
Nick Kralevich
dbcf3ed458 am 36c4eb18: am 3a72fe58: am f3fe1945: Merge "linker: add -Wl,--exclude-libs,ALL to LDFLAGS"
* commit '36c4eb188c6594db877bd7b9f46c55264180dc3f':
  linker: add -Wl,--exclude-libs,ALL to LDFLAGS
2013-01-17 11:34:20 -08:00
Robert Greenwalt
89f9b30e4d Merge "dns cache per interface iteration 2" 2013-01-17 16:14:52 +00:00
The Android Automerger
ff1c00a29e merge in jb-mr2-release history after reset to master 2013-01-17 07:10:10 -08:00
Nick Kralevich
927d904d52 am 91bc5865: am 8d01c055: am 1271cdc1: Merge "Revert "stack protector: use AT_RANDOM""
* commit '91bc5865a333212e7cac934b0a2ac7c522911d58':
  Revert "stack protector: use AT_RANDOM"
2013-01-16 13:58:04 -08:00
Nick Kralevich
bcd18c0485 am 27ff1ae4: am de666485: am ba117e41: Merge "stack protector: use AT_RANDOM"
* commit '27ff1ae414915789b27d0a485ff6d856ae742aad':
  stack protector: use AT_RANDOM
2013-01-16 13:34:46 -08:00
Nick Kralevich
dde6b88a9f am 079e4356: am 30894bdf: am 1b34228b: Merge "Filter ANDROID_PROPERTY_WORKSPACE"
* commit '079e4356550030e8bacec86b8aa058ade2b7142c':
  Filter ANDROID_PROPERTY_WORKSPACE
2013-01-16 13:34:45 -08:00
Elliott Hughes
31ecd0c342 am b989c9ce: (-s ours) Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
* commit 'b989c9ceda71f6f75112645b5c45af341275cbab':
  Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
2013-01-16 13:31:35 -08:00
The Android Automerger
b3aff045b2 merge in jb-mr2-release history after reset to master 2013-01-16 10:08:57 -08:00
Elliott Hughes
1a18895ebc am e05709b1: am e611fad0: am 14e1975e: Merge "Fix signalfd for MIPS."
* commit 'e05709b1df7dba98c37e83f84dcbd2ad8429bcfc':
  Fix signalfd for MIPS.
2013-01-16 09:50:42 -08:00
The Android Automerger
27b8421a15 merge in master-release history after reset to master 2013-01-16 07:49:04 -08:00
Elliott Hughes
7cfe0d2602 am 04aa0fdd: (-s ours) am 42c5847d: (-s ours) am 791e26d9: (-s ours) Merge "Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."""
* commit '04aa0fdda60b6a492e572c2a79f21c732e8c33c8':
  Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
2013-01-15 13:40:39 -08:00
Nick Kralevich
0112ee2190 am d29c9fc1: am b59e358b: Merge "fix strerror_r test"
* commit 'd29c9fc18860a41f59d390b4aab937b61dd63ea1':
  fix strerror_r test
2013-01-15 11:20:23 -08:00
The Android Automerger
e7cc7957ac merge in master-release history after reset to master 2013-01-15 07:49:22 -08:00
Ben Cheng
6405103a32 am 4130af46: am b09d7d86: Merge "Add __aeabi_idiv to the dummy reference list."
* commit '4130af46bf120ac82ed61453215c7a692d84c1dd':
  Add __aeabi_idiv to the dummy reference list.
2013-01-14 18:01:35 -08:00
Nick Kralevich
9e22af2363 am 1519690c: am 29fe857e: Merge "headers: update auxvec.h from Linux kernel"
* commit '1519690cfb27af79627a8d39bf158a1feca953e3':
  headers: update auxvec.h from Linux kernel
2013-01-14 14:38:36 -08:00
Ben Cheng
86050b9e92 Merge "Add __aeabi_idiv to the dummy reference list." 2013-01-14 13:36:33 -08:00
Ben Cheng
a4e964d200 Add __aeabi_idiv to the dummy reference list.
If the platform code is compiled with -mcpu=cortex-a15, then without this
change prebuilt libraries built against -march=armv7 cannot resolve the
dependency on __aeabi_idiv (provided by libgcc.a).

Bug: 7961327

Change-Id: I0a05ce9c44e44d39b8ce1f0e319e2d37a010f3c7
2013-01-14 11:27:29 -08:00
Ian Rogers
7f7f232f4a am 763d4bb3: am 68fa57f0: Merge "Name anonymous mmap mallocs."
* commit '763d4bb345b2e8882dd39d0656ee9f23ca1d0512':
  Name anonymous mmap mallocs.
2013-01-14 11:22:56 -08:00
Nick Kralevich
1165da8390 am 13bd3716: am bb897fa9: Merge "libc_init_static: apply relro earlier."
* commit '13bd37160ee340ddcf7e1fb57251b124e0ec69c1':
  libc_init_static: apply relro earlier.
2013-01-14 10:34:45 -08:00
Elliott Hughes
32cefdbc7a am 375db86a: am 09d13c39: Merge "Fix my git mistake."
* commit '375db86aeaedfe716b69a62f81a2484ee446d5e5':
  Fix my git mistake.
2013-01-14 10:34:44 -08:00
Elliott Hughes
14ab1a63d6 am bc3c7183: am 48c632a3: Merge "[MIPS] Set DT_DEBUG dyntab entry if it is writable"
* commit 'bc3c718346d81c04451c35c2d8fb00c68b0a815d':
  [MIPS] Set DT_DEBUG dyntab entry if it is writable
2013-01-14 09:50:50 -08:00
The Android Automerger
76c8c61517 merge in master-release history after reset to master 2013-01-14 07:49:05 -08:00
Nick Kralevich
8ffe08c86b am fdd6dfa8: am 2c5153b0: libc: add getauxval()
* commit 'fdd6dfa863ea73251b5d59990e239854c31ecee3':
  libc: add getauxval()
2013-01-11 17:04:04 -08:00
Mattias Falk
f1464ff956 dns cache per interface iteration 2
name server addresses are read from the dns
cache associated wih the interface on which
the request shall be done.

processes which has requested to issue dns request
using specific interface are now proxied to netd.

added methods to attach/detach a process to a specific
dns cache/interface.

added getaddrinfoforinface method which takes an
interface as an argument.

Change-Id: I851ec8ab8ce3112626ad2a729078b91d013f32fd
bug:4815099
bug:5465296
2013-01-11 15:47:27 -08:00
Nick Kralevich
0529a52c60 am d0f81466: am 69c89942: Merge "Add stack canaries / strcpy tests."
* commit 'd0f81466e4e8e4179054a484cf6145efedfd7cb5':
  Add stack canaries / strcpy tests.
2013-01-11 11:31:07 -08:00
Wink Saville
8deebb34d3 am 801aeefe: am a12c5445: Fix unused warnings in pthread.c
* commit '801aeefe2d77a957172c3994f1c20cd0ac8d9bd8':
  Fix unused warnings in pthread.c
2013-01-11 10:54:50 -08:00
Elliott Hughes
376889ad71 am 0f9be1ea: am bfde0b6f: Merge "glibc 2.15 treats errno as signed in strerror(3)."
* commit '0f9be1eaee5a9367fb2f8c6ed86ed2fc1faa70b9':
  glibc 2.15 treats errno as signed in strerror(3).
2013-01-11 10:54:43 -08:00
Elliott Hughes
73dd37d8fe am 34c7a3c2: am 0d3700d9: Merge "Only have one copy of the kernel_sigset_t hack, and add more tests."
* commit '34c7a3c2b0ec50a749e25bd786e670025a6f1c5b':
  Only have one copy of the kernel_sigset_t hack, and add more tests.
2013-01-11 10:54:25 -08:00
Elliott Hughes
7e29f81163 am 4ff6fa97: am 2bbb8fac: Merge "Add signalfd call to bionic"
* commit '4ff6fa97e7cf247e17600cf0d64911c1579df841':
  Add signalfd call to bionic
2013-01-11 10:54:02 -08:00
The Android Automerger
ef06105819 merge in master-release history after reset to master 2013-01-11 07:49:08 -08:00
Robert Greenwalt
d09bdc7148 Merge "Cache negative DNS results." 2013-01-10 14:30:37 -08:00
Elliott Hughes
19dd1567a0 Revert "Add signalfd call to bionic"
This reverts commit 0c11611c11

Change-Id: I1a2beae7ed66ec995fdf6c96c53c35598ac6cde0
2013-01-10 10:47:58 -08:00
Rom Lemarchand
0c11611c11 Add signalfd call to bionic
Add signalfd() call to bionic.

Adding the signalfd call was done in 3 steps:
- add signalfd4 system call (function name and syscall
  number) to libc/SYSCALLS.TXT
- generate all necessary headers by calling
  libc/tools/gensyscalls.py. This patch is adding
  the generated files since the build system
  does not call gensyscalls.py.
- create the signalfd wrapper in signalfd.cpp and add
  the function prototype to sys/signalfd.h

Change-Id: I7ee1d3e60d5d3e1c73d9820e07d23b9ce6e1a5ab
2013-01-10 10:25:42 -08:00
Robert Greenwalt
78851f10d1 Cache negative DNS results.
Find the TTL for the negative results using the minimum of
the SOA records TTL or the MINIMUM-TTL field (RFC-2308).

bug:5926539
Change-Id: I6d39c9fb558afcb7a4a5bc014d97dab4a85c0d4f
2013-01-09 16:36:33 -08:00
The Android Automerger
8868be3a9f merge in master-release history after reset to master 2013-01-09 07:49:04 -08:00
Elliott Hughes
5043c376c9 am 5c5fe07e: am 364d9ee6: Merge "Don\'t test GNU-style ELF hashes on MIPS."
* commit '5c5fe07e43a20cd28c20bbf7a4a0443062ef144f':
  Don't test GNU-style ELF hashes on MIPS.
2013-01-08 10:27:20 -08:00
Elliott Hughes
76187899a6 am 79cecbd4: am 7e22db03: Merge "Fix an off-by-one error in the sigset_t function error handling."
* commit '79cecbd42187c13cfdb5462c93de42168e56f49b':
  Fix an off-by-one error in the sigset_t function error handling.
2013-01-08 10:27:15 -08:00
Elliott Hughes
375e10f739 am 2458d06f: am 26c5b2d4: Merge "[MIPS] Rewrite fenv.h for Android"
* commit '2458d06fc17ade76a8e2ae980a1e38f36350c6ee':
  [MIPS] Rewrite fenv.h for Android
2013-01-08 10:27:14 -08:00
The Android Automerger
326cb73c58 merge in master-release history after reset to master 2013-01-04 07:49:06 -08:00
Elliott Hughes
00ab4eb0db am ec137019: am 63dc5927: Merge "Add AF_CAN and PF_CAN (and other missing families)."
* commit 'ec1370191e3f0a8aedb8d77d1cec9a8aa58ebdd3':
  Add AF_CAN and PF_CAN (and other missing families).
2013-01-03 17:05:12 -08:00
Elliott Hughes
8dd63f31ba am 81508de3: am f0036944: Merge "Fix debug malloc."
* commit '81508de3d277db2ef3c8aa55b57ce3ce0a142e48':
  Fix debug malloc.
2013-01-03 16:47:22 -08:00
Elliott Hughes
27a7a5c138 am c654f4fd: am b1b53177: Merge "sysconf.c was renamed to sysconf.cpp (and modified)..."
* commit 'c654f4fda8f1b38109669cf0f5cb8a7d43860974':
  sysconf.c was renamed to sysconf.cpp (and modified)...
2013-01-03 12:10:17 -08:00
The Android Automerger
5c532dc8ee merge in master-release history after reset to master 2013-01-03 07:49:09 -08:00
Elliott Hughes
e9d6575e10 am 1287d106: am fb62558b: Merge "Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK)."
* commit '1287d106ed235e7366912bc7ab09df532848dd7a':
  Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK).
2013-01-02 16:35:08 -08:00
The Android Automerger
803bd660b6 merge in master-release history after reset to master 2012-12-31 07:49:13 -08:00
Elliott Hughes
36a9f354c0 am c0c05ff8: am 918d776f: Merge "Support System.loadLibrary for libraries with transitive dependencies."
* commit 'c0c05ff8ecfe5f27aedcd6315e191245aa7b4824':
  Support System.loadLibrary for libraries with transitive dependencies.
2012-12-28 09:48:19 -08:00
Elliott Hughes
0ce87c8984 am df5c77c9: am f6524f8b: Merge "Fix format_number."
* commit 'df5c77c91a276a79d05f58241df3695b56422d54':
  Fix format_number.
2012-12-28 09:46:53 -08:00
The Android Automerger
2937d9ab54 merge in master-release history after reset to master 2012-12-20 07:49:12 -08:00
Elliott Hughes
d020802e37 am 5fd31f68: am 4b582142: Merge "Fix x86 dynamic linker build."
* commit '5fd31f6891a6e0b5db84c4c7992d0a4b08f3dddd':
  Fix x86 dynamic linker build.
2012-12-19 09:51:36 -08:00
The Android Automerger
efe3ca7b48 merge in master-release history after reset to master 2012-12-19 07:49:06 -08:00
Elliott Hughes
05ab167cf7 am a0edecf3: am a4ebdcf5: Merge "Check for unknown flags passed to dlopen(3)."
* commit 'a0edecf3438d036ee2353076d171ee68939c2a5e':
  Check for unknown flags passed to dlopen(3).
2012-12-18 19:44:10 -08:00
The Android Automerger
b9cb7ee082 merge in master-release history after reset to master 2012-12-12 07:49:10 -08:00
Elliott Hughes
78b90c744d am 607bd477: am 4c4b08a3: Merge "Fix <endian.h> and <sys/endian.h>."
* commit '607bd47707680db36f377c5e8fc330953fd407e7':
  Fix <endian.h> and <sys/endian.h>.
2012-12-11 17:29:17 -08:00
The Android Automerger
f096529317 merge in master-release history after reset to master 2012-12-11 07:49:16 -08:00
Elliott Hughes
42d7a26d23 am f822e7f6: am 0521ff82: Merge "Use pthread_kill() in raise()"
* commit 'f822e7f68eec30bb175ccb46cd379f4a060b6c74':
  Use pthread_kill() in raise()
2012-12-10 11:42:06 -08:00
The Android Automerger
d08e76cd35 merge in master-release history after reset to master 2012-12-10 07:49:11 -08:00
Geremy Condra
edb53b3e9d am 28996f80: am 6fcf1770: Merge "Added audit.h from the kernel."
* commit '28996f80064579566d5a2ec5c69a00ef159a7e32':
  Added audit.h from the kernel.
2012-12-07 14:34:12 -08:00
Nick Kralevich
a710682db3 am 080210c1: am c8354f50: Merge "FORTIFY_SOURCE: remove memcpy overlap checks"
* commit '080210c16a3c233dacf26dda168932a475fdd40b':
  FORTIFY_SOURCE: remove memcpy overlap checks
2012-12-07 12:24:08 -08:00
Nick Kralevich
5e6213af54 am 79e1a01e: am 5dfdb701: Merge "FORTIFY_SOURCE: fix up previous commit"
* commit '79e1a01e9e994d88e17f6d11819dcfd35cfa5e19':
  FORTIFY_SOURCE: fix up previous commit
2012-12-07 12:24:07 -08:00
The Android Automerger
439bc8d540 merge in master-release history after reset to master 2012-12-06 07:49:14 -08:00
Nick Kralevich
1c88362021 am 8717c3db: am 7a34ed2b: Merge "clean up FORTIFY_SOURCE handling."
* commit '8717c3db2f864226bb68c7e26ad73fcff1212b31':
  clean up FORTIFY_SOURCE handling.
2012-12-05 08:25:37 -08:00
The Android Automerger
c3d031ee91 merge in master-release history after reset to master 2012-12-05 07:49:06 -08:00
Nick Kralevich
babe7e16a1 am ded6e3bf: am db79e827: Merge "FORTIFY_SOURCE: fortify strrchr"
* commit 'ded6e3bfca3010350d58d93f5f0f5cea256a4f73':
  FORTIFY_SOURCE: fortify strrchr
2012-12-04 11:45:28 -08:00
The Android Automerger
49dd0409e0 merge in master-release history after reset to master 2012-12-04 07:49:13 -08:00
Elliott Hughes
a03b2b075f am 3960fb60: am 60fb6833: Merge "mmap: Remove madvise() workaround"
* commit '3960fb602ce0346aecae7eede0f5d2bc1f7463ed':
  mmap: Remove madvise() workaround
2012-12-03 09:38:44 -08:00
Elliott Hughes
db11fdef1a am 43701d68: am 46d64ed2: Merge "Add argument checking to sigemptyset(3) and friends."
* commit '43701d68a90b161c64aa354a7d3e4ad9234a3174':
  Add argument checking to sigemptyset(3) and friends.
2012-12-03 07:55:38 -08:00
The Android Automerger
ae7af291e6 merge in master-release history after reset to master 2012-12-03 07:49:12 -08:00
Nick Kralevich
59b8677562 am 4140d90c: am 3acc908c: Merge "FORTIFY_SOURCE: fortify strchr"
* commit '4140d90c60e0a9b5b2f1b8ad3d17e169f7288ae9':
  FORTIFY_SOURCE: fortify strchr
2012-11-30 18:47:06 -08:00
Elliott Hughes
dcb8209409 am 7beaa502: am 16c61f08: Merge "Reduce the exposure of the __set_errno implementation detail."
* commit '7beaa5024f083431ca74ee73b01f5ad1e5b4198f':
  Reduce the exposure of the __set_errno implementation detail.
2012-11-30 14:46:50 -08:00
Elliott Hughes
2e51dc444f am 4835e6ef: am 97b70b2b: Merge "Replace .S version of x86 crtfiles with .c version"
* commit '4835e6ef519fc941651bbc13909cff971a6ec81b':
  Replace .S version of x86 crtfiles with .c version
2012-11-30 10:16:06 -08:00
The Android Automerger
3fa99562ea merge in master-release history after reset to master 2012-11-30 07:49:20 -08:00
Elliott Hughes
4ef6bc2e62 am 55210f74: am 07c0b73a: Merge "Remove (near-)duplicate definitions of size_t and ssize_t."
* commit '55210f74c71899b16f068bf30d7c9c5e647c490d':
  Remove (near-)duplicate definitions of size_t and ssize_t.
2012-11-29 19:45:27 -08:00
Elliott Hughes
4ad0910774 am c5861c09: am 50e62e40: Merge "Bug: __WINT_TYPE__ and wint_t reference to different types"
* commit 'c5861c09d5be632c2d42a8dcbd3eba97bdf80e0d':
  Bug: __WINT_TYPE__ and wint_t reference to different types
2012-11-29 15:59:48 -08:00
The Android Open Source Project
e12a238d41 am d6d5cbb0: (-s ours) Reconcile with jb-mr1.1-release - do not merge
* commit 'd6d5cbb02a263bb8b5ae9e3721b3ee80575c110a':
  msm_mdp: Update header for 4 layer support
2012-11-29 15:42:37 -08:00
Elliott Hughes
e8be11969f am 9ea86011: am 99ea84b1: Merge "[MIPS] Fix the MIPS getsid system call"
* commit '9ea86011a2c379b58df8c5b92efddf6764a57084':
  [MIPS] Fix the MIPS getsid system call
2012-11-29 15:15:33 -08:00
Elliott Hughes
7492875448 am 852935b6: am 5d4b8421: Merge "Verify architecture neutral syscall numbers"
* commit '852935b68f8b516f9f3f9cdff410b6a4b0cefc28':
  Verify architecture neutral syscall numbers
2012-11-29 15:15:33 -08:00
Elliott Hughes
3b48de92c7 am 56eb0bfe: am 78114220: Merge "Define DEFFILEMODE and friends"
* commit '56eb0bfedb5747407f1db5145f571695450c178d':
  Define DEFFILEMODE and friends
2012-11-29 15:15:27 -08:00
Naseer Ahmed
80a161db5c am ef7eea55: am 940e4c9d: am f61e5020: msm_mdp: Update header for 4 layer support
* commit 'ef7eea5538308d4a6d40cf964a6676409e890c24':
  msm_mdp: Update header for 4 layer support
2012-11-29 15:12:33 -08:00
The Android Automerger
d8366eae3b merge in master-release history after reset to master 2012-11-28 07:49:16 -08:00
Elliott Hughes
321b545ad9 am dea13da3: Merge "Clean up _BYTE_ORDER definitions for better x86 portability."
* commit 'dea13da3407873e4f3fec9ba1a04b4fdacea07f4':
  Clean up _BYTE_ORDER definitions for better x86 portability.
2012-11-27 18:44:17 -08:00
The Android Automerger
947f74dc95 merge in master-release history after reset to master 2012-11-27 07:49:30 -08:00
Elliott Hughes
4867b00666 am f2de6b0f: Merge "Do not include \'\0\' when writing error messages to stderr"
* commit 'f2de6b0f6e873f9cb28682b8fc6764b0ab41c6ee':
  Do not include '\0' when writing error messages to stderr
2012-11-26 16:04:19 -08:00
Elliott Hughes
03ff63cee0 am 429b05a1: Merge "Upgrade to tzdata2012j."
* commit '429b05a1dfa71c6085590d60e0bdfa09beb50844':
  Upgrade to tzdata2012j.
2012-11-26 15:12:30 -08:00
The Android Automerger
72f43a929f merge in master-release history after reset to master 2012-11-20 07:49:04 -08:00
Nick Kralevich
c16ea16134 am 8784709a: Merge "We should use load_bias. This patch fixes MIPS NDK device exception test failures."
* commit '8784709a2cfe6d32b5fff2c6b826b8d9cbf73d7b':
  We should use load_bias.  This patch fixes MIPS NDK device exception test failures.
2012-11-19 11:08:49 -08:00
The Android Automerger
8dd20fcd88 merge in master-release history after reset to master 2012-11-19 07:49:16 -08:00
Robert Greenwalt
3269d63772 Merge "Add search domain to dns interface data." 2012-11-16 12:21:33 -08:00
Nick Kralevich
3a681c8db1 am fe07ca04: Merge "Support GNU_RELRO for static executables."
* commit 'fe07ca04e4af6c43d068df0e23dc83431053fc22':
  Support GNU_RELRO for static executables.
2012-11-16 11:27:30 -08:00
Nick Kralevich
aec9a254a2 am 170168cd: Merge "Temporarily address gcc 4.7 breakage."
* commit '170168cdf37111b45b15817fab9e3df54cbc27b7':
  Temporarily address gcc 4.7 breakage.
2012-11-16 10:42:55 -08:00
Robert Greenwalt
6f3222ea42 Add search domain to dns interface data.
This doesn't currently use this info - it's still using the system
property based data-passing.  That change is comming.

bug:6799630
Change-Id: I725463209855447cd04bf1457281f3084fffd692
2012-11-13 11:50:57 -08:00
The Android Automerger
5b3aa025f3 merge in master-release history after reset to master 2012-11-12 07:49:10 -08:00
Elliott Hughes
da273a17e7 am c079dfe4: am 6542ac03: Merge "Add a memmove(3) benchmark."
* commit 'c079dfe4153941e6da881be9a143b41a1112c2ac':
  Add a memmove(3) benchmark.
2012-11-09 22:44:35 -08:00
Elliott Hughes
02a6ca7ef5 am d86d713b: am b62e2770: Merge "Add optimized version of memset for Cortex A9"
* commit 'd86d713b6345ac9c030aeb0eedee11fc17d2fba1':
  Add optimized version of memset for Cortex A9
2012-11-09 22:44:17 -08:00
The Android Automerger
6aa473274c merge in master-release history after reset to master 2012-11-09 07:49:12 -08:00
Elliott Hughes
b3dc5c60aa am 0b25791a: am 49677dec: Merge "Add optimized version of memcpy for Cortex A9"
* commit '0b25791a2819e01b28f777901facd5db03ba6961':
  Add optimized version of memcpy for Cortex A9
2012-11-08 18:18:35 -08:00
Elliott Hughes
aad391b8a6 am 6181aead: am c2132915: Merge "Add optimized version of memcmp for Cortex A9"
* commit '6181aead7b052503518d3c4ee836b7e9ddeca157':
  Add optimized version of memcmp for Cortex A9
2012-11-08 18:11:55 -08:00
Elliott Hughes
1233104f5e am 66eada96: am 7aca3103: Merge "Simple google3-compatible benchmarking."
* commit '66eada963290104e56a3c1785ff8a08ee5d800b5':
  Simple google3-compatible benchmarking.
2012-11-08 18:11:54 -08:00
Elliott Hughes
dfaf06ac03 am 70827cc8: am d460f3f1: Merge "Tests for string routines."
* commit '70827cc85ad8f7085131ff9c8d1e69bc80f9a9f3':
  Tests for string routines.
2012-11-08 09:33:57 -08:00
The Android Automerger
930a507786 merge in master-release history after reset to master 2012-11-08 07:49:11 -08:00
Elliott Hughes
2c9590664f am e4180f85: am 5408ac3c: Merge "Fix dlopen_library_with_only_gnu_hash_Test."
* commit 'e4180f85b717a4aec8024babda394221ba177c26':
  Fix dlopen_library_with_only_gnu_hash_Test.
2012-11-07 18:36:34 -08:00
The Android Automerger
bace2c47d3 merge in master-release history after reset to master 2012-11-07 07:49:17 -08:00
The Android Open Source Project
d15c8737ce am 92b7fbf8: (-s ours) am 414aadc7: am 3bf2fcf9: Reconcile with jb-mr1-factory-release jb-mr1-release - do not merge
* commit '92b7fbf8725fed5bfa3cae7c26d09e813b3ae920':
2012-11-06 11:18:49 -08:00
Elliott Hughes
d052eb6b47 am 8baaf6ff: am 604a163e: Merge "Rewrite <fenv.h> for ARM."
* commit '8baaf6ff9617ea5d0e49ca4a954c1b01cc306cbc':
  Rewrite <fenv.h> for ARM.
2012-11-05 16:57:23 -08:00
Elliott Hughes
dc20297f8d am 06224085: am bb91e9fb: Merge "Upgrade to tzdata2012i."
* commit '062240853d75a795db956965cacd4ab09a959ce7':
  Upgrade to tzdata2012i.
2012-11-05 11:34:20 -08:00
Elliott Hughes
da71c7d9a3 am ce876beb: am a41e6426: Merge "Tone down some of the overly-verbose linker logging."
* commit 'ce876bebf250d386a06ebc1145c6959e30bf413c':
  Tone down some of the overly-verbose linker logging.
2012-11-05 09:21:57 -08:00
The Android Automerger
5793235ec4 merge in master-release history after reset to master 2012-11-05 07:49:21 -08:00
Elliott Hughes
f1566fd692 am bc35807f: am 9df2e000: Merge "Cleaning the linker environment as we initialize it requires less API."
* commit 'bc35807fc6c5f11b6d057b20250d41ebc419da62':
  Cleaning the linker environment as we initialize it requires less API.
2012-11-02 13:58:48 -07:00
Elliott Hughes
d752fc0286 am cfb47daf: am 01271b18: Merge "Make dynamic linker debugging always available."
* commit 'cfb47daf4eb4741ac462c7350c73ad1cf96cf83f':
  Make dynamic linker debugging always available.
2012-11-02 13:58:47 -07:00
Elliott Hughes
1d0129b1b2 am cdc5a17c: am ed537239: Merge "Adjust symbol lookup for DT_SYMBOLIC case"
* commit 'cdc5a17cef00c49086e1bfe4c3715d2ebd61addb':
  Adjust symbol lookup for DT_SYMBOLIC case
2012-11-02 11:39:02 -07:00
The Android Automerger
80bcf54766 merge in master-release history after reset to master 2012-11-02 07:49:13 -07:00
Elliott Hughes
eb15e1d485 am e109930e: am dc77a228: Merge "Allow dlopen("egl/blah.so")."
* commit 'e109930e9fd0922280e6f74b3df270093ee95fa6':
  Allow dlopen("egl/blah.so").
2012-11-01 23:10:56 -07:00
Elliott Hughes
ceda36fa12 am 7f7ac8cd: am e3c7b519: Merge "Don\'t corrupt the thread list if the main thread exits."
* commit '7f7ac8cd19f1a7fc61aa640505747dee9036fa61':
  Don't corrupt the thread list if the main thread exits.
2012-11-01 17:39:12 -07:00
Elliott Hughes
d781dfdb09 am 6db8f5bb: am d30116cf: Merge "Keep the dynamic linker\'s soinfo pools mostly read-only."
* commit '6db8f5bb75bb79e0b4873e6d293aa25e2c9f090b':
  Keep the dynamic linker's soinfo pools mostly read-only.
2012-11-01 17:02:23 -07:00
Elliott Hughes
02c3513e5f am 65ba5b62: am 064f862d: Merge "Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too."
* commit '65ba5b62c5a59181317b86f772d9ebb756d4741f':
  Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too.
2012-11-01 14:15:11 -07:00
Elliott Hughes
00fe4a20d7 am 3bb62578: am 0be1819b: Merge "Dynamically allocate soinfo-structs in linker"
* commit '3bb62578beb36a35d3b1d2fbe18bd34a9d4ecca4':
  Dynamically allocate soinfo-structs in linker
2012-11-01 11:47:31 -07:00
The Android Automerger
7a6ae1d667 merge in master-release history after reset to master 2012-11-01 07:49:21 -07:00
Elliott Hughes
e892414bd3 am 1de3af51: am c0ac7eba: Merge "Reject .so files with no sysv hash table."
* commit '1de3af51d459c2ced602f10e4f7e7fe704400cdc':
  Reject .so files with no sysv hash table.
2012-10-31 15:15:45 -07:00
Elliott Hughes
a4242290a1 am f510fc78: am b46530bd: Merge "Start cleaning up libm."
* commit 'f510fc789a67344080543b9ae06d0ff3322561d5':
  Start cleaning up libm.
2012-10-31 13:54:18 -07:00
The Android Open Source Project
b5b52e73e9 am 089111a8: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '089111a80a6a167de827bf32ae2d2a935ff5874f':
2012-10-31 09:19:14 -07:00
The Android Automerger
a9b0cd68de merge in master-release history after reset to master 2012-10-31 07:49:21 -07:00
Elliott Hughes
8478dbc85f am 3cd7a165: am 084be591: Merge "linker: handle R_ARM_COPY relocations in a proper way"
* commit '3cd7a1653aa579213cb68a666bd9949e2b8fff95':
  linker: handle R_ARM_COPY relocations in a proper way
2012-10-30 17:20:01 -07:00
Elliott Hughes
864d48917a am 914112ea: am 155e8d1d: Merge "More dynamic linker cleanup."
* commit '914112ea21a62c7658dc4b094a369358009be6a9':
  More dynamic linker cleanup.
2012-10-30 16:59:17 -07:00
Elliott Hughes
08c4e30e23 am b0ac82e9: Merge commit \'bd8ee3d3\' into mm
* commit 'b0ac82e9baf969236be1174b49784500b33e6f48':
  Upgrade to tzdata2012h.
2012-10-30 15:24:37 -07:00
Elliott Hughes
4d2ea14288 am 4569ab97: am 06b59610: Merge "Fix bug in pthread_join, pthread_exit, pthread_detach"
* commit '4569ab9773efb1c984bde146002975e7a3753f11':
  Fix bug in pthread_join, pthread_exit, pthread_detach
2012-10-30 13:06:47 -07:00
Elliott Hughes
c7358ee57c am 743a273e: am 1f21ece4: Merge "Clean up the <libgen.h> implementation a little, bring in tests."
* commit '743a273e40e49c199d79462338fc606ae12c999f':
  Clean up the <libgen.h> implementation a little, bring in tests.
2012-10-30 10:11:44 -07:00
Elliott Hughes
7d617d0db9 am 5f787190: am 4d36b0bd: Merge "Fix the pthread_join on self error case."
* commit '5f787190a9e7a749d95f566f920b78eafcd05050':
  Fix the pthread_join on self error case.
2012-10-30 10:11:43 -07:00
Elliott Hughes
5e805afa79 am 0b8fa1d4: am 9297af94: Merge "Fix a potential NULL pointer dereference in _init_thread()."
* commit '0b8fa1d456f6cf831be41a6dc6b0a67e89f01bd5':
  Fix a potential NULL pointer dereference in _init_thread().
2012-10-30 10:11:42 -07:00
Elliott Hughes
d4834a217e am 40e467ec: am 33c4a3ad: Merge "libc: Fix alphasort() signature (and implementation)."
* commit '40e467ec668b59be25491bd44bf348a884d6a68d':
  libc: Fix alphasort() signature (and implementation).
2012-10-30 10:11:41 -07:00
Elliott Hughes
5ce5edd6cf am 85765609: am 8f9a1eb1: Merge "Upgrade to tzdata2012h."
* commit '8576560979e3d126ef8204959b87336d980b390b':
  Upgrade to tzdata2012h.
2012-10-30 10:11:40 -07:00
Elliott Hughes
96b52e104a am a67cedb5: am 9e783963: Merge "Clean up the implementation of the <dirent.h> functions."
* commit 'a67cedb52cb57f116a545482bddb979d995fd634':
  Clean up the implementation of the <dirent.h> functions.
2012-10-30 10:11:39 -07:00
The Android Automerger
5b006f3d08 merge in master-release history after reset to master 2012-10-26 07:49:10 -07:00
Elliott Hughes
4e0b489a0c am 8cacc639: am 7193731a: Merge "Workaround g++ 4.7 compfail"
* commit '8cacc639b6ae660c494aca07c537cb443c6c6cd9':
  Workaround g++ 4.7 compfail
2012-10-25 15:23:29 -07:00
Elliott Hughes
a7bb83475b am 85819efe: am f2b3ac95: Merge "Fix recovery: don\'t assert if there\'s no tzdata."
* commit '85819efe8f771759d12ab86f0bd47ede621dbb7d':
  Fix recovery: don't assert if there's no tzdata.
2012-10-25 15:16:44 -07:00
Elliott Hughes
0f96dd8dcb am df7f24f3: am 7b68e3f7: Merge "Per-thread -fstack-protector guards for x86."
* commit 'df7f24f310ee3ceb1dc9413d59d5a8816eb584ef':
  Per-thread -fstack-protector guards for x86.
2012-10-25 12:23:56 -07:00
The Android Automerger
2654447c0e merge in master-release history after reset to master 2012-10-25 07:52:10 -07:00
Elliott Hughes
4cdc426207 am 60c7ac26: am d0f2b7e7: Merge "More upstream NetBSD upgrades."
* commit '60c7ac262241588f7942ca068f33d706c8fe5cc4':
  More upstream NetBSD upgrades.
2012-10-23 17:29:47 -07:00
Elliott Hughes
217e616772 am 45f07555: am e3dbe1e3: Merge "Upgrade more functions to the current upstream NetBSD copy."
* commit '45f075556b26cfe91b1b7e1299b54f0328a06acb':
  Upgrade more functions to the current upstream NetBSD copy.
2012-10-23 13:58:25 -07:00
Elliott Hughes
1d212fa6eb am 4280143d: am fb93e6a5: Merge "Move setlocale(3) and the wchar stubs over to .cpp."
* commit '4280143d371eae2123a5d8c4d8779db159ecd1e2':
  Move setlocale(3) and the wchar stubs over to .cpp.
2012-10-22 18:08:54 -07:00
Elliott Hughes
1d8b87d2b4 am 69ec117b: am 5a9911e9: Merge "Add missing BEGIN_DECLS/END_DECLS for FORTIFY_SOURCE stdio prototypes."
* commit '69ec117b22e3e842bff15f54f3e777cdf3206d21':
  Add missing BEGIN_DECLS/END_DECLS for FORTIFY_SOURCE stdio prototypes.
2012-10-22 16:31:29 -07:00
Elliott Hughes
c866dc20bf am 9d5a96c0: am 574773b1: Merge "Clean up warnings in stubs.cpp."
* commit '9d5a96c0d9583fe9a02190ba54a855a2dcc87eb9':
  Clean up warnings in stubs.cpp.
2012-10-22 16:31:28 -07:00
Elliott Hughes
8b8cc88d39 am 75f33adc: am 4e457759: Merge "Move the FORTIFY_SOURCE helpers over to .cpp."
* commit '75f33adcb1f845ae121eb5508b120aaaa9f7a217':
  Move the FORTIFY_SOURCE helpers over to .cpp.
2012-10-22 16:00:03 -07:00
Elliott Hughes
3135c87ca8 am 008744ce: am df92635a: Merge "Support zone.tab in bionic, and remove the file format version."
* commit '008744cedaa7e3be533bbedb51dd986c6dfea987':
  Support zone.tab in bionic, and remove the file format version.
2012-10-22 15:11:07 -07:00
Elliott Hughes
9407c5c126 am 417834b1: am eb370aa3: Merge "Make bionic look in /data/misc for tzdata updates."
* commit '417834b17ee00a6b1cd4e816f632c3596f3f51c3':
  Make bionic look in /data/misc for tzdata updates.
2012-10-22 11:55:42 -07:00
Elliott Hughes
1b62d4e72e am 629a28cd: am dc595d83: Merge "Change ZoneCompator to generate the single "tzdata" file."
* commit '629a28cdf384d83a4d433de8e1299b01e42cc75e':
  Change ZoneCompator to generate the single "tzdata" file.
2012-10-19 17:24:22 -07:00
Elliott Hughes
421083359e am 58d08711: am 7a85c42b: Merge "Update generate-NOTICE.py to know about tzdata."
* commit '58d08711af5e8237d6196652d59cc4e8b8caafcf':
  Update generate-NOTICE.py to know about tzdata.
2012-10-19 17:24:21 -07:00
Elliott Hughes
933746ad7d am af72df5b: am e75c273a: Merge "Track the tzdata2012g update in the new file format."
* commit 'af72df5b98944cfb89cecb7abc05bceec0612981':
  Track the tzdata2012g update in the new file format.
2012-10-19 14:42:05 -07:00
Elliott Hughes
bde97cf154 am 98533cfa: am 88cd1a21: Merge "Upgrade to tzdata2012g."
* commit '98533cfa4b69d053e111e46bc74d8e9b2035a96e':
  Upgrade to tzdata2012g.
2012-10-19 13:53:21 -07:00
Elliott Hughes
18ee86f892 am f0af78c2: am 551ca77e: Merge "Do all the zoneinfo.* file generation in Java."
* commit 'f0af78c27bede71304a894c23fb3100d027fc74b':
  Do all the zoneinfo.* file generation in Java.
2012-10-19 13:53:20 -07:00
Elliott Hughes
174b6d0e19 am 356c0af6: am 2266e495: Merge "Switch bionic over to using libcore\'s copy of libcore.util.ZoneInfo."
* commit '356c0af60b83988bdb55970c8f29886a2fa5a672':
  Switch bionic over to using libcore's copy of libcore.util.ZoneInfo.
2012-10-19 13:22:50 -07:00
Elliott Hughes
a7bc708e0c am fb8ecd6e: am bc77942a: am f0e402db: Upgrade to tzdata2012g.
* commit 'fb8ecd6e2f20dba3b6eaf0bd6b834c2c072322c5':
  Upgrade to tzdata2012g.
2012-10-19 10:02:11 -07:00
Elliott Hughes
0f7814264c am 4d71adbc: am 10225071: Merge "Fixes x86 build."
* commit '4d71adbc0d12e5153f537f84cce8d9686762e5b9':
  Fixes x86 build.
2012-10-18 13:58:18 -07:00
Elliott Hughes
c0e8400361 am 79c6a8d2: am ca7466d2: Merge "Make bionic\'s dependency on the tzdata explicit."
* commit '79c6a8d2b163e40eb6f19bbf8f59eb85fb7996e6':
  Make bionic's dependency on the tzdata explicit.
2012-10-18 13:40:19 -07:00
Elliott Hughes
c63dda22dd am 1b315363: am 5ae762a3: Merge "Pull bionic\'s time zone data from the new single \'tzdata\' file."
* commit '1b315363c22fdf53d77fc83ec0bbada32e73ccc7':
  Pull bionic's time zone data from the new single 'tzdata' file.
2012-10-18 11:02:01 -07:00
Elliott Hughes
9648b588b4 am e5c8ced4: am 9ffaabcc: Merge "Remove obsolete CHANGES.TXT and ISSUES.TXT."
* commit 'e5c8ced4f95e97b2fadc0c64fbdbeeb023677035':
  Remove obsolete CHANGES.TXT and ISSUES.TXT.
2012-10-18 10:28:52 -07:00
Elliott Hughes
f190a16e5e am c2e4c310: am 32ea9fe5: Merge "Put all the tzdata in one file."
* commit 'c2e4c310ff9ace06be0376d649a09abb51813981':
  Put all the tzdata in one file.
2012-10-17 16:12:19 -07:00
Elliott Hughes
9eaa953642 am 06abe13c: am a2f596b6: Merge "Make dlerror(3) thread-safe."
* commit '06abe13c5f7a318eef316268d0d25d92ff128c19':
  Make dlerror(3) thread-safe.
2012-10-17 11:05:19 -07:00
David 'Digit' Turner
826215bec2 am c7dc8425: am 42ac0e50: Merge "Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>""
* commit 'c7dc842529ea6f8801164eb8b4f7d036acc53955':
  Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"
2012-10-17 10:32:36 -07:00
David 'Digit' Turner
87f487f6ce am 423a0740: am 4136c3a2: Merge "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"
* commit '423a0740b536f688b0c1866437dfe59e06413435':
  libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>
2012-10-17 07:34:57 -07:00
Elliott Hughes
2734345095 am ee7a28c5: am a9944cfe: Merge "LONG_LONG_MIN/MAX: Move declarations to <limits.h>"
* commit 'ee7a28c529dad9f51aa86271350a4e2d7cddc9d4':
  LONG_LONG_MIN/MAX: Move declarations to <limits.h>
2012-10-15 20:25:32 -07:00
Elliott Hughes
b2d2b30a13 am 1452324f: am fcf901d5: Merge "Fix realloc(3) when chk_malloc debugging is on."
* commit '1452324ff551f3aa7f9d61186d3b9cb04f7e9d39':
  Fix realloc(3) when chk_malloc debugging is on.
2012-10-12 17:15:39 -07:00
Elliott Hughes
4089dea451 am c2483ea9: am 9434e8fe: Merge "Make the dlfcn mutex static."
* commit 'c2483ea9b63de373e7521e39162395a8c667239a':
  Make the dlfcn mutex static.
2012-10-12 11:24:25 -07:00
Elliott Hughes
66d71c8f13 am ab4e2ed1: am db4fdf1a: Merge "Fix dlerror(3)."
* commit 'ab4e2ed182011998751ff5d6c321ff5bae20c6cd':
  Fix dlerror(3).
2012-10-12 10:49:08 -07:00
The Android Open Source Project
aff37491a1 am cf3fa7f4: (-s ours) Reconcile with jb-mr1-factory-release - do not merge
* commit 'cf3fa7f45742c870f1478b1bf7717d3042d599d7':
2012-10-12 07:32:05 -07:00
Elliott Hughes
f0f052f28d am 2facd5b5: am 417fd233: Merge "Fix perf_event_open syscall for x86 and mips"
* commit '2facd5b5ef3e52b11590b4de01e17f6923a85aee':
  Fix perf_event_open syscall for x86 and mips
2012-10-11 10:43:49 -07:00
The Android Open Source Project
3622c73cfc am d1844d4b: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'd1844d4b30a0f75ed0c30c923bea7c718ba53034':
2012-10-11 05:59:18 -07:00
Ying Wang
9ab8851756 am 06201227: am ecbded40: am 2c287e95: Set up the private variables.
* commit '0620122763502e4ec6f9939c009faaf5a890ad08':
  Set up the private variables.
2012-10-10 13:54:48 -07:00
Elliott Hughes
c41e2216f4 am 4c3d7a86: am 1ceb9824: Merge "Fix a getcwd(3) bug and make our tests run correctly under valgrind."
* commit '4c3d7a86bb568e0b3fa5c9e24d32fa1ee9404b2e':
  Fix a getcwd(3) bug and make our tests run correctly under valgrind.
2012-10-09 18:29:25 -07:00
Elliott Hughes
5a16e92eb5 am c7f654df: am b83cad79: Merge "Fix two comment typos."
* commit 'c7f654dffea47a80ba566cd05f9212c8c7359a67':
  Fix two comment typos.
2012-10-09 17:39:51 -07:00
Ying Wang
ed0570bf0c am a55f0a10: am b04598a6: Set up the private variables.
* commit 'a55f0a1007423837ff8dc26336a1976469439def':
  Set up the private variables.
2012-10-08 16:21:46 -07:00
Elliott Hughes
1cae8da8e7 am 7e785323: am 9a7366e8: am fa7e2586: Merge "Test flags before using "info""
* commit '7e7853230fcf141477d7332634858c08d8eec5b9':
  Test flags before using "info"
2012-10-03 17:44:53 -07:00
The Android Open Source Project
c34bdc957c am ae8000f3: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'ae8000f368926478b7a1e0a56a3d3ee53c2c4a01':
2012-10-03 07:36:22 -07:00
Naseer Ahmed
2d5d80985e am 9c389255: am 6b1ba118: am 3ef4fecd: bionic: update processed msm_mdp.h
* commit '9c3892558f68ec8791283844e2d7d7326bcd3574':
  bionic: update processed msm_mdp.h
2012-10-03 01:05:02 -07:00
Andy McFadden
399f54c133 am 51c7167d: am 7c67e4e4: am 98957db5: Merge "Test flags before using "info"" into jb-mr1-dev
* commit '51c7167d2245286e3458ffb06b0b5068d8f04e1b':
  Test flags before using "info"
2012-10-02 15:28:17 -07:00
Andreas Huber
ae554abd41 am 3a0aa5e0: am cafbc940: am 2e0452cb: bionic: update processed msm_vidc_enc.h
* commit '3a0aa5e0a01c26278438513a73bc0150d5fc215c':
  bionic: update processed msm_vidc_enc.h
2012-10-02 14:44:32 -07:00
Elliott Hughes
f0a9cd7847 am 92e6de6f: am b95ad82f: am 95a2a7f3: Merge "Fix MIPS build."
* commit '92e6de6f940fee6362dd306ad77c6d7bfa56e4cb':
  Fix MIPS build.
2012-10-02 11:34:14 -07:00
Elliott Hughes
6cdf8dd025 am 80a29832: am 90172541: am b98204a9: Merge "Move non-upstream code into the libc/bionic directory."
* commit '80a298327299aa28b564941f90818911023ae544':
  Move non-upstream code into the libc/bionic directory.
2012-10-02 09:28:31 -07:00
The Android Open Source Project
4fbb1569f5 am 4cf143f1: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '4cf143f1c8e7147e696225cc852e532f50115624':
2012-10-02 09:17:27 -07:00
Elliott Hughes
95114ff5c5 am 15edd80a: am 39d7c607: am 75f43525: Merge "Always take GCC\'s definition of NULL."
* commit '15edd80a696c1b5243874f7db9ef2d753016ade8':
  Always take GCC's definition of NULL.
2012-10-01 18:23:31 -07:00
Elliott Hughes
be02504f5f am baa7ee03: am bb7dfcd3: am d3bf954e: Merge "Remove useless #defines and incorrect claims from header files."
* commit 'baa7ee0370fcb88625a666141431a4187c0f91b2':
  Remove useless #defines and incorrect claims from header files.
2012-10-01 15:54:48 -07:00
Elliott Hughes
b5d5173139 am a54d08a7: am a428bc12: am fe712e6c: Merge "Upgrade seed48 too."
* commit 'a54d08a7c15e15f24d94ca6fb97329134d4441a2':
  Upgrade seed48 too.
2012-10-01 14:48:57 -07:00
Elliott Hughes
b28c547aa4 am 6ed5bc12: am b650111a: am cd195eba: Merge "Upgrade to the current NetBSD rand implementation."
* commit '6ed5bc12dac544004f8e79b6393b2a8e260a7cc1':
  Upgrade to the current NetBSD rand implementation.
2012-10-01 14:16:53 -07:00
Elliott Hughes
7f1464c03c am 068f3398: am 0fa6279f: am 5b6346f6: Merge "bionic: linker: Need update the map->l_addr for execution."
* commit '068f33981ddaee7e397eee73ea5ea97827aabeb7':
  bionic: linker: Need update the map->l_addr for execution.
2012-10-01 09:25:18 -07:00
Jean-Baptiste Queru
eab85a379d am adc32bc3: Merge from jb-mr1-aah-dev
* commit 'adc32bc3b18576a554143631ab72dc14c1b905c3':
2012-09-28 17:08:41 -07:00
Saurabh Shah
04373fe6fe am c556da9e: am 204b26b4: bionic: Update msm_mdp.h with new MSMFB_OVERLAY_COMMIT ioctl
* commit 'c556da9ed7b0142523d349e7af8ba6492b98a683':
  bionic: Update msm_mdp.h with new MSMFB_OVERLAY_COMMIT ioctl
2012-09-28 15:52:50 -07:00
Jean-Baptiste Queru
4dc7206c94 am de1efebd: Merge from jb-mr1-aah-dev
* commit 'de1efebdcac1bfa0e30fa7fbe0b4c7860a72a6a0':
2012-09-28 15:52:31 -07:00
Elliott Hughes
326e4037e9 am 8e1a87b5: am bb892a1b: am d03bfe68: Merge "Define ssize_t if necessary."
* commit '8e1a87b5470d0708b0503c3a33580e1782e2bda2':
  Define ssize_t if necessary.
2012-09-28 10:31:09 -07:00
Elliott Hughes
2e223d208f am fb1e192e: am 72b08af3: am f9163dd1: Merge "Add getdelim(3) and getline(3) to bionic"
* commit 'fb1e192e12fb4047bf5f01ccf0fd4e5644743adb':
  Add getdelim(3) and getline(3) to bionic
2012-09-28 09:57:11 -07:00
Elliott Hughes
4137d67cde am 209d67d4: am fd6ca57f: am e4030e0b: Merge "Fix several compiler warnings."
* commit '209d67d448a64d147521b3d2efb3efa392dd3ccd':
  Fix several compiler warnings.
2012-09-26 16:09:26 -07:00
Elliott Hughes
6a3d9af46e am bdc51470: am 2c29bcf7: am 827a2604: Merge "Replace __unused in kernel headers with __linux_unused to avoid conflicts with __unused macro in sys/cdefs.h"
* commit 'bdc514700d9f766f5a44a95bb80dab15846bd1c4':
  Replace __unused in kernel headers with __linux_unused to avoid conflicts with __unused macro in sys/cdefs.h
2012-09-26 15:20:38 -07:00
Elliott Hughes
100e313c75 am 0792223a: am dd9fbc86: am 8e630dac: Merge "Simple tests for dladdr(3)."
* commit '0792223a8ab0f9ecb5fc8fe471dbb7890bb6c2cc':
  Simple tests for dladdr(3).
2012-09-26 12:21:03 -07:00
Elliott Hughes
0a2d31838f am 66569e3d: am a48d5e5f: am 855dde44: Merge "Fix tmpfile(3)."
* commit '66569e3d53643fe4682091c4e11c25449e9b7fdc':
  Fix tmpfile(3).
2012-09-26 12:21:02 -07:00
Ying Wang
1be6e685a5 Merge "Set up the private variables." 2012-09-26 11:27:48 -07:00
Nick Kralevich
0147bd2f78 am 06abf4ed: am 5989ed5c: am 25937d36: Merge "FORTIFY_SOURCE: add umask check"
* commit '06abf4edbf4b6d10ee82369ed48b8145a94ba1aa':
  FORTIFY_SOURCE: add umask check
2012-09-26 11:15:38 -07:00
Ying Wang
f680b0f404 Set up the private variables.
Now we use private variables in transform-o-to-executable to support
build executables against the NDK.

Bug: 7170098
Change-Id: I6e505b33001b76f4b11fcbbb1d35392c4ddf4c70
2012-09-26 10:54:45 -07:00
Elliott Hughes
2fb6457efb am c3233178: am 00f33977: am 3307bff0: Merge "Revert dl_fbase initialization to the address where the shared object is loaded."
* commit 'c32331781097b51a46c03b002cd813752677236a':
  Revert dl_fbase initialization to the address where the shared object is loaded.
2012-09-26 10:46:39 -07:00
The Android Open Source Project
23042bab43 am db2b9d05: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'db2b9d052b3ebab73695af9335d649340cb8d193':
2012-09-26 10:08:03 -07:00
Elliott Hughes
a638642f44 am 354867d7: am 0eb4f255: am 6e0e03c3: Merge "Add the cleaned kernel headers"
* commit '354867d7020d4c7fb001c659245b60bff82a1a32':
  Add the cleaned kernel headers
2012-09-24 13:52:05 -07:00
Elliott Hughes
51d1a14c80 am a06e11cc: am c746bed8: am 7b0377ed: Merge "[MIPS] Removed the unused header"
* commit 'a06e11cc34612ef814a0f73bccdd43059111a735':
  [MIPS] Removed the unused header
2012-09-24 13:43:59 -07:00
Elliott Hughes
0647355bef am 28bd96cc: am d5c654c0: am 3b6914bf: Merge "Fix dlsym and dladdr to use load_bias instead of base"
* commit '28bd96cc0b9a5eed785df09a4c1bffc43b95fe6b':
  Fix dlsym and dladdr to use load_bias instead of base
2012-09-24 13:43:58 -07:00
Elliott Hughes
25b3416960 am f153ed38: (-s ours) am f4b34b6c: DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."
* commit 'f153ed380d94123d873d7ff04bc9b5b65f989c1d':
  DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."
2012-09-24 10:18:48 -07:00
The Android Open Source Project
7c7609f95e am 51d270af: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '51d270af6d9e648fdec43f716833b6f69688048e':
2012-09-24 10:14:49 -07:00
Elliott Hughes
c08088376a am 82ec6850: am 6c0e373d: am ec432608: am 0c24effd: Merge "Add the libcutils localtime_tz and mktime_t extensions to bionic."
* commit '82ec685054bd14e596fcb0661c7f5c398743b4b3':
  Add the libcutils localtime_tz and mktime_t extensions to bionic.
2012-09-24 09:48:35 -07:00
Elliott Hughes
9f3c0d32a4 am 6da07f02: am ecf67e15: am 2d51dddf: am 85049ead: Merge "Use hidden visibility for several internal-use-only functions."
* commit '6da07f02bd064cfae852df2b8ac82203432aef35':
  Use hidden visibility for several internal-use-only functions.
2012-09-24 09:48:34 -07:00
Elliott Hughes
2b83e0e67e am 0349e3d3: am d2eea0e6: am baa74eff: am 882c6af9: Merge "[MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro."
* commit '0349e3d3ffa411ffd47f005af7f9c5585e469165':
  [MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro.
2012-09-24 09:48:33 -07:00
Naseer Ahmed
f9355bc5cd am 21e0a7ee: am f7070074: bionic: Update MDP header for sync
* commit '21e0a7ee8bd9862452a429cef554f31e3c379903':
  bionic: Update MDP header for sync
2012-09-24 09:36:43 -07:00
Rebecca Schultz Zavin
e06f77dce0 am 27cfd6af: am a9dca773: Update ion header to add FLAG_CACHED_NEEDS_SYNC
* commit '27cfd6afd4039a72e3669a2ff32685e81dd455aa':
  Update ion header to add FLAG_CACHED_NEEDS_SYNC
2012-09-20 15:46:02 -07:00
The Android Open Source Project
284de14ebb am 0a6cbb97: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '0a6cbb97a82ac6cfc3ce3d1eaf2785f911600584':
2012-09-20 12:52:38 -07:00
Iliyan Malchev
dcc80e127c am e5521822: am 4430aa6a: Merge "Update headers for Adreno graphics driver" into jb-mr1-dev
* commit 'e55218223b070d5745dc73c5593c436277c5b9c0':
  Update headers for Adreno graphics driver
2012-09-19 15:18:52 -07:00
Elliott Hughes
73b5a72134 am ae0bccf7: am 0ef00090: am 30289f0d: am 47dc4d43: Merge "Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326"
* commit 'ae0bccf7d3252900d2ef31df2c6e4515908b89ec':
  Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
2012-09-18 17:31:35 -07:00
Dave Burke
5c5b720d81 am baa09d1e: am e5830324: Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
* commit 'baa09d1e0a408d410fc5a834fe9c283ae589ff13':
  Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
2012-09-18 00:10:52 -07:00
Elliott Hughes
41bb2eb806 am 1f1e7b70: am 2aceb4bc: am e2a17ef4: am 77ac158e: Merge "Don\'t copy strerror(3) or strsignal(3) strings if we can share."
* commit '1f1e7b70b7e37039ce53aed8b1b651c8692347e7':
  Don't copy strerror(3) or strsignal(3) strings if we can share.
2012-09-17 16:00:07 -07:00
Elliott Hughes
7379f525be am 469bd669: am 4b3ff1f0: am f8902bf7: am 047a285d: Merge "Fix <sys/klog.h> to correspond to the kernel operations."
* commit '469bd6692b984cfbecc96522960bb83baf7c9131':
  Fix <sys/klog.h> to correspond to the kernel operations.
2012-09-17 12:45:38 -07:00
Elliott Hughes
0e4065e8c7 am e409645c: am b67d4ec5: am 950a3c01: am 51519521: Merge "Add tty defaults to bionic"
* commit 'e409645c9953bb11bbad116834cecaebff444009':
  Add tty defaults to bionic
2012-09-17 12:45:34 -07:00
Elliott Hughes
62466a55bf am 7e9d6d8a: am b2af8b68: am 66a97ea9: am 4e9d953a: Merge "libc: add ftw / nftw functions"
* commit '7e9d6d8abba781992b1f55f36e02b2baae368d07':
  libc: add ftw / nftw functions
2012-09-14 10:28:47 -07:00
Elliott Hughes
cd1fb029eb am c9134074: am 1eaa3e6f: am 77fd7075: am e895e6de: Merge "Update libc/NOTICE and record the incantation."
* commit 'c91340749015c4d7e35bd377f9103a340ef65c6a':
  Update libc/NOTICE and record the incantation.
2012-09-14 10:28:46 -07:00
Kenny Root
07ab5cbbed am c01915fd: am 2b270a0c: am a4ea1a3d: am f7e403d6: Merge changes I06ee0b67,I914d2205
* commit 'c01915fd04dc352c77d4e2a0fbc906b515d2533c':
  Print out shared app gids correctly
  Add tests for Android-specific stubs
2012-09-14 10:28:05 -07:00
Elliott Hughes
6a163a1bf1 am c9829a2b: am 155a70b9: am de9db8f7: am fa36875d: Merge "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3)."
* commit 'c9829a2b6fb70f2eb0fc6a21f48546c66d9724c7':
  Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).
2012-09-14 10:28:04 -07:00
Elliott Hughes
8631744c49 am 953dbbda: am c7fda6a9: am d4623e56: am b338ea30: Merge "Upgrade to tzdata2012f."
* commit '953dbbda49c9a46e5b1b8d78a643c44eb1426d0e':
  Upgrade to tzdata2012f.
2012-09-14 10:28:03 -07:00
Elliott Hughes
4aebbf63c3 am 3d019017: am bec648ee: am 8db4b91b: am d2236e2c: Merge "Fix Mac build."
* commit '3d0190177469a8a25895117fc41625cd22e2fb28':
  Fix Mac build.
2012-09-13 14:12:31 -07:00
Elliott Hughes
ce061964f7 am c005a55c: am 478f8ff3: am b2550dd4: am 4a9b7c69: Merge "Add libdl into libc_malloc_debug_leak build"
* commit 'c005a55c74105c4eed8e2b0ba68ce0bfd67ccffe':
  Add libdl into libc_malloc_debug_leak build
2012-09-13 14:12:02 -07:00
Elliott Hughes
9f7d6840da am 00f927f1: am 29861b5d: am 58d15966: am af4d630e: Merge "Added new test for dlopen which is failing for MIPS."
* commit '00f927f137b553caa19fdc62497c012a1cb95f88':
  Added new test for dlopen which is failing for MIPS.
2012-09-13 14:12:01 -07:00
Elliott Hughes
9a78257905 am cf57515f: am f801cf55: resolved conflicts for merge of 47bda0c2 to jb-mr1-dev
* commit 'cf57515f7070539d560640247df6941a360fcff9':
  Update the kernel headers to match external/kernel-headers.
2012-09-13 03:21:42 -07:00
Elliott Hughes
218c7f5dbe am 7f598671: am ccd7ee62: am 90ae787b: am 666d06fe: Merge "Backwards and forwards compatibility for an upcoming <sys/socket.h> change."
* commit '7f59867170653a62fb1fbce91bca5f4673be065d':
  Backwards and forwards compatibility for an upcoming <sys/socket.h> change.
2012-09-12 17:02:36 -07:00
The Android Open Source Project
b8ceb988ea am 76a3777a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '76a3777a4d6c3233ba2935828371abd3fbbac843':
2012-09-12 16:58:49 -07:00
Elliott Hughes
e290cd1606 am 68221a76: am cc0f2253: am 7f798147: am cc8668f2: Merge "[MIPS] Check error status from pipe system call"
* commit '68221a76b7ecfe5ed5d43d76eb3b7a505bf83c0d':
  [MIPS] Check error status from pipe system call
2012-09-12 15:35:00 -07:00
Elliott Hughes
20599f5c9e am eeabbaee: am f50b99f4: am e8b4d67a: am 59726bed: Merge "Rename crtstart variables as crtbegin, to match reality."
* commit 'eeabbaee88202a459ec381edc45c0995bdcfa3c8':
  Rename crtstart variables as crtbegin, to match reality.
2012-09-10 17:15:10 -07:00
Ying Wang
62fd0b699a am 33d552a4: am e3738414: am f9920563: am 67546bf2: Merge "Generate header dependency makefiles for the crt*.o"
* commit '33d552a4d1c766aeb99c71060aa091e7aafaaac9':
  Generate header dependency makefiles for the crt*.o
2012-09-10 17:14:10 -07:00
Elliott Hughes
d203fba8f0 am 934e18e7: am af4371b4: am 56ba6336: am f1d57e16: Merge "Add more pthreads tests."
* commit '934e18e715b0f6627f258d6fc8dc9406f39705f6':
  Add more pthreads tests.
2012-09-10 17:09:54 -07:00
Elliott Hughes
b3cbcb3547 am 5804b88a: am b0102454: am 7c7a7f8e: am d10309c3: Merge "Rename __dso_handle_so.c to __dso_handle_so.h"
* commit '5804b88a44c153fa1b39dd3095be9e905d77cee0':
  Rename __dso_handle_so.c to __dso_handle_so.h
2012-09-10 17:05:15 -07:00
Elliott Hughes
b35a90d682 am ffcb92e7: am b18d4f63: am 72fcdbe9: am 691ef3c8: Merge "Add mlockall and munlockall for Google TV."
* commit 'ffcb92e779b347b3725e560aa3aabd122a4dbd62':
  Add mlockall and munlockall for Google TV.
2012-09-10 17:05:14 -07:00
Ian Rogers
593315c327 am e9859df7: am 973bf681: am 77039d34: am e8f81547: Merge "Fix build warning of initialization but no use."
* commit 'e9859df7cc57f761a4b9457b4d55ecff33bfdc8b':
  Fix build warning of initialization but no use.
2012-09-06 11:54:48 -07:00
Elliott Hughes
f28d8d7042 am 684669df: am de0dc251: am 41ff8b98: am 6e3b0f2d: Merge "Don\'t corrupt the thread list in static executables."
* commit '684669dfd7fdefa1e0f45e91667af628d3742429':
  Don't corrupt the thread list in static executables.
2012-09-06 10:48:52 -07:00
The Android Open Source Project
c99828169b am c0ee1171: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'c0ee117170e9a8976ffd2afc99bce8f1242cefd1':
  Revert "Update ion header"
  :Revert "Update ion header"
2012-09-06 09:12:34 -07:00
Ajay Dudani
58deb845c5 am d58928e8: am 183d0a57: Update msm_ion.h ioctls so they dont conflict with ion.h
* commit 'd58928e83109aeac42e2226de3ec99a91e59a695':
  Update msm_ion.h ioctls so they dont conflict with ion.h
2012-09-05 21:52:04 -07:00
Ajay Dudani
1c24c54840 am bf3da78e: am 85811fc7: Revert "msm_ion: switch to using legacy_ion.h"
* commit 'bf3da78e690524414a8874313638f7cf33b44424':
  Revert "msm_ion: switch to using legacy_ion.h"
2012-09-05 21:47:56 -07:00
Ajay Dudani
457e60a2f8 am 7649d622: am dc81b447: Revert "add legacy_ion.h"
* commit '7649d62255f056d1520cd746ddcd6352d091f76f':
  Revert "add legacy_ion.h"
2012-09-05 21:46:33 -07:00
Elliott Hughes
bc30d0a798 am 8140487f: am 2da90705: am 008f4df5: am ff4608ae: Merge "Add missing dependencies."
* commit '8140487f6014f83c14cecb6ecb9535bd4966a13e':
  Add missing dependencies.
2012-09-05 15:22:28 -07:00
Elliott Hughes
db18cbdd85 am d5b14e35: am faf361a6: am 2fc3e1ef: am b2c5bd54: Merge "ARM: warn about atexit() calls from legacy shared libraries"
* commit 'd5b14e35521ee6a038714c42ec523dcfe183b65b':
  ARM: warn about atexit() calls from legacy shared libraries
2012-09-05 10:36:09 -07:00
Elliott Hughes
ec0d2a86b7 am 340ff83f: am ac3e35cd: am a76f2eca: am 26f2e4a1: Merge "ARM: make CRT_LEGACY_WORKAROUND work as intended"
* commit '340ff83f9878a478cfa4b5aaaf4260f96304c416':
  ARM: make CRT_LEGACY_WORKAROUND work as intended
2012-09-05 10:06:25 -07:00
Ian Rogers
48468f258a am 64f4e714: am f71d757f: am 7310a1c4: am 82978cae: Merge "Avoid malloc lock while calling pthread_atfork."
* commit '64f4e714186ff69016abcb241fd912ed8ef8472a':
  Avoid malloc lock while calling pthread_atfork.
2012-09-05 07:56:21 -07:00
Elliott Hughes
3ee5775a0f am 9deb460a: am ab558163: am b9f0a6eb: am be19a367: Merge "termios: add tcdrain"
* commit '9deb460a26b8d5f6c74b5935e35b6f419775a1e5':
  termios: add tcdrain
2012-09-04 18:18:01 -07:00
Elliott Hughes
6b08ed7937 am fe7ac11a: am f34c6d77: am bc374078: am 5ff23471: Merge "Add getsid system call to bionic"
* commit 'fe7ac11afa1c3a64c12e7e632e12b5c853ca3d89':
  Add getsid system call to bionic
2012-09-04 16:52:05 -07:00
Elliott Hughes
5f517ce256 am ad639c1d: am 877ad30f: am 507bcabb: am e03ab936: Merge "Add missing MALLOC_FAILURE_ACTION calls to dlmalloc."
* commit 'ad639c1d2bf0c12a77c24a3247cedf86cc719d6e':
  Add missing MALLOC_FAILURE_ACTION calls to dlmalloc.
2012-09-04 16:05:33 -07:00
Elliott Hughes
839ae785d8 am 1d07eda8: am c0e3b9dd: am b438c54d: am 1db615b4: Merge "bionic: Fix TINY_ANDROID build"
* commit '1d07eda8db4a8a8986b0e2681eef0d839c9901df':
  bionic: Fix TINY_ANDROID build
2012-09-04 13:53:51 -07:00
Ian Rogers
a4e3391db2 am 5b0e2de6: am b9ad1a1e: am 6abab301: am 6fe901ef: Merge "Upgrade to dlmalloc 2.8.6."
* commit '5b0e2de6aef96e10c26034d9b447208a56df82d9':
  Upgrade to dlmalloc 2.8.6.
2012-08-31 09:03:23 -07:00
Elliott Hughes
6709aba126 am 418ecb7e: am 8c368b5d: am dde94f4c: am 8b4e8a93: Merge "Improve the dynamic linker diagnostics."
* commit '418ecb7ec800d8caa97b01a84d7403272fab4e28':
  Improve the dynamic linker diagnostics.
2012-08-29 14:11:52 -07:00
Nick Kralevich
35c3408b0d am 29e52652: am fe7d7d46: am 92133ca4: am 17d9be8a: Merge "disable _FORTIFY_SOURCE under clang"
* commit '29e526527c10f92d0a563d1cdec5f4eab0b33875':
  disable _FORTIFY_SOURCE under clang
2012-08-29 14:11:52 -07:00
Elliott Hughes
5fe555ecac am b3732862: am 8900e2de: am e5b85f45: am 0d7177c0: Merge "Clean up warnings in the malloc_debug_* files."
* commit 'b37328627be403b9c2a2896765a7bc7a357cb073':
  Clean up warnings in the malloc_debug_* files.
2012-08-29 13:23:34 -07:00
Ian Rogers
72758a138e am 71258e0d: am 15afed42: Merge "Revert "Revert "Restore posix_memalign""" into jb-mr1-dev
* commit '71258e0d207b9b51f1295808837df95e4dd2711a':
  Revert "Revert "Restore posix_memalign""
2012-08-29 08:57:50 -07:00
Ian Rogers
31abfc3a98 am 1df8fe33: am f71fa083: Merge "Revert "Revert "Upgrade to dlmalloc 2.8.5.""" into jb-mr1-dev
* commit '1df8fe33d59df1be3b1d33db033e379a32416a68':
  Revert "Revert "Upgrade to dlmalloc 2.8.5.""
2012-08-29 08:57:49 -07:00
Iliyan Malchev
230752b861 am 7e585192: am 66edcd9d: msm_ion: switch to using legacy_ion.h
* commit '7e5851922ce5430ea55e3c9325386846fbedf16c':
  msm_ion: switch to using legacy_ion.h
2012-08-29 01:39:28 -07:00
Iliyan Malchev
e59f4c31cb am ba13ae76: am 5f1d206d: add legacy_ion.h
* commit 'ba13ae767207d50dd2214cd5e8a941ab4da74d56':
  add legacy_ion.h
2012-08-29 01:39:28 -07:00
Nick Kralevich
9416782be5 am 2868bbab: am 4f90a093: am d3d09f7d: am 069c64cd: Merge "ARM: make sure __on_dlclose() actually gets called"
* commit '2868bbabf3a3146e682f314794b8803bfd60963b':
  ARM: make sure __on_dlclose() actually gets called
2012-08-28 13:46:31 -07:00
Nick Kralevich
97b9643c5b am 036fa6e6: am 54662dd4: am 1389db8b: am e026b1d8: Merge "ARM: remove dummy entries from .so init_array/fini_array"
* commit '036fa6e66958a05fbde9fddefc5fc8e31741fe80':
  ARM: remove dummy entries from .so init_array/fini_array
2012-08-28 13:09:40 -07:00
Nick Kralevich
c64bb00cdf am 773a7832: am d7440f37: am 7cab2188: am ad180738: Merge "linker: Fix ARM_R_COPY relocations"
* commit '773a783295e758bdef1a7e205761bcc1f832af95':
  linker: Fix ARM_R_COPY relocations
2012-08-28 13:09:39 -07:00
Nick Kralevich
953de64819 am 88160880: am 3ffdef19: am c7d9c400: am c410a961: Merge "libc: remove ctors/dtors sections"
* commit '88160880953e01f4fa7523938b6448f194f598a0':
  libc: remove ctors/dtors sections
2012-08-28 13:02:10 -07:00
Nick Kralevich
47cac977f5 am 5443561d: am 48c88804: am 775dabd4: am 9dfaa63a: Merge "Allow linker to compile with -DLINKER_DEBUG=1"
* commit '5443561d5d9fd8ababac989116a036b3ab7b15b0':
  Allow linker to compile with -DLINKER_DEBUG=1
2012-08-27 16:12:39 -07:00
Elliott Hughes
80921057d4 am ea108d8a: am 8c7f4777: am d2d8031d: am bc366292: Merge "Added missing cache failed notification"
* commit 'ea108d8a665aa708e878432ab1cdab959809ef9b':
  Added missing cache failed notification
2012-08-27 15:27:46 -07:00
Iliyan Malchev
5006660be8 am c9008991: am 3ad36e52: bionic: update sanitized MSM, V4L2 kernel headers
* commit 'c9008991f33b95831f94e0cc970c94a6ea6f4199':
  bionic: update sanitized MSM, V4L2 kernel headers
2012-08-27 15:17:31 -07:00
The Android Open Source Project
99696a9373 am 75f3d25c: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '75f3d25cef30dfa4578b1bb7562222ad51a75de5':
2012-08-25 07:16:49 -07:00
Ian Rogers
995f8c925f am 1f84a4e4: am a190cbb8: am 05fddb41: am a37ce7fa: Merge "Add missing va_end() to prevent stack corruptions"
* commit '1f84a4e426aca34ad17b6d626bd725e86a7c97b8':
  Add missing va_end() to prevent stack corruptions
2012-08-24 15:27:30 -07:00
Rebecca Schultz Zavin
bbe3d3916f am fa5942cc: am cbd76d15: Merge "Update ion header" into jb-mr1-dev
* commit 'fa5942cc081f3aef1ceb8cf6f0d8c0984d18bf82':
  Update ion header
2012-08-23 16:34:33 -07:00
Nick Kralevich
b46a1d8890 am dd5d865d: am 81af404b: am e8198b97: am 26facba2: Merge "hardening: remove pointless ARM __get_pc() function"
* commit 'dd5d865d92c21105d28dd931d56c2f5e2f4df275':
  hardening: remove pointless ARM __get_pc() function
2012-08-23 12:37:19 -07:00
The Android Open Source Project
e2862bb984 am b1d43872: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'b1d43872224837a85f593d9f946686c7272c7d0e':
  Revert "Upgrade to dlmalloc 2.8.5."
  Revert "Restore posix_memalign"
2012-08-22 15:35:50 -07:00
Brian Carlstrom
2bdfdfbf09 am 4a56211b: am f72ee269: Revert "Upgrade to dlmalloc 2.8.5."
* commit '4a56211b0b30757c8a5d64a59976a3a97d300a18':
  Revert "Upgrade to dlmalloc 2.8.5."
2012-08-22 13:56:16 -07:00
Brian Carlstrom
3985fbb348 am 71633454: am 78a3069f: Revert "Restore posix_memalign"
* commit '716334543788fe564b7d91055d6122657d409efd':
  Revert "Restore posix_memalign"
2012-08-22 13:56:16 -07:00
Jean-Baptiste Queru
3487c9b4a8 am 2400c7a6: am e49df020: am 170ad354: am c7de0225: Merge "Use unambiguous mnemonics"
* commit '2400c7a60edb18ab62fedcad86ce0d709895e26d':
  Use unambiguous mnemonics
2012-08-22 07:35:31 -07:00
Erik Gilling
98b62860cf am fed12112: am 974e16cd: update linux/sync.h
* commit 'fed121126afa91eb04a073ecc1e42535b1b52d27':
  update linux/sync.h
2012-08-21 19:14:12 -07:00
The Android Open Source Project
92042e8b91 am a5b7d6dd: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'a5b7d6dd00914651f77c4ff6604a2c16df6d73b9':
2012-08-21 16:07:05 -07:00
Andrew Hsieh
0b8770ccbd am 5e2aa357: am f861705f: am 5cd1efb2: am 1bd035cf: Merge "Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS"
* commit '5e2aa357d2f76a01c403a208524137c6fccf7304':
  Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS
2012-08-21 03:34:44 -07:00
Ian Rogers
6acc9d10e2 am 7c6cc4df: am 4ac3b0a1: am 8af726b2: am 7b0d9b79: Merge "Restore posix_memalign"
* commit '7c6cc4dffdcfad48733ac3c3001f5d9b137182b1':
  Restore posix_memalign
2012-08-20 19:47:21 -07:00
Brian Carlstrom
4beae98ae0 am 638b0fd9: am cc1f4acb: Restore posix_memalign
* commit '638b0fd95346c8930aabcdec933e8caa6d6b4c7c':
  Restore posix_memalign
2012-08-20 18:38:50 -07:00
Brian Carlstrom
d03266b2b7 am 94c82633: am 76f60e2e: am fe87596a: am c37dcd3d: Merge "Upgrade to dlmalloc 2.8.5."
* commit '94c82633c72acae0eb7a3390167b35eb3008b4ff':
  Upgrade to dlmalloc 2.8.5.
2012-08-20 16:36:05 -07:00
Elliott Hughes
758b1c46fb am 98f26893: am dd0e991c: am 2651d6c6: am 9417a80e: Merge "Always define the 64-bit int types."
* commit '98f26893a6a8811df1fe7e012f6cf8885e6c560e':
  Always define the 64-bit int types.
2012-08-17 17:01:23 -07:00
Elliott Hughes
230df050ed am ea5dea8e: am db2903fa: am cbeccc84: am 200de748: Merge "Fix race condition in pthread_create()"
* commit 'ea5dea8edb4217da7798ef29759c2b5d27f7dcfb':
  Fix race condition in pthread_create()
2012-08-17 16:30:02 -07:00
Elliott Hughes
1f6639a1bf am d060b824: am efd39834: am e5242bfd: am 1771a33d: Merge "Add link.h for all platforms with dl_phdr_info"
* commit 'd060b824dd293bf1ecd7814cd2e75a77186cefcb':
  Add link.h for all platforms with dl_phdr_info
2012-08-17 14:04:52 -07:00
Joe Onorato
342e174b24 am 947f2e61: am 28ae6f5d: am cefb93b6: am 6c98cdb1: Merge "Don\'t over-generalize makefiles. Host modules always build. This isn\'t needed on eng builds."
* commit '947f2e610a89931b20a4ddd678e89df12c76e058':
  Don't over-generalize makefiles.  Host modules always build. This isn't needed on eng builds.
2012-08-17 00:18:26 -07:00
The Android Open Source Project
cd6fd2f14d am 89a4090e: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '89a4090ecae61053e3ac6c9b96a8ee469495cf01':
2012-08-16 19:11:21 -07:00
Elliott Hughes
4b027b381f am 12911624: am a7d8f3d5: am c80ca54f: am 60ef95e1: Merge "Enhance getcwd(3) to handle NULL like glibc."
* commit '129116241022d51ca915ef1d6b94d131a3f5569f':
  Enhance getcwd(3) to handle NULL like glibc.
2012-08-16 17:09:35 -07:00
Elliott Hughes
0a14d9f5c8 am ca82e1f3: am 820ad428: am 74438bb2: am 449d4634: Merge "bionic: add macro protection for MALLOC_ALIGNMENT"
* commit 'ca82e1f3d17b57b1d5bbf0527cae58be1861e9ae':
  bionic: add macro protection for MALLOC_ALIGNMENT
2012-08-16 14:28:52 -07:00
Scott Anderson
4628d2f6bb am cc8165ae: am 09d9dd3a: Merge "Add clean kernel header for uhid." into jb-mr1-dev
* commit 'cc8165aea50294c6a86ad456967a7a741ac85a65':
  Add clean kernel header for uhid.
2012-08-16 12:07:53 -07:00
Elliott Hughes
26145cfc18 am 949d6faa: am a626bbdb: am 4af9141c: am ae728099: Merge "enable clone system call for x86"
* commit '949d6faa96e25170293d2a9ebe6f76cc91b77a6e':
  enable clone system call for x86
2012-08-15 17:26:44 -07:00
Elliott Hughes
1d16b89289 am 31041a01: am 29af938c: am ab8850f7: am 07cd1125: Merge "Fix comment typos."
* commit '31041a0138d62879257d6980abd1e006c299752b':
  Fix comment typos.
2012-08-15 17:11:48 -07:00
Elliott Hughes
b8d2695c82 am cdbd3406: am 4d63f33c: am 76aad1d2: am e1cd69a7: Merge "Regenerate all NOTICE files with the latest version of the script."
* commit 'cdbd3406f51d7f21326fe99df21e48a9191dddc1':
  Regenerate all NOTICE files with the latest version of the script.
2012-08-15 17:11:47 -07:00
Elliott Hughes
0681b2e477 am f53c75e5: am 2e3756b4: am 9b3bbcda: am fe43c768: Merge "Switch to the current NetBSD regex implementation."
* commit 'f53c75e513cb088d712badc32b89a8792a329d63':
  Switch to the current NetBSD regex implementation.
2012-08-15 16:03:03 -07:00
The Android Open Source Project
c05ca5f058 am e24cde44: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'e24cde4406792ee57f5dbfaa1efc35131f289063':
2012-08-15 08:29:17 -07:00
Elliott Hughes
cc9f4d56c0 am ff45d5cd: am 82259117: am 008a0a5d: am 53493a9b: Merge "Sort NOTICE entries."
* commit 'ff45d5cdbfc4117d69fc688f12ec251297eb8751':
  Sort NOTICE entries.
2012-08-14 15:47:31 -07:00
Iliyan Malchev
422bb8b5c4 am 912dd712: am df88d88f: Merge changes I2e8af44e,Ie9250a0e into jb-mr1-dev
* commit '912dd71259959a259478465296438e83d0ad8e64':
  update msm_mdp.h header to support vsync
  update processed msm_camera.h and msm_isp.h
2012-08-14 15:43:18 -07:00
Elliott Hughes
ea4900b89a am 0a3f66e9: am fdbecf3b: am 63696738: am b6a97196: Merge "More cleanup."
* commit '0a3f66e9a0ef47dc2f751292a69434405221ef90':
  More cleanup.
2012-08-14 15:14:56 -07:00
Elliott Hughes
8af9d9a7d0 am 7bb37492: am 89a35435: am 16a0cbaa: am b7c6991c: Merge "Update MS_ mount flags, define unshare() syscall."
* commit '7bb37492cc371e9bbca68406af1b94ae1348fe3c':
  Update MS_ mount flags, define unshare() syscall.
2012-08-14 12:33:05 -07:00
Elliott Hughes
6bdc30e923 am 028ed539: am dc320d99: am 82b69fcb: am b9c6854c: Merge "linker: avoid clobbering the .dynamic section of shared libs"
* commit '028ed539ddbe577687ac9778382c98aab3bf279f':
  linker: avoid clobbering the .dynamic section of shared libs
2012-08-14 12:21:21 -07:00
Elliott Hughes
a10b277de2 am bfcd5525: am b6d6ec53: am 370a7094: am c50e0197: Merge "Switch to upstream NetBSD tdelete/tfind/tsearch."
* commit 'bfcd55250058e927e0c6d0b94337c89fc2d86fa2':
  Switch to upstream NetBSD tdelete/tfind/tsearch.
2012-08-14 12:21:20 -07:00
Jeff Sharkey
0febe091a5 am 21f7ef9e: am d8450043: Merge "Update MS_ mount flags, define unshare() syscall." into jb-mr1-dev
* commit '21f7ef9eb269f75d7c291b4c574eabc865bf4362':
  Update MS_ mount flags, define unshare() syscall.
2012-08-14 12:11:01 -07:00
Elliott Hughes
d52075bd97 am 2bc1cade: am 93a9d534: am d544bdfa: am 54655eaf: Merge "Fix nice..."
* commit '2bc1cadeff4b7d41c889b8f1b965028ec575bed6':
  Fix nice...
2012-08-13 17:16:55 -07:00
Elliott Hughes
50b4523380 am aa29740c: am 69fc1522: am aa6c8994: am b66bc514: Merge "Clean up warnings in stubs.cpp."
* commit 'aa29740ce252113071f96872b7b99c8528bd1637':
  Clean up warnings in stubs.cpp.
2012-08-13 16:28:44 -07:00
Elliott Hughes
71c9a05614 am c37b31d8: am eab7bddd: am ca09412a: am 222eec2e: Merge "Handle naming for system uids running as secondary users"
* commit 'c37b31d848050b6bc534984556641f738fa0324b':
  Handle naming for system uids running as secondary users
2012-08-13 16:10:32 -07:00
Elliott Hughes
66c033868f am c64c1b49: am ad8ff472: am c1eb7619: am 440e417d: Merge "Add dependencies on all the makefiles."
* commit 'c64c1b49fd5c51b1b6e87d88b233d23fa172d372':
  Add dependencies on all the makefiles.
2012-08-13 16:10:31 -07:00
Elliott Hughes
4a5ab7a191 am 141a3b10: am cfd0345f: am 35dcf19b: am 66fba009: Merge "Update arch-mips/asm/unistd.h for the newer syscalls"
* commit '141a3b109c32acb0d7279ea85706db781bfc0594':
  Update arch-mips/asm/unistd.h for the newer syscalls
2012-08-13 16:10:30 -07:00
Amith Yamasani
79f3698f39 am c6c26a08: am ca7ee8a9: Merge "Handle naming for system uids running as secondary users" into jb-mr1-dev
* commit 'c6c26a08c8ffd431824e13c40328c35394fb4148':
  Handle naming for system uids running as secondary users
2012-08-13 13:53:55 -07:00
Elliott Hughes
5dcf871abb am 94d7f701: am 71c0366f: am e135d7f3: am a61ac525: Merge "Fix module constructor order."
* commit '94d7f701d1b5cda0621eb46160e11ccbeb85cdd3':
  Fix module constructor order.
2012-08-13 11:15:25 -07:00
Nick Kralevich
f574ce603a am 34e52129: am 19b10419: am 89fd9ecc: am 20b94c0c: Merge "linker: don\'t perform unnecessary mprotects"
* commit '34e5212961cb64cf690289bc94c59b3b6245694c':
  linker: don't perform unnecessary mprotects
2012-08-13 09:51:48 -07:00
Elliott Hughes
259f4a1503 am 7261264c: am 2a22a69e: am 877dc946: am 072a7e6c: Merge "MIPS support to the libc Makefile"
* commit '7261264c3a336bfb6e52241c2ba80679cbba68c8':
  MIPS support to the libc Makefile
2012-08-11 15:19:34 -07:00
Ben Cheng
dd8cd5d6bc am daedcfc5: am 9eeaa4bd: am 7e3918eb: am 0bf5cf87: Merge "Set the dynamic field in the link map for the linker itself."
* commit 'daedcfc595f51b1fe22b53d272cee1a142305a11':
  Set the dynamic field in the link map for the linker itself.
2012-08-11 15:19:33 -07:00
Ying Wang
c97c5fc788 Split out LOCAL_ASFLAGS.
Bug: 6967574
Change-Id: I5be50d582c1cb8075039b06292cf0745a996c3c4
2012-08-11 14:23:19 -07:00
Elliott Hughes
6a80cc9e08 am 516b26f2: am 0837c69a: am edf09bf9: am 316ee626: Merge "MIPS support to sigsuspend and sigwait routines"
* commit '516b26f2bf755879feb51d06dcd9511903d0a9bd':
  MIPS support to sigsuspend and sigwait routines
2012-08-10 15:20:58 -07:00
Nick Kralevich
d7a941f210 am 17f65bf4: am 73d99958: am fabeb736: am 38a02b4b: Merge "crtend*: Add GNU_STACK note"
* commit '17f65bf468074083624aa7546da024193d70c50a':
  crtend*: Add GNU_STACK note
2012-08-10 14:50:02 -07:00
Elliott Hughes
4a20a7f77c am 623ed02e: am d71ada63: am 535477ca: am 3ede900b: Merge "Revert "Revert "Switch to NetBSD\'s strxfrm(3)."""
* commit '623ed02e35fb8c5b8c868b11f53c005e39707f74':
  Revert "Revert "Switch to NetBSD's strxfrm(3).""
2012-08-10 14:16:50 -07:00
Elliott Hughes
63c16f85c5 am be01adce: am 5adc7fdc: am b54e5f2a: am a1822dce: Merge "Add unshare() syscall."
* commit 'be01adce3653912644b33e34a3c7894cf42c71e9':
  Add unshare() syscall.
2012-08-10 13:10:22 -07:00
Elliott Hughes
c383a32926 am 4fc5f6c3: am 5140b785: am f6922be2: am f91e2f72: Merge "Fix typo in SIGTTOU description."
* commit '4fc5f6c366dac9c3c264b94b413b1f162a60a53d':
  Fix typo in SIGTTOU description.
2012-08-10 12:54:39 -07:00
Elliott Hughes
1bb1aea178 am 7186a132: am 55206504: am a618ea30: am 4ec9e343: Merge "Revert "Switch to NetBSD\'s strxfrm(3).""
* commit '7186a13284bd70840b396aaec2090804e461869c':
  Revert "Switch to NetBSD's strxfrm(3)."
2012-08-10 12:54:38 -07:00
Elliott Hughes
c2817899e4 am 731ecf0a: am 29b8fb3d: am 3e83da43: am 9ad1d6f5: Merge "Switch to NetBSD\'s strxfrm(3)."
* commit '731ecf0a317b46e12a71542fdaa289d31898f3c0':
  Switch to NetBSD's strxfrm(3).
2012-08-10 12:54:37 -07:00
Elliott Hughes
75501a17f2 am d18b181a: am b6c1e34d: am dc6d5327: am 0836a7ff: Merge "Auto-generate a complete NOTICE file."
* commit 'd18b181a25b2fa21c20ecd4faaf5c8e6e50fb35b':
  Auto-generate a complete NOTICE file.
2012-08-10 12:40:35 -07:00
Jeff Sharkey
b17cd156b5 am 9a477de2: am 6ccc2c8f: Merge "Add unshare() syscall." into jb-mr1-dev
* commit '9a477de2f54922ba28dbc4789b12b83e64bd1474':
  Add unshare() syscall.
2012-08-10 11:33:26 -07:00
The Android Open Source Project
cb221a5cbe am 1551f18a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '1551f18af0c75c2b2c3ca61168fe4284b54f1a2e':
2012-08-10 08:53:33 -07:00
Elliott Hughes
444a2bf314 am 8e1e66da: am 31ab6ac0: am 8cc8f7e0: am 709bb0f7: Merge "Remove ThirdPartyProject.prop."
* commit '8e1e66da21398b9ccd4ce68d855909e5eb53f6f0':
  Remove ThirdPartyProject.prop.
2012-08-09 14:51:21 -07:00
Elliott Hughes
f1e95d935f am 9550a7c5: am 3fc21198: am 531d348d: am a17b85d9: Merge "Remove the last .jam file."
* commit '9550a7c57c7f2ed98a5266843e1929cfd92c4a16':
  Remove the last .jam file.
2012-08-09 12:15:02 -07:00
Elliott Hughes
1ab6f486de am 0ac6d235: am b13ad93f: am 3820229b: am d504eee9: Merge "MIPS support to sys/ headers"
* commit '0ac6d23515cbeb8462b62be713119edb8718cd70':
  MIPS support to sys/ headers
2012-08-08 17:49:39 -07:00
Elliott Hughes
a8e76ddf9e am 1afca3f6: am 73ac7d94: am d2040cb2: am f655ce7e: Merge "Fix x86 build."
* commit '1afca3f69887d9c761d448ddc0c4031176351fe1':
  Fix x86 build.
2012-08-08 17:49:38 -07:00
Elliott Hughes
40805076f9 am b02f100f: am 366c0199: am f3ffb8fa: am 78129204: Merge "Clean up the linker a bit, remove prelinking support."
* commit 'b02f100fa41d1905013b571fa4092857b873d78d':
  Clean up the linker a bit, remove prelinking support.
2012-08-08 15:34:04 -07:00
Elliott Hughes
baa35efba8 am 96fd6601: am 10e2d222: am d463f6e9: am 34959e0b: Merge "Clean up libc/Android.mk a bit after the crtbrand changes."
* commit '96fd66018cff2e3a217abdc95aafbcaea94e4a4e':
  Clean up libc/Android.mk a bit after the crtbrand changes.
2012-08-08 15:11:55 -07:00
Jean-Baptiste Queru
6dd6634bf6 am d0a7bc2f: am affd1b42: am 9f3a8aaf: am 7e248be7: Merge "Add a .note.android.ident section to Android ELF binaries."
* commit 'd0a7bc2fd61c052801226a7b92f544ebed6eb59a':
  Add a .note.android.ident section to Android ELF binaries.
2012-08-08 15:11:30 -07:00
The Android Open Source Project
60ca41ebb7 am d9c2de10: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'd9c2de10d94b1c46e0e3dee41bd6d8de673d2267':
2012-08-07 11:04:10 -07:00
The Android Open Source Project
fa844eff32 am 45193df5: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '45193df53aebb0764853aa21541e6f6ab73b9b9f':
  When compiling with clang, don't "fortify_source" the strlcpy and strlcat.
  When compiling with clang, don't "fortify_source" the strlen.
  Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
2012-08-06 13:35:38 -07:00
The Android Open Source Project
31096ceb79 am 1466b1aa: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '1466b1aad294138fc1e189c6fdce5eb7a2d06a42':
  Update msm_camera.h to version that supports instance handle based lookup
2012-08-06 13:19:43 -07:00
Shih-wei Liao
6f2e8f9878 am 25ef2bbf: am 3b4c9db2: am df523880: am e2731d98: Merge "When compiling with clang, don\'t "fortify_source" the strlcpy and strlcat."
* commit '25ef2bbf01bf6f8e934a07bd1304cba35ae5a38e':
  When compiling with clang, don't "fortify_source" the strlcpy and strlcat.
2012-08-06 11:12:30 -07:00
Shih-wei Liao
dec42d9112 am 42bfbd1e: am 6ff66601: am ce4a5cd5: am 8173d767: Merge "Revert "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute""
* commit '42bfbd1e617b7430fd5c62cb9162ab5c79655e3d':
  Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
2012-08-06 10:23:24 -07:00
Shih-wei Liao
839c4f1eb6 am ed33635d: am cddedade: am 924fd920: am 601a49d3: Merge "When compiling with clang, don\'t "fortify_source" the strlen."
* commit 'ed33635da7d8cfc6f5c61c5d7ab9bc42ab5b3916':
  When compiling with clang, don't "fortify_source" the strlen.
2012-08-06 10:23:23 -07:00
Elliott Hughes
b11eaaed35 am a870ded2: am eaac1e5a: am 94ce1356: am 7c92b6ca: Merge "Remove an awkward #include that is no longer upstream."
* commit 'a870ded21ac2e8b792ddc1fe1c5d71c421f0d8a1':
  Remove an awkward #include that is no longer upstream.
2012-08-06 08:09:25 -07:00
Elliott Hughes
15b3aef581 am 8ccbc90a: am 4bac8f68: am 7e81ee04: am 1c861728: Merge "Remove yet more SH4 cruft."
* commit '8ccbc90a3b6071dff015bff284b0a11d95a00349':
  Remove yet more SH4 cruft.
2012-08-03 15:17:14 -07:00
Elliott Hughes
031226a9fd am 9f8c7daf: am c9dbebe3: am f5385754: am aea5f00d: Merge "bionic: modify syscall to use 6 registers to pass parameter."
* commit '9f8c7daf402738beda56868692e62a90e095481d':
  bionic: modify syscall to use 6 registers to pass parameter.
2012-08-03 14:34:57 -07:00
Elliott Hughes
7478b0bfa6 am 58234e78: am 48955d24: am c6f15ecf: am 1510795f: Merge "Upgrade to tzdata2012e."
* commit '58234e788be30a16e6ba745adc21cbfd6d9828ec':
  Upgrade to tzdata2012e.
2012-08-03 13:41:39 -07:00
David Turner
65f12237b8 am c7813c08: am d7552a31: am 2f2b7212: am 16d40217: Merge "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute"
* commit 'c7813c08570a5e6ef3e410973d7f4b4befebee77':
  Fix the clang build: this compiler doesn't support the gnu_inline function attribute
2012-08-03 05:04:06 -07:00
Elliott Hughes
889a706637 am df7aa950: am 9b6a4538: am 0ce92b96: am 1e304a3b: Merge "[MIPS] Support for TLS register"
* commit 'df7aa95031f5f99ba3fc95956c38bf7ffd037ab4':
  [MIPS] Support for TLS register
2012-08-02 18:51:38 -07:00
Elliott Hughes
855a3779be am e5bd6efa: am f94effda: am fd4685be: am 52f3ee96: Merge "MIPS support for libc."
* commit 'e5bd6efa0805a743ed6c2022c65c5a8ff79d7310':
  MIPS support for libc.
2012-08-02 16:39:18 -07:00
Elliott Hughes
36c27b547e am 79d834b5: am 82dcfee5: am 19e30fc4: am a1c0f08d: Merge "Fix a ENOTUP/ENOTSUP typo."
* commit '79d834b5aba80407046ece1377033c8d48fbd427':
  Fix a ENOTUP/ENOTSUP typo.
2012-08-02 16:13:40 -07:00
Elliott Hughes
967c9f7fcb am 422067eb: am c0719660: am 670766c5: am 994935f6: Merge "Error numbers are target specific."
* commit '422067eb3ceba3c39903df5562cb8997b40d61c4':
  Error numbers are target specific.
2012-08-02 16:13:38 -07:00
Elliott Hughes
fccadc38bd am 0b8dda0e: am 673c092e: am 54830578: am f34ecbff: Merge "MIPS support to the linker"
* commit '0b8dda0e422e9669af06d9e6d264fb14652b23b5':
  MIPS support to the linker
2012-08-02 15:45:45 -07:00
Brian Muramatsu
963a8fc036 am fa22fd9f: am 402ec708: Merge "Update msm_camera.h to version that supports instance handle based lookup" into jb-mr1-dev
* commit 'fa22fd9f817e0fe49e0f7524f5589710f1140d8f':
  Update msm_camera.h to version that supports instance handle based lookup
2012-08-02 15:24:34 -07:00
The Android Open Source Project
3a6e56534d am d7b3cc0c: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'd7b3cc0c69b02cad4090a0068349f1ab83e3112f':
2012-08-02 15:09:18 -07:00
The Android Open Source Project
2a258c9f2d am 8f2f2466: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '8f2f24661870c349a19bff71d85ed5eb897c7c9f':
2012-08-01 14:50:42 -07:00
Shih-wei Liao
543960121c am cfc8b93c: am 4f13bdd4: am 7565d5b1: am 0ca9d074: Merge "Had include/arm/fenv.h, but missed include/mips/fenv.h."
* commit 'cfc8b93c4e223f72a2e419f4571f55f7eb819df3':
  Had include/arm/fenv.h, but missed include/mips/fenv.h.
2012-07-31 21:07:50 -07:00
Elliott Hughes
96ca71a7a6 am 029cf34c: am 81f1617a: am 8d2c5b24: am b910b6f8: Merge "Updated the cleaned header file mman.h for MIPS."
* commit '029cf34cfd3fc50fe373527c82855924a1db41ad':
  Updated the cleaned header file mman.h for MIPS.
2012-07-31 15:35:53 -07:00
The Android Open Source Project
338d3fbc8b am 6ac55791: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '6ac557918a1a5703f0376f659e5cb1a9af6a2901':
2012-07-31 15:05:49 -07:00
Elliott Hughes
0f004be596 am 494e534b: am f1997971: am 7645355e: am a513f70b: Merge "bionic: Stack pointer/signal race condition."
* commit '494e534b003a45c32e06d225cd89ad84777d28f7':
  bionic: Stack pointer/signal race condition.
2012-07-31 10:43:46 -07:00
Elliott Hughes
120e7fbeb9 am ad2e065d: am b78aa539: am bf397b60: am 21372896: Merge "fix __cxa_finalize() implementation to be thread safe."
* commit 'ad2e065de11748e1c33562cd2005ce14843d64f0':
  fix __cxa_finalize() implementation to be thread safe.
2012-07-31 10:43:45 -07:00
The Android Open Source Project
d8b46b7bc4 am 0531d199: Reconcile with jb-mr1-release
* commit '0531d199dca9d70ccfd4642f845de02736ecf87f':
2012-07-30 15:10:37 -07:00
Shih-wei Liao
a68c57ee5f am 0c2d3188: am 18421669: am 1ee6e3b7: Merge "Install crt(begin|end)_so.o to target library path."
* commit '0c2d3188373d7386b5946d1cf70155188cd616cd':
  Install crt(begin|end)_so.o to target library path.
2012-07-30 13:17:01 -07:00
The Android Automerger
f40c69c259 merge in master-release history after reset to master 2012-07-25 07:49:07 -07:00
The Android Automerger
1e52e79b70 merge in master-release history after reset to master 2012-07-24 07:49:06 -07:00
The Android Automerger
aaba380787 merge in master-release history after reset to master 2012-07-20 07:59:22 -07:00
The Android Automerger
43ef6784df merge in master-release history after reset to master 2012-07-19 07:49:05 -07:00
The Android Automerger
d18f341398 merge in master-release history after reset to master 2012-07-17 09:10:34 -07:00
Nick Kralevich
761ba27d62 Merge "FORTIFY_SOURCE: revert memcpy changes." 2012-07-16 15:18:43 -07:00
Cédric Cabessa
beb349348e syslog needs a valid socket path for _PATH_LOG
/dev/kmsg is a character device already used for different purposes.
Most distribution use /dev/log for _PATH_LOG but this path is already used
by logcat.
I suggest using /dev/syslog.
This change was tested with busybox's syslogd.

Change-Id: I75b428123c7a0b3ca4bea656ce06860f6f727dde
2012-05-13 17:16:06 +02:00
119 changed files with 7410 additions and 7347 deletions

View File

@@ -62,7 +62,6 @@ libc_common_src_files := \
string/strcspn.c \
string/strdup.c \
string/strpbrk.c \
string/__strrchr_chk.c \
string/strsep.c \
string/strspn.c \
string/strstr.c \
@@ -105,6 +104,7 @@ libc_common_src_files := \
bionic/md5.c \
bionic/memmem.c \
bionic/memswap.c \
bionic/name_mem.c \
bionic/openat.c \
bionic/open.c \
bionic/pathconf.c \
@@ -181,6 +181,25 @@ libc_common_src_files := \
netbsd/nameser/ns_print.c \
netbsd/nameser/ns_samedomain.c \
# Fortify implementations of libc functions.
libc_common_src_files += \
bionic/__fgets_chk.cpp \
bionic/__memcpy_chk.cpp \
bionic/__memmove_chk.cpp \
bionic/__memset_chk.cpp \
bionic/__strcat_chk.cpp \
bionic/__strchr_chk.cpp \
bionic/__strcpy_chk.cpp \
bionic/__strlcat_chk.cpp \
bionic/__strlcpy_chk.cpp \
bionic/__strlen_chk.cpp \
bionic/__strncat_chk.cpp \
bionic/__strncpy_chk.cpp \
bionic/__strrchr_chk.cpp \
bionic/__umask_chk.cpp \
bionic/__vsnprintf_chk.cpp \
bionic/__vsprintf_chk.cpp \
libc_bionic_src_files := \
bionic/abort.cpp \
bionic/assert.cpp \
@@ -189,15 +208,12 @@ libc_bionic_src_files := \
bionic/__errno.c \
bionic/eventfd_read.cpp \
bionic/eventfd_write.cpp \
bionic/__fgets_chk.cpp \
bionic/futimens.cpp \
bionic/getauxval.cpp \
bionic/getcwd.cpp \
bionic/libc_init_common.cpp \
bionic/libc_logging.cpp \
bionic/libgen.cpp \
bionic/__memcpy_chk.cpp \
bionic/__memmove_chk.cpp \
bionic/__memset_chk.cpp \
bionic/mmap.cpp \
bionic/pthread_attr.cpp \
bionic/pthread_detach.cpp \
@@ -220,24 +236,13 @@ libc_bionic_src_files := \
bionic/signalfd.cpp \
bionic/sigwait.cpp \
bionic/statvfs.cpp \
bionic/__strcat_chk.cpp \
bionic/__strchr_chk.cpp \
bionic/__strcpy_chk.cpp \
bionic/strerror.cpp \
bionic/strerror_r.cpp \
bionic/__strlcat_chk.cpp \
bionic/__strlcpy_chk.cpp \
bionic/__strlen_chk.cpp \
bionic/__strncat_chk.cpp \
bionic/__strncpy_chk.cpp \
bionic/strsignal.cpp \
bionic/stubs.cpp \
bionic/sysconf.cpp \
bionic/tdestroy.cpp \
bionic/tmpfile.cpp \
bionic/__umask_chk.cpp \
bionic/__vsnprintf_chk.cpp \
bionic/__vsprintf_chk.cpp \
bionic/wait.cpp \
bionic/wchar.cpp \
@@ -282,7 +287,12 @@ libc_upstream_freebsd_src_files := \
upstream-freebsd/lib/libc/stdio/tempnam.c \
upstream-freebsd/lib/libc/stdio/tmpnam.c \
upstream-freebsd/lib/libc/stdio/wsetup.c \
upstream-freebsd/lib/libc/stdlib/abs.c \
upstream-freebsd/lib/libc/stdlib/getopt_long.c \
upstream-freebsd/lib/libc/stdlib/imaxabs.c \
upstream-freebsd/lib/libc/stdlib/imaxdiv.c \
upstream-freebsd/lib/libc/stdlib/labs.c \
upstream-freebsd/lib/libc/stdlib/llabs.c \
upstream-freebsd/lib/libc/stdlib/qsort.c \
upstream-freebsd/lib/libc/stdlib/realpath.c \
upstream-freebsd/lib/libc/string/wcpcpy.c \
@@ -357,7 +367,6 @@ libc_common_src_files += \
bionic/memmove.c.arm \
string/bcopy.c \
string/strncmp.c \
string/strcat.c \
string/strncat.c \
string/strncpy.c \
bionic/strchr.cpp \
@@ -800,6 +809,9 @@ LOCAL_WHOLE_STATIC_LIBRARIES := \
libc_tzcode
LOCAL_SYSTEM_SHARED_LIBRARIES :=
# TODO: split out the asflags.
LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
include $(BUILD_STATIC_LIBRARY)

View File

@@ -14,7 +14,6 @@ _LIBC_ARCH_COMMON_SRC_FILES := \
arch-arm/bionic/_setjmp.S \
arch-arm/bionic/setjmp.S \
arch-arm/bionic/sigsetjmp.S \
arch-arm/bionic/strcpy.S \
arch-arm/bionic/syscall.S \
arch-arm/bionic/tgkill.S \
arch-arm/bionic/tkill.S \
@@ -27,6 +26,17 @@ _LIBC_ARCH_STATIC_SRC_FILES := \
_LIBC_ARCH_DYNAMIC_SRC_FILES := \
arch-arm/bionic/exidx_dynamic.c
# Remove the C++ fortify function implementations for which there is an
# arm assembler version.
_LIBC_FORTIFY_FILES_TO_REMOVE := \
bionic/__memcpy_chk.cpp \
bionic/__memset_chk.cpp \
bionic/__strcpy_chk.cpp \
bionic/__strcat_chk.cpp \
libc_common_src_files := \
$(filter-out $(_LIBC_FORTIFY_FILES_TO_REMOVE),$(libc_common_src_files))
ifeq ($(strip $(wildcard bionic/libc/arch-arm/$(TARGET_CPU_VARIANT)/$(TARGET_CPU_VARIANT).mk)),)
$(error "TARGET_CPU_VARIANT not set or set to an unknown value. Possible values are cortex-a7, cortex-a8, cortex-a9, cortex-a15, krait. Use generic for devices that do not have a CPU similar to any of the supported cpu variants.")
endif

View File

@@ -30,8 +30,8 @@
* dynamic linker to copy their definition into the final libc.so binary.
*
* They are required to ensure backwards binary compatibility with
* Android 1.5, 1.6 and even 3.0 system images. Some applications built
* using the NDK require them to be here.
* libc.so provided by the platform and binaries built with the NDK or
* different versions/configurations of toolchains.
*
* Now, for a more elaborate description of the issue:
*
@@ -48,7 +48,9 @@
* gcc <options> -o libfoo.so foo.a libgcc.a -lc -lm
*
* This ensures that any helper function needed by the code in foo.a is copied
* into the final libfoo.so. Unfortunately, the Android build system has been
* into the final libfoo.so. However, doing so will link a bunch of other __cxa
* functions from libgcc.a into each .so and executable, causing 4k+ increase
* in every binary. Therefore the Android platform build system has been
* using this instead:
*
* gcc <options> -o libfoo.so foo.a -lc -lm libgcc.a
@@ -58,9 +60,10 @@
* into libfoo.so. Instead, a symbol import definition will be added to it
* so libfoo.so can directly call the one in libc.so at runtime.
*
* When changing toolchains for 2.0, the set of helper functions copied to
* libc.so changed, which resulted in some native shared libraries generated
* with the NDK to fail to load properly.
* When refreshing toolchains for new versions or using different architecture
* flags, the set of helper functions copied to libc.so may change, which
* resulted in some native shared libraries generated with the NDK or prebuilts
* from vendors to fail to load properly.
*
* The NDK has been fixed after 1.6_r1 to use the correct link command, so
* any native shared library generated with it should now be safe from that
@@ -73,6 +76,11 @@
* but it is easier to add a single function here than asking several app
* developers to fix their build.
*
* The __aeabi_idiv function is added to the list since cortex-a15 supports
* HW idiv instructions so the system libc.so doesn't pull in the reference to
* __aeabi_idiv but legacy libraries built against cortex-a9 targets still need
* it.
*
* Final note: some of the functions below should really be in libm.so to
* completely reflect the state of 1.5/1.6 system images. However,
* since libm.so depends on libc.so, it's easier to put all of
@@ -113,6 +121,7 @@
XX(__aeabi_idiv) \
XX(__aeabi_l2d) \
XX(__aeabi_l2f) \
XX(__aeabi_lasr) \
XX(__aeabi_lmul) \
XX(__aeabi_llsl) \
XX(__aeabi_llsr) \
@@ -123,7 +132,7 @@
XX(__cmpdf2) \
XX(__divdf3) \
XX(__divsf3) \
XX(__eqdf2) \
XX(__eqdf2) \
XX(__extendsfdf2) \
XX(__fixdfsi) \
XX(__fixsfsi) \

View File

@@ -0,0 +1,227 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.thumb
.thumb_func
// Get the length of src string, then get the source of the dst string.
// Check that the two lengths together don't exceed the threshold, then
// do a memcpy of the data.
ENTRY(__strcat_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
mov lr, r2
// Save the dst register to r5
mov r5, r0
// Zero out r4
eor r4, r4, r4
// r1 contains the address of the string to count.
.L_strlen_start:
mov r0, r1
ands r3, r1, #7
beq .L_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
.L_align_to_32:
bcc .L_align_to_64
ands ip, r3, #2
beq .L_align_to_64
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r3, [r1], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
.p2align 2
.L_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_update_count_and_finish:
sub r3, r1, r0
sub r3, r3, #1
b .L_finish
.L_zero_in_first_register:
sub r3, r1, r0
lsls r2, ip, #17
bne .L_sub8_and_finish
bcs .L_sub7_and_finish
lsls ip, ip, #1
bne .L_sub6_and_finish
sub r3, r3, #5
b .L_finish
.L_sub8_and_finish:
sub r3, r3, #8
b .L_finish
.L_sub7_and_finish:
sub r3, r3, #7
b .L_finish
.L_sub6_and_finish:
sub r3, r3, #6
b .L_finish
.L_zero_in_second_register:
sub r3, r1, r0
lsls r2, ip, #17
bne .L_sub4_and_finish
bcs .L_sub3_and_finish
lsls ip, ip, #1
bne .L_sub2_and_finish
sub r3, r3, #1
b .L_finish
.L_sub4_and_finish:
sub r3, r3, #4
b .L_finish
.L_sub3_and_finish:
sub r3, r3, #3
b .L_finish
.L_sub2_and_finish:
sub r3, r3, #2
.L_finish:
cmp r4, #0
bne .L_strlen_done
// Time to get the dst string length.
mov r1, r5
// Save the original source address to r5.
mov r5, r0
// Save the current length (adding 1 for the terminator).
add r4, r3, #1
b .L_strlen_start
// r0 holds the pointer to the dst string.
// r3 holds the dst string length.
// r4 holds the src string length + 1.
.L_strlen_done:
add r2, r3, r4
cmp r2, lr
bhi __strcat_chk_failed
// Set up the registers for the memcpy code.
mov r1, r5
pld [r1, #64]
mov r2, r4
add r0, r0, r3
pop {r4, r5}
.cfi_endproc
END(__strcat_chk)
#define MEMCPY_BASE __strcat_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcat_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcat_chk_failed)
.cfi_startproc
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcat_chk_failed)
.data
error_string:
.string "strcat buffer overflow"

View File

@@ -0,0 +1,188 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.thumb
.thumb_func
// Get the length of the source string first, then do a memcpy of the data
// instead of a strcpy.
ENTRY(__strcpy_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
mov lr, r2
mov r0, r1
ands r3, r1, #7
beq .L_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
.L_align_to_32:
bcc .L_align_to_64
ands ip, r3, #2
beq .L_align_to_64
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r3, [r0], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
.p2align 2
.L_mainloop:
ldrd r2, r3, [r0], #8
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_update_count_and_finish:
sub r3, r0, r1
sub r3, r3, #1
b .L_check_size
.L_zero_in_first_register:
sub r3, r0, r1
lsls r2, ip, #17
bne .L_sub8_and_finish
bcs .L_sub7_and_finish
lsls ip, ip, #1
bne .L_sub6_and_finish
sub r3, r3, #5
b .L_check_size
.L_sub8_and_finish:
sub r3, r3, #8
b .L_check_size
.L_sub7_and_finish:
sub r3, r3, #7
b .L_check_size
.L_sub6_and_finish:
sub r3, r3, #6
b .L_check_size
.L_zero_in_second_register:
sub r3, r0, r1
lsls r2, ip, #17
bne .L_sub4_and_finish
bcs .L_sub3_and_finish
lsls ip, ip, #1
bne .L_sub2_and_finish
sub r3, r3, #1
b .L_check_size
.L_sub4_and_finish:
sub r3, r3, #4
b .L_check_size
.L_sub3_and_finish:
sub r3, r3, #3
b .L_check_size
.L_sub2_and_finish:
sub r3, r3, #2
.L_check_size:
pld [r1, #0]
pld [r1, #64]
ldr r0, [sp]
cmp r3, lr
bhs __strcpy_chk_failed
// Add 1 for copy length to get the string terminator.
add r2, r3, #1
.cfi_endproc
END(__strcpy_chk)
#define MEMCPY_BASE __strcpy_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcpy_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcpy_chk_failed)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcpy_chk_failed)
.data
error_string:
.string "strcpy buffer overflow"

View File

@@ -53,272 +53,60 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* Prototype: void *memcpy (void *dst, const void *src, size_t count). */
// Prototype: void *memcpy (void *dst, const void *src, size_t count).
// This version is tuned for the Cortex-A15 processor.
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
.text
.syntax unified
.fpu neon
#define CACHE_LINE_SIZE 64
ENTRY(__memcpy_chk)
.cfi_startproc
cmp r2, r3
bhi __memcpy_chk_fail
// Fall through to memcpy...
.cfi_endproc
END(__memcpy_chk)
ENTRY(memcpy)
// Assumes that n >= 0, and dst, src are valid pointers.
// For any sizes less than 832 use the neon code that doesn't
// care about the src alignment. This avoids any checks
// for src alignment, and offers the best improvement since
// smaller sized copies are dominated by the overhead of
// the pre and post main loop.
// For larger copies, if src and dst cannot both be aligned to
// word boundaries, use the neon code.
// For all other copies, align dst to a double word boundary
// and copy using LDRD/STRD instructions.
// Save registers (r0 holds the return value):
// optimized push {r0, lr}.
.save {r0, lr}
pld [r1, #(CACHE_LINE_SIZE*16)]
.cfi_startproc
pld [r1, #64]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
cmp r2, #16
blo copy_less_than_16_unknown_align
cmp r2, #832
bge check_alignment
copy_unknown_alignment:
// Unknown alignment of src and dst.
// Assumes that the first few bytes have already been prefetched.
// Align destination to 128 bits. The mainloop store instructions
// require this alignment or they will throw an exception.
rsb r3, r0, #0
ands r3, r3, #0xF
beq 2f
// Copy up to 15 bytes (count in r3).
sub r2, r2, r3
movs ip, r3, lsl #31
itt mi
ldrbmi lr, [r1], #1
strbmi lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// Copies 4 bytes, dst 32 bits aligned before, at least 64 bits after.
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0, :32]!
1: bcc 2f
// Copies 8 bytes, dst 64 bits aligned before, at least 128 bits after.
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2: // Make sure we have at least 64 bytes to copy.
subs r2, r2, #64
blo 2f
1: // The main loop copies 64 bytes at a time.
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(CACHE_LINE_SIZE*4)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
bhs 1b
2: // Fix-up the remaining count and make sure we have >= 32 bytes left.
adds r2, r2, #32
blo 3f
// 32 bytes. These cache lines were already preloaded.
vld1.8 {d0 - d3}, [r1]!
sub r2, r2, #32
vst1.8 {d0 - d3}, [r0, :128]!
3: // Less than 32 left.
add r2, r2, #32
tst r2, #0x10
beq copy_less_than_16_unknown_align
// Copies 16 bytes, destination 128 bits aligned.
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0, :128]!
copy_less_than_16_unknown_align:
// Copy up to 15 bytes (count in r2).
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0]!
2: // Copy 0 to 4 bytes.
lsls r2, r2, #31
itt ne
ldrbne lr, [r1], #1
strbne lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1]
strbcs ip, [r0], #1
strbcs lr, [r0]
pop {r0, pc}
check_alignment:
// If src and dst cannot both be aligned to a word boundary,
// use the unaligned copy version.
eor r3, r0, r1
ands r3, r3, #0x3
bne copy_unknown_alignment
// To try and improve performance, stack layout changed,
// i.e., not keeping the stack looking like users expect
// (highest numbered register at highest address).
// TODO: Add debug frame directives.
// We don't need exception unwind directives, because the code below
// does not throw any exceptions and does not call any other functions.
// Generally, newlib functions like this lack debug information for
// assembler source.
.save {r4, r5}
strd r4, r5, [sp, #-8]!
.save {r6, r7}
strd r6, r7, [sp, #-8]!
.save {r8, r9}
strd r8, r9, [sp, #-8]!
// Optimized for already aligned dst code.
ands ip, r0, #3
bne dst_not_word_aligned
word_aligned:
// Align the destination buffer to 8 bytes, to make sure double
// loads and stores don't cross a cache line boundary,
// as they are then more expensive even if the data is in the cache
// (require two load/store issue cycles instead of one).
// If only one of the buffers is not 8 bytes aligned,
// then it's more important to align dst than src,
// because there is more penalty for stores
// than loads that cross a cacheline boundary.
// This check and realignment are only done if there is >= 832
// bytes to copy.
// Dst is word aligned, but check if it is already double word aligned.
ands r3, r0, #4
beq 1f
ldr r3, [r1], #4
str r3, [r0], #4
sub r2, #4
1: // Can only get here if > 64 bytes to copy, so don't do check r2.
sub r2, #64
2: // Every loop iteration copies 64 bytes.
.irp offset, #0, #8, #16, #24, #32
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
ldrd r4, r5, [r1, #40]
ldrd r6, r7, [r1, #48]
ldrd r8, r9, [r1, #56]
// Keep the pld as far from the next load as possible.
// The amount to prefetch was determined experimentally using
// large sizes, and verifying the prefetch size does not affect
// the smaller copies too much.
// WARNING: If the ldrd and strd instructions get too far away
// from each other, performance suffers. Three loads
// in a row is the best tradeoff.
pld [r1, #(CACHE_LINE_SIZE*16)]
strd r4, r5, [r0, #40]
strd r6, r7, [r0, #48]
strd r8, r9, [r0, #56]
add r0, r0, #64
add r1, r1, #64
subs r2, r2, #64
bge 2b
// Fix-up the remaining count and make sure we have >= 32 bytes left.
adds r2, r2, #32
blo 4f
// Copy 32 bytes. These cache lines were already preloaded.
.irp offset, #0, #8, #16, #24
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
add r1, r1, #32
add r0, r0, #32
sub r2, r2, #32
4: // Less than 32 left.
add r2, r2, #32
tst r2, #0x10
beq 5f
// Copy 16 bytes.
.irp offset, #0, #8
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
add r1, r1, #16
add r0, r0, #16
5: // Copy up to 15 bytes (count in r2).
movs ip, r2, lsl #29
bcc 1f
// Copy 8 bytes.
ldrd r4, r5, [r1], #8
strd r4, r5, [r0], #8
1: bge 2f
// Copy 4 bytes.
ldr r4, [r1], #4
str r4, [r0], #4
2: // Copy 0 to 4 bytes.
lsls r2, r2, #31
itt ne
ldrbne lr, [r1], #1
strbne lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1]
strbcs ip, [r0], #1
strbcs lr, [r0]
// Restore registers: optimized pop {r0, pc}
ldrd r8, r9, [sp], #8
ldrd r6, r7, [sp], #8
ldrd r4, r5, [sp], #8
pop {r0, pc}
dst_not_word_aligned:
// Align dst to word.
rsb ip, ip, #4
cmp ip, #2
itt gt
ldrbgt lr, [r1], #1
strbgt lr, [r0], #1
itt ge
ldrbge lr, [r1], #1
strbge lr, [r0], #1
ldrb lr, [r1], #1
strb lr, [r0], #1
sub r2, r2, ip
// Src is guaranteed to be at least word aligned by this point.
b word_aligned
.cfi_endproc
END(memcpy)
#define MEMCPY_BASE __memcpy_base
#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__memcpy_chk_fail)
.cfi_startproc
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
.cfi_endproc
END(__memcpy_chk_fail)
.data
error_string:
.string "memcpy buffer overflow"

View File

@@ -0,0 +1,329 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
ENTRY(MEMCPY_BASE)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
// Assumes that n >= 0, and dst, src are valid pointers.
// For any sizes less than 832 use the neon code that doesn't
// care about the src alignment. This avoids any checks
// for src alignment, and offers the best improvement since
// smaller sized copies are dominated by the overhead of
// the pre and post main loop.
// For larger copies, if src and dst cannot both be aligned to
// word boundaries, use the neon code.
// For all other copies, align dst to a double word boundary
// and copy using LDRD/STRD instructions.
cmp r2, #16
blo .L_copy_less_than_16_unknown_align
// TODO: The aligned copy code is extremely slow copying some large
// buffers so always go through the unaligned path for now.
//cmp r2, #832
//bge .L_check_alignment
.L_copy_unknown_alignment:
// Unknown alignment of src and dst.
// Assumes that the first few bytes have already been prefetched.
// Align destination to 128 bits. The mainloop store instructions
// require this alignment or they will throw an exception.
rsb r3, r0, #0
ands r3, r3, #0xF
beq 2f
// Copy up to 15 bytes (count in r3).
sub r2, r2, r3
movs ip, r3, lsl #31
itt mi
ldrbmi lr, [r1], #1
strbmi lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// Copies 4 bytes, dst 32 bits aligned before, at least 64 bits after.
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0, :32]!
1: bcc 2f
// Copies 8 bytes, dst 64 bits aligned before, at least 128 bits after.
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2: // Make sure we have at least 64 bytes to copy.
subs r2, r2, #64
blo 2f
1: // The main loop copies 64 bytes at a time.
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(64*4)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
bhs 1b
2: // Fix-up the remaining count and make sure we have >= 32 bytes left.
adds r2, r2, #32
blo 3f
// 32 bytes. These cache lines were already preloaded.
vld1.8 {d0 - d3}, [r1]!
sub r2, r2, #32
vst1.8 {d0 - d3}, [r0, :128]!
3: // Less than 32 left.
add r2, r2, #32
tst r2, #0x10
beq .L_copy_less_than_16_unknown_align
// Copies 16 bytes, destination 128 bits aligned.
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0, :128]!
.L_copy_less_than_16_unknown_align:
// Copy up to 15 bytes (count in r2).
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0]!
2: // Copy 0 to 4 bytes.
lsls r2, r2, #31
itt ne
ldrbne lr, [r1], #1
strbne lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1]
strbcs ip, [r0], #1
strbcs lr, [r0]
pop {r0, pc}
.L_check_alignment:
// If src and dst cannot both be aligned to a word boundary,
// use the unaligned copy version.
eor r3, r0, r1
ands r3, r3, #0x3
bne .L_copy_unknown_alignment
.cfi_endproc
END(MEMCPY_BASE)
ENTRY(MEMCPY_BASE_ALIGNED)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
// To try and improve performance, stack layout changed,
// i.e., not keeping the stack looking like users expect
// (highest numbered register at highest address).
strd r4, r5, [sp, #-8]!
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
strd r6, r7, [sp, #-8]!
.save {r6, r7}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r6, 0
.cfi_rel_offset r7, 0
strd r8, r9, [sp, #-8]!
.save {r8, r9}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r8, 0
.cfi_rel_offset r9, 4
// Optimized for already aligned dst code.
ands ip, r0, #3
bne .L_dst_not_word_aligned
.L_word_aligned:
// Align the destination buffer to 8 bytes, to make sure double
// loads and stores don't cross a cache line boundary,
// as they are then more expensive even if the data is in the cache
// (require two load/store issue cycles instead of one).
// If only one of the buffers is not 8 bytes aligned,
// then it's more important to align dst than src,
// because there is more penalty for stores
// than loads that cross a cacheline boundary.
// This check and realignment are only done if there is >= 832
// bytes to copy.
// Dst is word aligned, but check if it is already double word aligned.
ands r3, r0, #4
beq 1f
ldr r3, [r1], #4
str r3, [r0], #4
sub r2, #4
1: // Can only get here if > 64 bytes to copy, so don't do check r2.
sub r2, #64
2: // Every loop iteration copies 64 bytes.
.irp offset, #0, #8, #16, #24, #32
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
ldrd r4, r5, [r1, #40]
ldrd r6, r7, [r1, #48]
ldrd r8, r9, [r1, #56]
// Keep the pld as far from the next load as possible.
// The amount to prefetch was determined experimentally using
// large sizes, and verifying the prefetch size does not affect
// the smaller copies too much.
// WARNING: If the ldrd and strd instructions get too far away
// from each other, performance suffers. Three loads
// in a row is the best tradeoff.
pld [r1, #(64*16)]
strd r4, r5, [r0, #40]
strd r6, r7, [r0, #48]
strd r8, r9, [r0, #56]
add r0, r0, #64
add r1, r1, #64
subs r2, r2, #64
bge 2b
// Fix-up the remaining count and make sure we have >= 32 bytes left.
adds r2, r2, #32
blo 4f
// Copy 32 bytes. These cache lines were already preloaded.
.irp offset, #0, #8, #16, #24
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
add r1, r1, #32
add r0, r0, #32
sub r2, r2, #32
4: // Less than 32 left.
add r2, r2, #32
tst r2, #0x10
beq 5f
// Copy 16 bytes.
.irp offset, #0, #8
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
add r1, r1, #16
add r0, r0, #16
5: // Copy up to 15 bytes (count in r2).
movs ip, r2, lsl #29
bcc 1f
// Copy 8 bytes.
ldrd r4, r5, [r1], #8
strd r4, r5, [r0], #8
1: bge 2f
// Copy 4 bytes.
ldr r4, [r1], #4
str r4, [r0], #4
2: // Copy 0 to 4 bytes.
lsls r2, r2, #31
itt ne
ldrbne lr, [r1], #1
strbne lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1]
strbcs ip, [r0], #1
strbcs lr, [r0]
// Restore registers: optimized pop {r0, pc}
ldrd r8, r9, [sp], #8
ldrd r6, r7, [sp], #8
ldrd r4, r5, [sp], #8
pop {r0, pc}
.L_dst_not_word_aligned:
// Align dst to word.
rsb ip, ip, #4
cmp ip, #2
itt gt
ldrbgt lr, [r1], #1
strbgt lr, [r0], #1
itt ge
ldrbge lr, [r1], #1
strbge lr, [r0], #1
ldrb lr, [r1], #1
strb lr, [r0], #1
sub r2, r2, ip
// Src is guaranteed to be at least word aligned by this point.
b .L_word_aligned
.cfi_endproc
END(MEMCPY_BASE_ALIGNED)

View File

@@ -28,30 +28,61 @@
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* Optimized memset() for ARM.
/*
* Optimized memset() for ARM.
*
* memset() returns its first argument.
*/
*/
.fpu neon
.syntax unified
ENTRY(__memset_chk)
.cfi_startproc
cmp r2, r3
bls .L_done
// Preserve lr for backtrace.
.save {lr}
push {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
.cfi_endproc
END(__memset_chk)
ENTRY(bzero)
.cfi_startproc
mov r2, r1
mov r1, #0
.L_done:
// Fall through to memset...
.cfi_endproc
END(bzero)
ENTRY(memset)
.cfi_startproc
.save {r0}
stmfd sp!, {r0}
.cfi_def_cfa_offset 4
.cfi_rel_offset r0, 0
// The new algorithm is slower for copies < 16 so use the old
// neon code in that case.
cmp r2, #16
blo set_less_than_16_unknown_align
blo .L_set_less_than_16_unknown_align
// Use strd which requires an even and odd register so move the
// values so that:
@@ -65,17 +96,17 @@ ENTRY(memset)
orr r1, r1, r1, lsr #8
orr r1, r1, r1, lsr #16
check_alignment:
.L_check_alignment:
// Align destination to a double word to avoid the strd crossing
// a cache line boundary.
ands ip, r3, #7
bne do_double_word_align
bne .L_do_double_word_align
double_word_aligned:
.L_double_word_aligned:
mov r0, r1
subs r2, #64
blo set_less_than_64
blo .L_set_less_than_64
1: // Main loop sets 64 bytes at a time.
.irp offset, #0, #8, #16, #24, #32, #40, #48, #56
@@ -86,39 +117,39 @@ double_word_aligned:
subs r2, #64
bge 1b
set_less_than_64:
.L_set_less_than_64:
// Restore r2 to the count of bytes left to set.
add r2, #64
lsls ip, r2, #27
bcc set_less_than_32
bcc .L_set_less_than_32
// Set 32 bytes.
.irp offset, #0, #8, #16, #24
strd r0, r1, [r3, \offset]
.endr
add r3, #32
set_less_than_32:
bpl set_less_than_16
.L_set_less_than_32:
bpl .L_set_less_than_16
// Set 16 bytes.
.irp offset, #0, #8
strd r0, r1, [r3, \offset]
.endr
add r3, #16
set_less_than_16:
.L_set_less_than_16:
// Less than 16 bytes to set.
lsls ip, r2, #29
bcc set_less_than_8
bcc .L_set_less_than_8
// Set 8 bytes.
strd r0, r1, [r3], #8
set_less_than_8:
bpl set_less_than_4
.L_set_less_than_8:
bpl .L_set_less_than_4
// Set 4 bytes
str r1, [r3], #4
set_less_than_4:
.L_set_less_than_4:
lsls ip, r2, #31
it ne
strbne r1, [r3], #1
@@ -129,7 +160,7 @@ set_less_than_4:
ldmfd sp!, {r0}
bx lr
do_double_word_align:
.L_do_double_word_align:
rsb ip, ip, #8
sub r2, r2, ip
movs r0, ip, lsl #31
@@ -141,11 +172,11 @@ do_double_word_align:
// Dst is at least word aligned by this point.
cmp ip, #4
blo double_word_aligned
blo .L_double_word_aligned
str r1, [r3], #4
b double_word_aligned
b .L_double_word_aligned
set_less_than_16_unknown_align:
.L_set_less_than_16_unknown_align:
// Set up to 15 bytes.
vdup.8 d0, r1
movs ip, r2, lsl #29
@@ -161,4 +192,9 @@ set_less_than_16_unknown_align:
strbcs r1, [r0], #1
ldmfd sp!, {r0}
bx lr
.cfi_endproc
END(memset)
.data
error_string:
.string "memset buffer overflow"

View File

@@ -0,0 +1,568 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_pop
pop {r0, r4, r5, pc}
.endm // m_pop
.macro m_scan_byte
ldrb r3, [r0]
cbz r3, strcat_r0_scan_done
add r0, #1
.endm // m_scan_byte
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcat)
// Quick check to see if src is empty.
ldrb r2, [r1]
pld [r1, #0]
cbnz r2, strcat_continue
bx lr
strcat_continue:
// To speed up really small dst strings, unroll checking the first 4 bytes.
m_push
m_scan_byte
m_scan_byte
m_scan_byte
m_scan_byte
ands r3, r0, #7
beq strcat_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcat_align_to_32
ldrb r5, [r0]
cbz r5, strcat_r0_scan_done
add r0, r0, #1
strcat_align_to_32:
bcc strcat_align_to_64
ldrb r2, [r0]
cbz r2, strcat_r0_scan_done
add r0, r0, #1
ldrb r4, [r0]
cbz r4, strcat_r0_scan_done
add r0, r0, #1
strcat_align_to_64:
tst r3, #4
beq strcat_mainloop
ldr r3, [r0], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcat_zero_in_second_register
b strcat_mainloop
strcat_r0_scan_done:
// For short copies, hard-code checking the first 8 bytes since this
// new code doesn't win until after about 8 bytes.
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_pop
strcpy_continue:
ands r3, r0, #7
beq strcpy_check_src_align
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
str r2, [r0], #4
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_mainloop
strcpy_complete:
m_pop
strcpy_zero_in_first_register:
lsls lr, ip, #17
bne strcpy_copy1byte
bcs strcpy_copy2bytes
lsls ip, ip, #1
bne strcpy_copy3bytes
strcpy_copy4bytes:
// Copy 4 bytes to the destiniation.
str r2, [r0]
m_pop
strcpy_copy1byte:
strb r2, [r0]
m_pop
strcpy_copy2bytes:
strh r2, [r0]
m_pop
strcpy_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
bne strcpy_copy5bytes
bcs strcpy_copy6bytes
lsls ip, ip, #1
bne strcpy_copy7bytes
// Copy 8 bytes to the destination.
strd r2, r3, [r0]
m_pop
strcpy_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
m_pop
strcpy_copy6bytes:
str r2, [r0], #4
strh r3, [r0]
m_pop
strcpy_copy7bytes:
str r2, [r0], #4
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
strcpy_unalign_return:
m_pop
strcpy_unalign7_copy6bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
m_pop
strcpy_unalign7_copy7bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_copy7bytes
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign6
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign5
strcpy_unalign_copy5bytes:
str r2, [r0], #4
strb r4, [r0]
m_pop
strcpy_unalign_copy6bytes:
str r2, [r0], #4
strb r4, [r0], #1
strb r5, [r0]
m_pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_copy3bytes
lsrs ip, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r4, [r0]
m_pop
.p2align 2
strcat_mainloop:
ldrd r2, r3, [r0], #8
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcat_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcat_zero_in_second_register
b strcat_mainloop
strcat_zero_in_first_register:
// Prefetch the src now, it's going to be used soon.
pld [r1, #0]
lsls lr, ip, #17
bne strcat_sub8
bcs strcat_sub7
lsls ip, ip, #1
bne strcat_sub6
sub r0, r0, #5
b strcat_r0_scan_done
strcat_sub8:
sub r0, r0, #8
b strcat_r0_scan_done
strcat_sub7:
sub r0, r0, #7
b strcat_r0_scan_done
strcat_sub6:
sub r0, r0, #6
b strcat_r0_scan_done
strcat_zero_in_second_register:
// Prefetch the src now, it's going to be used soon.
pld [r1, #0]
lsls lr, ip, #17
bne strcat_sub4
bcs strcat_sub3
lsls ip, ip, #1
bne strcat_sub2
sub r0, r0, #1
b strcat_r0_scan_done
strcat_sub4:
sub r0, r0, #4
b strcat_r0_scan_done
strcat_sub3:
sub r0, r0, #3
b strcat_r0_scan_done
strcat_sub2:
sub r0, r0, #2
b strcat_r0_scan_done
END(strcat)

View File

@@ -123,8 +123,13 @@ ENTRY(strcmp)
.macro init
/* Macro to save temporary registers and prepare magic values. */
subs sp, sp, #16
.cfi_def_cfa_offset 16
strd r4, r5, [sp, #8]
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
strd r6, r7, [sp]
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
mvn r6, #0 /* all F */
mov r7, #0 /* all 0 */
.endm /* init */
@@ -165,18 +170,20 @@ ENTRY(strcmp)
#endif /* not __ARMEB__ */
.endm /* setup_return */
.cfi_startproc
pld [r0, #0]
pld [r1, #0]
/* Are both strings double-word aligned? */
orr ip, r0, r1
tst ip, #7
bne do_align
bne .L_do_align
/* Fast path. */
.save {r4-r7}
init
doubleword_aligned:
.L_doubleword_aligned:
/* Get here when the strings to compare are double-word aligned. */
/* Compare two words in every iteration. */
@@ -189,14 +196,14 @@ doubleword_aligned:
ldrd r2, r3, [r0], #8
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r2, w2=r4, label=return_24
magic_compare_and_branch w1=r3, w2=r5, label=return_35
magic_compare_and_branch w1=r2, w2=r4, label=.L_return_24
magic_compare_and_branch w1=r3, w2=r5, label=.L_return_35
b 2b
do_align:
.L_do_align:
/* Is the first string word-aligned? */
ands ip, r0, #3
beq word_aligned_r0
beq .L_word_aligned_r0
/* Fast compare byte by byte until the first string is word-aligned. */
/* The offset of r0 from a word boundary is in ip. Thus, the number of bytes
@@ -204,58 +211,58 @@ do_align:
bic r0, r0, #3
ldr r2, [r0], #4
lsls ip, ip, #31
beq byte2
bcs byte3
beq .L_byte2
bcs .L_byte3
byte1:
.L_byte1:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE1_OFFSET
subs ip, r3, ip
bne fast_return
m_cbz reg=r3, label=fast_return
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
byte2:
.L_byte2:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE2_OFFSET
subs ip, r3, ip
bne fast_return
m_cbz reg=r3, label=fast_return
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
byte3:
.L_byte3:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE3_OFFSET
subs ip, r3, ip
bne fast_return
m_cbnz reg=r3, label=word_aligned_r0
bne .L_fast_return
m_cbnz reg=r3, label=.L_word_aligned_r0
fast_return:
.L_fast_return:
mov r0, ip
bx lr
word_aligned_r0:
.L_word_aligned_r0:
init
/* The first string is word-aligned. */
/* Is the second string word-aligned? */
ands ip, r1, #3
bne strcmp_unaligned
bne .L_strcmp_unaligned
word_aligned:
.L_word_aligned:
/* The strings are word-aligned. */
/* Is the first string double-word aligned? */
tst r0, #4
beq doubleword_aligned_r0
beq .L_doubleword_aligned_r0
/* If r0 is not double-word aligned yet, align it by loading
and comparing the next word from each string. */
ldr r2, [r0], #4
ldr r4, [r1], #4
magic_compare_and_branch w1=r2 w2=r4 label=return_24
magic_compare_and_branch w1=r2 w2=r4 label=.L_return_24
doubleword_aligned_r0:
.L_doubleword_aligned_r0:
/* Get here when r0 is double-word aligned. */
/* Is r1 doubleword_aligned? */
tst r1, #4
beq doubleword_aligned
beq .L_doubleword_aligned
/* Get here when the strings to compare are word-aligned,
r0 is double-word aligned, but r1 is not double-word aligned. */
@@ -271,9 +278,9 @@ doubleword_aligned_r0:
/* Load the next double-word from each string and compare. */
ldrd r2, r3, [r0], #8
magic_compare_and_branch w1=r2 w2=r5 label=return_25
magic_compare_and_branch w1=r2 w2=r5 label=.L_return_25
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r3 w2=r4 label=return_34
magic_compare_and_branch w1=r3 w2=r4 label=.L_return_34
b 3b
.macro miscmp_word offsetlo offsethi
@@ -297,47 +304,47 @@ doubleword_aligned_r0:
and r2, r3, r6, S2LOMEM #\offsetlo
it eq
cmpeq r2, r5
bne return_25
bne .L_return_25
ldr r5, [r1], #4
cmp ip, #0
eor r3, r2, r3
S2HIMEM r2, r5, #\offsethi
it eq
cmpeq r3, r2
bne return_32
bne .L_return_32
b 7b
.endm /* miscmp_word */
strcmp_unaligned:
.L_strcmp_unaligned:
/* r0 is word-aligned, r1 is at offset ip from a word. */
/* Align r1 to the (previous) word-boundary. */
bic r1, r1, #3
/* Unaligned comparison word by word using LDRs. */
cmp ip, #2
beq miscmp_word_16 /* If ip == 2. */
bge miscmp_word_24 /* If ip == 3. */
beq .L_miscmp_word_16 /* If ip == 2. */
bge .L_miscmp_word_24 /* If ip == 3. */
miscmp_word offsetlo=8 offsethi=24 /* If ip == 1. */
miscmp_word_16: miscmp_word offsetlo=16 offsethi=16
miscmp_word_24: miscmp_word offsetlo=24 offsethi=8
.L_miscmp_word_16: miscmp_word offsetlo=16 offsethi=16
.L_miscmp_word_24: miscmp_word offsetlo=24 offsethi=8
return_32:
.L_return_32:
setup_return w1=r3, w2=r2
b do_return
return_34:
b .L_do_return
.L_return_34:
setup_return w1=r3, w2=r4
b do_return
return_25:
b .L_do_return
.L_return_25:
setup_return w1=r2, w2=r5
b do_return
return_35:
b .L_do_return
.L_return_35:
setup_return w1=r3, w2=r5
b do_return
return_24:
b .L_do_return
.L_return_24:
setup_return w1=r2, w2=r4
do_return:
.L_do_return:
#ifdef __ARMEB__
mov r0, ip
@@ -349,11 +356,16 @@ do_return:
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
/* There is a zero or a different byte between r1 and r2. */
/* r0 contains a mask of all-zero bytes in r1. */
/* Using r0 and not ip here because cbz requires low register. */
m_cbz reg=r0, label=compute_return_value
m_cbz reg=r0, label=.L_compute_return_value
clz r0, r0
/* r0 contains the number of bits on the left of the first all-zero byte in r1. */
rsb r0, r0, #24
@@ -361,7 +373,7 @@ do_return:
lsr r1, r1, r0
lsr r2, r2, r0
compute_return_value:
.L_compute_return_value:
movs r0, #1
cmp r1, r2
/* The return value is computed as follows.
@@ -374,4 +386,5 @@ compute_return_value:
it ls
sbcls r0, r0, r0
bx lr
.cfi_endproc
END(strcmp)

View File

@@ -0,0 +1,451 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_pop
pop {r0, r4, r5, pc}
.endm // m_pop
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcpy)
// For short copies, hard-code checking the first 8 bytes since this
// new code doesn't win until after about 8 bytes.
m_push
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_pop
strcpy_continue:
pld [r1, #0]
ands r3, r0, #7
beq strcpy_check_src_align
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
str r2, [r0], #4
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_mainloop
strcpy_complete:
m_pop
strcpy_zero_in_first_register:
lsls lr, ip, #17
bne strcpy_copy1byte
bcs strcpy_copy2bytes
lsls ip, ip, #1
bne strcpy_copy3bytes
strcpy_copy4bytes:
// Copy 4 bytes to the destiniation.
str r2, [r0]
m_pop
strcpy_copy1byte:
strb r2, [r0]
m_pop
strcpy_copy2bytes:
strh r2, [r0]
m_pop
strcpy_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
bne strcpy_copy5bytes
bcs strcpy_copy6bytes
lsls ip, ip, #1
bne strcpy_copy7bytes
// Copy 8 bytes to the destination.
strd r2, r3, [r0]
m_pop
strcpy_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
m_pop
strcpy_copy6bytes:
str r2, [r0], #4
strh r3, [r0]
m_pop
strcpy_copy7bytes:
str r2, [r0], #4
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
strcpy_unalign_return:
m_pop
strcpy_unalign7_copy6bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
m_pop
strcpy_unalign7_copy7bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_copy7bytes
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign6
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign5
strcpy_unalign_copy5bytes:
str r2, [r0], #4
strb r4, [r0]
m_pop
strcpy_unalign_copy6bytes:
str r2, [r0], #4
strb r4, [r0], #1
strb r5, [r0]
m_pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_copy3bytes
lsrs ip, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r4, [r0]
m_pop
END(strcpy)

View File

@@ -61,34 +61,32 @@
.thumb_func
ENTRY(strlen)
pld [r1, #128]
mov r1, r0
pld [r0, #0]
mov r1, r0
rsb r3, r0, #0
ands r3, r3, #7
ands r3, r0, #7
beq mainloop
// Align to a double word (64 bits).
ands ip, r3, #1
rsb r3, r3, #8
lsls ip, r3, #31
beq align_to_32
ldrb r2, [r1], #1
cmp r2, #0
beq update_count_and_return
cbz r2, update_count_and_return
align_to_32:
bcc align_to_64
ands ip, r3, #2
beq align_to_64
ldrb r2, [r1], #1
cmp r2, #0
beq update_count_and_return
cbz r2, update_count_and_return
ldrb r2, [r1], #1
cmp r2, #0
beq update_count_and_return
cbz r2, update_count_and_return
align_to_64:
ands ip, r3, #4
tst r3, #4
beq mainloop
ldr r3, [r1], #4
@@ -97,6 +95,7 @@ align_to_64:
ands ip, ip, #0x80808080
bne zero_in_second_register
.p2align 2
mainloop:
ldrd r2, r3, [r1], #8
@@ -113,39 +112,54 @@ mainloop:
bne zero_in_second_register
b mainloop
update_count_and_return:
sub r0, r1, r0
sub r0, r0, #1
bx lr
zero_in_first_register:
sub r1, r1, #4
sub r0, r1, r0
lsls r3, ip, #17
bne sub8_and_return
bcs sub7_and_return
lsls ip, ip, #1
bne sub6_and_return
sub r0, r0, #5
bx lr
sub8_and_return:
sub r0, r0, #8
bx lr
sub7_and_return:
sub r0, r0, #7
bx lr
sub6_and_return:
sub r0, r0, #6
bx lr
zero_in_second_register:
sub r0, r1, r0
lsls r3, ip, #17
bne sub4_and_return
bcs sub3_and_return
lsls ip, ip, #1
bne sub2_and_return
// Check for zero in byte 0.
ands r1, ip, #0x80
beq check_byte1
sub r0, r0, #1
bx lr
sub4_and_return:
sub r0, r0, #4
bx lr
check_byte1:
// Check for zero in byte 1.
ands r1, ip, #0x8000
beq check_byte2
sub3_and_return:
sub r0, r0, #3
bx lr
check_byte2:
// Check for zero in byte 2.
ands r1, ip, #0x800000
beq return
sub2_and_return:
sub r0, r0, #2
bx lr
update_count_and_return:
sub r0, r1, r0
return:
sub r0, r0, #1
bx lr
END(strlen)

View File

@@ -1,6 +1,10 @@
$(call libc-add-cpu-variant-src,MEMCPY,arch-arm/cortex-a15/bionic/memcpy.S)
$(call libc-add-cpu-variant-src,MEMSET,arch-arm/cortex-a15/bionic/memset.S)
$(call libc-add-cpu-variant-src,STRCAT,arch-arm/cortex-a15/bionic/strcat.S)
$(call libc-add-cpu-variant-src,STRCMP,arch-arm/cortex-a15/bionic/strcmp.S)
$(call libc-add-cpu-variant-src,STRCPY,arch-arm/cortex-a15/bionic/strcpy.S)
$(call libc-add-cpu-variant-src,STRLEN,arch-arm/cortex-a15/bionic/strlen.S)
$(call libc-add-cpu-variant-src,__STRCAT_CHK,arch-arm/cortex-a15/bionic/__strcat_chk.S)
$(call libc-add-cpu-variant-src,__STRCPY_CHK,arch-arm/cortex-a15/bionic/__strcpy_chk.S)
include bionic/libc/arch-arm/generic/generic.mk

View File

@@ -0,0 +1 @@
include bionic/libc/arch-arm/cortex-a15/cortex-a15.mk

View File

@@ -0,0 +1,230 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.fpu neon
.thumb
.thumb_func
// Get the length of src string, then get the source of the dst string.
// Check that the two lengths together don't exceed the threshold, then
// do a memcpy of the data.
ENTRY(__strcat_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
mov lr, r2
// Save the dst register to r5
mov r5, r0
// Zero out r4
eor r4, r4, r4
// r1 contains the address of the string to count.
.L_strlen_start:
mov r0, r1
ands r3, r0, #7
bne .L_align_src
.p2align 2
.L_mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_zero_in_first_register:
sub r3, r1, r0
// Check for zero in byte 0.
lsls r2, ip, #17
beq .L_check_byte1_reg1
sub r3, r3, #8
b .L_finish
.L_check_byte1_reg1:
bcc .L_check_byte2_reg1
sub r3, r3, #7
b .L_finish
.L_check_byte2_reg1:
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r3, r3, #6
bne .L_finish
sub r3, r3, #5
b .L_finish
.L_zero_in_second_register:
sub r3, r1, r0
// Check for zero in byte 0.
lsls r2, ip, #17
beq .L_check_byte1_reg2
sub r3, r3, #4
b .L_finish
.L_check_byte1_reg2:
bcc .L_check_byte2_reg2
sub r3, r3, #3
b .L_finish
.L_check_byte2_reg2:
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r3, r3, #2
bne .L_finish
sub r3, r3, #1
b .L_finish
.L_align_src:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r1], #1
cbz r2, .L_done
.L_align_to_32:
bcc .L_align_to_64
ldrb r2, [r1], #1
cbz r2, .L_done
ldrb r2, [r1], #1
cbz r2, .L_done
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_done:
sub r3, r1, r0
sub r3, r3, #1
.L_finish:
cmp r4, #0
bne .L_strlen_done
// Time to get the dst string length.
mov r1, r5
// Save the original source address to r5.
mov r5, r0
// Save the current length (adding 1 for the terminator).
add r4, r3, #1
b .L_strlen_start
// r0 holds the pointer to the dst string.
// r3 holds the dst string length.
// r4 holds the src string length + 1.
.L_strlen_done:
add r2, r3, r4
cmp r2, lr
bhi __strcat_chk_fail
// Set up the registers for the memcpy code.
mov r1, r5
pld [r1, #64]
mov r2, r4
add r0, r0, r3
pop {r4, r5}
// Fall through into the memcpy_base function.
.cfi_endproc
END(__strcat_chk)
#define MEMCPY_BASE __strcat_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcat_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcat_chk_fail)
.cfi_startproc
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcat_chk_fail)
.data
error_string:
.string "strcat buffer overflow"

View File

@@ -0,0 +1,194 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.fpu neon
.thumb
.thumb_func
// Get the length of the source string first, then do a memcpy of the data
// instead of a strcpy.
ENTRY(__strcpy_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
mov lr, r2
mov r0, r1
ands r3, r0, #7
bne .L_align_src
.p2align 2
.L_mainloop:
ldmia r0!, {r2, r3}
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_zero_in_first_register:
sub r3, r0, r1
// Check for zero in byte 0.
lsls r2, ip, #17
beq .L_check_byte1_reg1
sub r3, r3, #8
b .L_check_size
.L_check_byte1_reg1:
bcc .L_check_byte2_reg1
sub r3, r3, #7
b .L_check_size
.L_check_byte2_reg1:
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r3, r3, #6
bne .L_check_size
sub r3, r3, #5
b .L_check_size
.L_zero_in_second_register:
sub r3, r0, r1
// Check for zero in byte 0.
lsls r2, ip, #17
beq .L_check_byte1_reg2
sub r3, r3, #4
b .L_check_size
.L_check_byte1_reg2:
bcc .L_check_byte2_reg2
sub r3, r3, #3
b .L_check_size
.L_check_byte2_reg2:
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r3, r3, #2
bne .L_check_size
sub r3, r3, #1
b .L_check_size
.L_align_src:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r0], #1
cbz r2, .L_done
.L_align_to_32:
bcc .L_align_to_64
ldrb r2, [r0], #1
cbz r2, .L_done
ldrb r2, [r0], #1
cbz r2, .L_done
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r2, [r0], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_done:
sub r3, r0, r1
sub r3, r3, #1
.L_check_size:
pld [r1, #0]
pld [r1, #64]
ldr r0, [sp]
cmp r3, lr
bhs __strcpy_chk_fail
// Add 1 for copy length to get the string terminator.
add r2, r3, #1
.cfi_endproc
// Fall through into the memcpy_base function.
END(__strcpy_chk)
#define MEMCPY_BASE __strcpy_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcpy_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcpy_chk_fail)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcpy_chk_fail)
.data
error_string:
.string "strcpy buffer overflow"

View File

@@ -26,8 +26,8 @@
* SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* This code assumes it is running on a processor that supports all arm v7
@@ -35,177 +35,58 @@
* cache line.
*/
.text
.syntax unified
.fpu neon
.thumb
.thumb_func
#define CACHE_LINE_SIZE 32
ENTRY(__memcpy_chk)
.cfi_startproc
cmp r2, r3
bhi __memcpy_chk_fail
// Fall through to memcpy...
.cfi_endproc
END(__memcpy_chk)
ENTRY(memcpy)
.save {r0, lr}
/* start preloading as early as possible */
pld [r1, #(CACHE_LINE_SIZE * 0)]
stmfd sp!, {r0, lr}
pld [r1, #(CACHE_LINE_SIZE * 2)]
.cfi_startproc
// Check so divider is at least 16 bytes, needed for alignment code.
cmp r2, #16
blo 5f
pld [r1, #0]
stmfd sp!, {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
pld [r1, #64]
/* check if buffers are aligned. If so, run arm-only version */
eor r3, r0, r1
ands r3, r3, #0x3
beq 11f
/* Check the upper size limit for Neon unaligned memory access in memcpy */
cmp r2, #224
blo 3f
/* align destination to 16 bytes for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 3f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
ldrmib lr, [r1], #1
strmib lr, [r0], #1
ldrcsb ip, [r1], #1
ldrcsb lr, [r1], #1
strcsb ip, [r0], #1
strcsb lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// copies 4 bytes, destination 32-bits aligned
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0, :32]!
1: bcc 2f
// copies 8 bytes, destination 64-bits aligned
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2:
/* preload immediately the next cache line, which we may need */
pld [r1, #(CACHE_LINE_SIZE * 0)]
pld [r1, #(CACHE_LINE_SIZE * 2)]
3:
/* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
/* preload all the cache lines we need */
pld [r1, #(CACHE_LINE_SIZE * 4)]
pld [r1, #(CACHE_LINE_SIZE * 6)]
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(CACHE_LINE_SIZE * 6)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0]!
vst1.8 {d4 - d7}, [r0]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
add r2, r2, #64
subs r2, r2, #32
blo 4f
3: /* 32 bytes at a time. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0]!
bhs 3b
4: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 5f
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
ldrmib r3, [r1], #1
ldrcsb ip, [r1], #1
ldrcsb lr, [r1], #1
strmib r3, [r0], #1
strcsb ip, [r0], #1
strcsb lr, [r0], #1
ldmfd sp!, {r0, lr}
bx lr
11:
/* Simple arm-only copy loop to handle aligned copy operations */
stmfd sp!, {r4, r5, r6, r7, r8}
pld [r1, #(CACHE_LINE_SIZE * 4)]
/* Check alignment */
rsb r3, r1, #0
ands r3, #3
beq 2f
/* align source to 32 bits. We need to insert 2 instructions between
* a ldr[b|h] and str[b|h] because byte and half-word instructions
* stall 2 cycles.
*/
movs r12, r3, lsl #31
sub r2, r2, r3 /* we know that r3 <= r2 because r2 >= 4 */
ldrmib r3, [r1], #1
ldrcsb r4, [r1], #1
ldrcsb r5, [r1], #1
strmib r3, [r0], #1
strcsb r4, [r0], #1
strcsb r5, [r0], #1
2:
subs r2, r2, #64
blt 4f
3: /* Main copy loop, copying 64 bytes at a time */
pld [r1, #(CACHE_LINE_SIZE * 8)]
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
subs r2, r2, #64
bge 3b
4: /* Check if there are > 32 bytes left */
adds r2, r2, #64
subs r2, r2, #32
blt 5f
/* Copy 32 bytes */
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
subs r2, #32
5: /* Handle any remaining bytes */
adds r2, #32
beq 6f
movs r12, r2, lsl #28
ldmcsia r1!, {r3, r4, r5, r6} /* 16 bytes */
ldmmiia r1!, {r7, r8} /* 8 bytes */
stmcsia r0!, {r3, r4, r5, r6}
stmmiia r0!, {r7, r8}
movs r12, r2, lsl #30
ldrcs r3, [r1], #4 /* 4 bytes */
ldrmih r4, [r1], #2 /* 2 bytes */
strcs r3, [r0], #4
strmih r4, [r0], #2
tst r2, #0x1
ldrneb r3, [r1] /* last byte */
strneb r3, [r0]
6:
ldmfd sp!, {r4, r5, r6, r7, r8}
ldmfd sp!, {r0, pc}
.cfi_endproc
END(memcpy)
#define MEMCPY_BASE __memcpy_base
#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__memcpy_chk_fail)
.cfi_startproc
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__memcpy_chk_fail)
.data
error_string:
.string "memcpy buffer overflow"

View File

@@ -0,0 +1,233 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* This code assumes it is running on a processor that supports all arm v7
* instructions, that supports neon instructions, and that has a 32 byte
* cache line.
*/
ENTRY(MEMCPY_BASE)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
// Check so divider is at least 16 bytes, needed for alignment code.
cmp r2, #16
blo 5f
/* check if buffers are aligned. If so, run arm-only version */
eor r3, r0, r1
ands r3, r3, #0x3
beq __memcpy_base_aligned
/* Check the upper size limit for Neon unaligned memory access in memcpy */
cmp r2, #224
blo 3f
/* align destination to 16 bytes for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 3f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
itt mi
ldrbmi lr, [r1], #1
strbmi lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// copies 4 bytes, destination 32-bits aligned
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0, :32]!
1: bcc 2f
// copies 8 bytes, destination 64-bits aligned
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2:
/* preload immediately the next cache line, which we may need */
pld [r1, #0]
pld [r1, #(32 * 2)]
3:
/* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
/* preload all the cache lines we need */
pld [r1, #(32 * 4)]
pld [r1, #(32 * 6)]
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(32 * 6)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0]!
vst1.8 {d4 - d7}, [r0]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
add r2, r2, #64
subs r2, r2, #32
blo 4f
3: /* 32 bytes at a time. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0]!
bhs 3b
4: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 5f
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
itt mi
ldrbmi r3, [r1], #1
strbmi r3, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
ldmfd sp!, {r0, lr}
bx lr
.cfi_endproc
END(MEMCPY_BASE)
ENTRY(MEMCPY_BASE_ALIGNED)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
/* Simple arm-only copy loop to handle aligned copy operations */
stmfd sp!, {r4-r8}
.save {r4-r8}
.cfi_adjust_cfa_offset 20
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
.cfi_rel_offset r8, 16
pld [r1, #(32 * 4)]
/* Check alignment */
rsb r3, r1, #0
ands r3, #3
beq 2f
/* align source to 32 bits. We need to insert 2 instructions between
* a ldr[b|h] and str[b|h] because byte and half-word instructions
* stall 2 cycles.
*/
movs r12, r3, lsl #31
sub r2, r2, r3 /* we know that r3 <= r2 because r2 >= 4 */
itt mi
ldrbmi r3, [r1], #1
strbmi r3, [r0], #1
itttt cs
ldrbcs r4, [r1], #1
ldrbcs r5, [r1], #1
strbcs r4, [r0], #1
strbcs r5, [r0], #1
2:
subs r2, r2, #64
blt 4f
3: /* Main copy loop, copying 64 bytes at a time */
pld [r1, #(32 * 8)]
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
subs r2, r2, #64
bge 3b
4: /* Check if there are > 32 bytes left */
adds r2, r2, #64
subs r2, r2, #32
blt 5f
/* Copy 32 bytes */
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
subs r2, #32
5: /* Handle any remaining bytes */
adds r2, #32
beq 6f
movs r12, r2, lsl #28
itt cs
ldmiacs r1!, {r3, r4, r5, r6} /* 16 bytes */
stmiacs r0!, {r3, r4, r5, r6}
itt mi
ldmiami r1!, {r7, r8} /* 8 bytes */
stmiami r0!, {r7, r8}
movs r12, r2, lsl #30
itt cs
ldrcs r3, [r1], #4 /* 4 bytes */
strcs r3, [r0], #4
itt mi
ldrhmi r4, [r1], #2 /* 2 bytes */
strhmi r4, [r0], #2
tst r2, #0x1
itt ne
ldrbne r3, [r1] /* last byte */
strbne r3, [r0]
6:
ldmfd sp!, {r4-r8}
ldmfd sp!, {r0, pc}
.cfi_endproc
END(MEMCPY_BASE_ALIGNED)

View File

@@ -28,6 +28,7 @@
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* This code assumes it is running on a processor that supports all arm v7
@@ -36,19 +37,52 @@
.fpu neon
ENTRY(__memset_chk)
.cfi_startproc
cmp r2, r3
bls .L_done
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
.cfi_endproc
END(__memset_chk)
ENTRY(bzero)
.cfi_startproc
mov r2, r1
mov r1, #0
.L_done:
// Fall through to memset...
.cfi_endproc
END(bzero)
/* memset() returns its first argument. */
ENTRY(memset)
.cfi_startproc
# The neon memset only wins for less than 132.
cmp r2, #132
bhi 11f
bhi __memset_large_copy
.save {r0}
stmfd sp!, {r0}
.save {r0}
.cfi_def_cfa_offset 4
.cfi_rel_offset r0, 0
vdup.8 q0, r1
@@ -81,13 +115,26 @@ ENTRY(memset)
strcsb r1, [r0], #1
ldmfd sp!, {r0}
bx lr
11:
.cfi_endproc
END(memset)
ENTRY(__memset_large_copy)
.cfi_startproc
/* compute the offset to align the destination
* offset = (4-(src&3))&3 = -src & 3
*/
.save {r0, r4-r7, lr}
stmfd sp!, {r0, r4-r7, lr}
.save {r0, r4-r7, lr}
.cfi_def_cfa_offset 24
.cfi_rel_offset r0, 0
.cfi_rel_offset r4, 4
.cfi_rel_offset r5, 8
.cfi_rel_offset r6, 12
.cfi_rel_offset r7, 16
.cfi_rel_offset lr, 20
rsb r3, r0, #0
ands r3, r3, #3
cmp r3, r2
@@ -149,4 +196,9 @@ ENTRY(memset)
strcsb r1, [r0]
ldmfd sp!, {r0, r4-r7, lr}
bx lr
END(memset)
.cfi_endproc
END(__memset_large_copy)
.data
error_string:
.string "memset buffer overflow"

View File

@@ -0,0 +1,548 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_ret inst
\inst {r0, r4, r5, pc}
.endm // m_ret
.macro m_scan_byte
ldrb r3, [r0]
cbz r3, strcat_r0_scan_done
add r0, #1
.endm // m_scan_byte
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcat)
// Quick check to see if src is empty.
ldrb r2, [r1]
pld [r1, #0]
cbnz r2, strcat_continue
bx lr
strcat_continue:
// To speed up really small dst strings, unroll checking the first 4 bytes.
m_push
m_scan_byte
m_scan_byte
m_scan_byte
m_scan_byte
ands r3, r0, #7
bne strcat_align_src
.p2align 2
strcat_mainloop:
ldmia r0!, {r2, r3}
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcat_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcat_zero_in_second_register
b strcat_mainloop
strcat_zero_in_first_register:
sub r0, r0, #4
strcat_zero_in_second_register:
// Check for zero in byte 0.
tst ip, #0x80
it ne
subne r0, r0, #4
bne strcat_r0_scan_done
// Check for zero in byte 1.
tst ip, #0x8000
it ne
subne r0, r0, #3
bne strcat_r0_scan_done
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r0, r0, #2
it eq
// Zero is in byte 3.
subeq r0, r0, #1
strcat_r0_scan_done:
// Unroll the first 8 bytes that will be copied.
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_ret inst=pop
strcpy_continue:
pld [r1, #0]
ands r3, r0, #7
bne strcpy_align_dst
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_mainloop
strcpy_zero_in_first_register:
lsls lr, ip, #17
itt ne
strbne r2, [r0]
m_ret inst=popne
itt cs
strhcs r2, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
streq r2, [r0]
m_ret inst=popeq
strh r2, [r0], #2
lsr r3, r2, #16
strb r3, [r0]
m_ret inst=pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
ittt ne
stmiane r0!, {r2}
strbne r3, [r0]
m_ret inst=popne
ittt cs
strcs r2, [r0], #4
strhcs r3, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
stmiaeq r0, {r2, r3}
m_ret inst=popeq
stmia r0!, {r2}
strh r3, [r0], #2
lsr r4, r3, #16
strb r4, [r0]
m_ret inst=pop
strcpy_align_dst:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r4, [r1], #1
strb r4, [r0], #1
cmp r4, #0
it eq
m_ret inst=popeq
ldrb r5, [r1], #1
strb r5, [r0], #1
cmp r5, #0
it eq
m_ret inst=popeq
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
stmia r0!, {r2}
b strcpy_check_src_align
strcpy_complete:
m_ret inst=pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
stmia r0!, {r2}
strb r3, [r0]
strcpy_unalign_return:
m_ret inst=pop
strcpy_unalign7_copy6bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
m_ret inst=pop
strcpy_unalign7_copy7bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_ret inst=pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_unalign6_copy7bytes
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign6
strcpy_unalign6_copy7bytes:
stmia r0!, {r2}
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_ret inst=pop
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign5
strcpy_unalign_copy5bytes:
stmia r0!, {r2}
strb r4, [r0]
m_ret inst=pop
strcpy_unalign_copy6bytes:
stmia r0!, {r2}
strb r4, [r0], #1
strb r5, [r0]
m_ret inst=pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldmia r1!, {r2}
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldmia r1!, {r3}
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_ret inst=pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_unalign_copy3bytes
lsrs ip, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy4bytes:
stmia r0, {r2}
m_ret inst=pop
strcat_align_src:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcat_align_to_32
ldrb r2, [r0], #1
cbz r2, strcat_r0_update
strcat_align_to_32:
bcc strcat_align_to_64
ldrb r2, [r0], #1
cbz r2, strcat_r0_update
ldrb r2, [r0], #1
cbz r2, strcat_r0_update
strcat_align_to_64:
tst r3, #4
beq strcat_mainloop
ldr r3, [r0], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcat_zero_in_second_register
b strcat_mainloop
strcat_r0_update:
sub r0, r0, #1
b strcat_r0_scan_done
END(strcat)

View File

@@ -123,8 +123,13 @@ ENTRY(strcmp)
.macro init
/* Macro to save temporary registers and prepare magic values. */
subs sp, sp, #16
.cfi_def_cfa_offset 16
strd r4, r5, [sp, #8]
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
strd r6, r7, [sp]
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
mvn r6, #0 /* all F */
mov r7, #0 /* all 0 */
.endm /* init */
@@ -165,18 +170,20 @@ ENTRY(strcmp)
#endif /* not __ARMEB__ */
.endm /* setup_return */
.cfi_startproc
pld [r0, #0]
pld [r1, #0]
/* Are both strings double-word aligned? */
orr ip, r0, r1
tst ip, #7
bne do_align
bne .L_do_align
/* Fast path. */
.save {r4-r7}
init
doubleword_aligned:
.L_doubleword_aligned:
/* Get here when the strings to compare are double-word aligned. */
/* Compare two words in every iteration. */
@@ -189,14 +196,14 @@ doubleword_aligned:
ldrd r2, r3, [r0], #8
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r2, w2=r4, label=return_24
magic_compare_and_branch w1=r3, w2=r5, label=return_35
magic_compare_and_branch w1=r2, w2=r4, label=.L_return_24
magic_compare_and_branch w1=r3, w2=r5, label=.L_return_35
b 2b
do_align:
.L_do_align:
/* Is the first string word-aligned? */
ands ip, r0, #3
beq word_aligned_r0
beq .L_word_aligned_r0
/* Fast compare byte by byte until the first string is word-aligned. */
/* The offset of r0 from a word boundary is in ip. Thus, the number of bytes
@@ -204,58 +211,58 @@ do_align:
bic r0, r0, #3
ldr r2, [r0], #4
lsls ip, ip, #31
beq byte2
bcs byte3
beq .L_byte2
bcs .L_byte3
byte1:
.L_byte1:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE1_OFFSET
subs ip, r3, ip
bne fast_return
m_cbz reg=r3, label=fast_return
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
byte2:
.L_byte2:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE2_OFFSET
subs ip, r3, ip
bne fast_return
m_cbz reg=r3, label=fast_return
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
byte3:
.L_byte3:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE3_OFFSET
subs ip, r3, ip
bne fast_return
m_cbnz reg=r3, label=word_aligned_r0
bne .L_fast_return
m_cbnz reg=r3, label=.L_word_aligned_r0
fast_return:
.L_fast_return:
mov r0, ip
bx lr
word_aligned_r0:
.L_word_aligned_r0:
init
/* The first string is word-aligned. */
/* Is the second string word-aligned? */
ands ip, r1, #3
bne strcmp_unaligned
bne .L_strcmp_unaligned
word_aligned:
.L_word_aligned:
/* The strings are word-aligned. */
/* Is the first string double-word aligned? */
tst r0, #4
beq doubleword_aligned_r0
beq .L_doubleword_aligned_r0
/* If r0 is not double-word aligned yet, align it by loading
and comparing the next word from each string. */
ldr r2, [r0], #4
ldr r4, [r1], #4
magic_compare_and_branch w1=r2 w2=r4 label=return_24
magic_compare_and_branch w1=r2 w2=r4 label=.L_return_24
doubleword_aligned_r0:
.L_doubleword_aligned_r0:
/* Get here when r0 is double-word aligned. */
/* Is r1 doubleword_aligned? */
tst r1, #4
beq doubleword_aligned
beq .L_doubleword_aligned
/* Get here when the strings to compare are word-aligned,
r0 is double-word aligned, but r1 is not double-word aligned. */
@@ -271,9 +278,9 @@ doubleword_aligned_r0:
/* Load the next double-word from each string and compare. */
ldrd r2, r3, [r0], #8
magic_compare_and_branch w1=r2 w2=r5 label=return_25
magic_compare_and_branch w1=r2 w2=r5 label=.L_return_25
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r3 w2=r4 label=return_34
magic_compare_and_branch w1=r3 w2=r4 label=.L_return_34
b 3b
.macro miscmp_word offsetlo offsethi
@@ -297,33 +304,33 @@ doubleword_aligned_r0:
and r2, r3, r6, S2LOMEM #\offsetlo
it eq
cmpeq r2, r5
bne return_25
bne .L_return_25
ldr r5, [r1], #4
cmp ip, #0
eor r3, r2, r3
S2HIMEM r2, r5, #\offsethi
it eq
cmpeq r3, r2
bne return_32
bne .L_return_32
b 7b
.endm /* miscmp_word */
return_32:
.L_return_32:
setup_return w1=r3, w2=r2
b do_return
return_34:
b .L_do_return
.L_return_34:
setup_return w1=r3, w2=r4
b do_return
return_25:
b .L_do_return
.L_return_25:
setup_return w1=r2, w2=r5
b do_return
return_35:
b .L_do_return
.L_return_35:
setup_return w1=r3, w2=r5
b do_return
return_24:
b .L_do_return
.L_return_24:
setup_return w1=r2, w2=r4
do_return:
.L_do_return:
#ifdef __ARMEB__
mov r0, ip
@@ -335,11 +342,16 @@ do_return:
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
/* There is a zero or a different byte between r1 and r2. */
/* r0 contains a mask of all-zero bytes in r1. */
/* Using r0 and not ip here because cbz requires low register. */
m_cbz reg=r0, label=compute_return_value
m_cbz reg=r0, label=.L_compute_return_value
clz r0, r0
/* r0 contains the number of bits on the left of the first all-zero byte in r1. */
rsb r0, r0, #24
@@ -347,7 +359,7 @@ do_return:
lsr r1, r1, r0
lsr r2, r2, r0
compute_return_value:
.L_compute_return_value:
movs r0, #1
cmp r1, r2
/* The return value is computed as follows.
@@ -367,7 +379,7 @@ compute_return_value:
* bionic/libc/arch-arm/cortex-a15/bionic/strcmp.S for the unedited
* version of the code.
*/
strcmp_unaligned:
.L_strcmp_unaligned:
wp1 .req r0
wp2 .req r1
b1 .req r2
@@ -520,6 +532,11 @@ strcmp_unaligned:
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
bx lr
@@ -541,4 +558,5 @@ strcmp_unaligned:
adds sp, sp, #16
bx lr
.cfi_endproc
END(strcmp)

View File

@@ -0,0 +1,456 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_ret inst
\inst {r0, r4, r5, pc}
.endm // m_ret
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcpy)
// Unroll the first 8 bytes that will be copied.
m_push
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_ret inst=pop
strcpy_continue:
pld [r1, #0]
ands r3, r0, #7
bne strcpy_align_dst
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_mainloop
strcpy_zero_in_first_register:
lsls lr, ip, #17
itt ne
strbne r2, [r0]
m_ret inst=popne
itt cs
strhcs r2, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
streq r2, [r0]
m_ret inst=popeq
strh r2, [r0], #2
lsr r3, r2, #16
strb r3, [r0]
m_ret inst=pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
ittt ne
stmiane r0!, {r2}
strbne r3, [r0]
m_ret inst=popne
ittt cs
strcs r2, [r0], #4
strhcs r3, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
stmiaeq r0, {r2, r3}
m_ret inst=popeq
stmia r0!, {r2}
strh r3, [r0], #2
lsr r4, r3, #16
strb r4, [r0]
m_ret inst=pop
strcpy_align_dst:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r4, [r1], #1
strb r4, [r0], #1
cmp r4, #0
it eq
m_ret inst=popeq
ldrb r5, [r1], #1
strb r5, [r0], #1
cmp r5, #0
it eq
m_ret inst=popeq
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
stmia r0!, {r2}
b strcpy_check_src_align
strcpy_complete:
m_ret inst=pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
stmia r0!, {r2}
strb r3, [r0]
strcpy_unalign_return:
m_ret inst=pop
strcpy_unalign7_copy6bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
m_ret inst=pop
strcpy_unalign7_copy7bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_ret inst=pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_unalign6_copy7bytes
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign6
strcpy_unalign6_copy7bytes:
stmia r0!, {r2}
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_ret inst=pop
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign5
strcpy_unalign_copy5bytes:
stmia r0!, {r2}
strb r4, [r0]
m_ret inst=pop
strcpy_unalign_copy6bytes:
stmia r0!, {r2}
strb r4, [r0], #1
strb r5, [r0]
m_ret inst=pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldmia r1!, {r2}
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldmia r1!, {r3}
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_ret inst=pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_unalign_copy3bytes
lsrs ip, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy4bytes:
stmia r0, {r2}
m_ret inst=pop
END(strcpy)

View File

@@ -0,0 +1,167 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
ENTRY(strlen)
pld [r0, #0]
mov r1, r0
ands r3, r0, #7
bne align_src
.p2align 2
mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne zero_in_second_register
b mainloop
zero_in_first_register:
sub r0, r1, r0
// Check for zero in byte 0.
lsls r2, ip, #17
beq check_byte1_reg1
sub r0, r0, #8
bx lr
check_byte1_reg1:
bcc check_byte2_reg1
sub r0, r0, #7
bx lr
check_byte2_reg1:
// Check for zero in byte 2.
tst ip, #0x800000
itt ne
subne r0, r0, #6
bxne lr
sub r0, r0, #5
bx lr
zero_in_second_register:
sub r0, r1, r0
// Check for zero in byte 0.
lsls r2, ip, #17
beq check_byte1_reg2
sub r0, r0, #4
bx lr
check_byte1_reg2:
bcc check_byte2_reg2
sub r0, r0, #3
bx lr
check_byte2_reg2:
// Check for zero in byte 2.
tst ip, #0x800000
itt ne
subne r0, r0, #2
bxne lr
sub r0, r0, #1
bx lr
align_src:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq align_to_32
ldrb r2, [r1], #1
cbz r2, done
align_to_32:
bcc align_to_64
ldrb r2, [r1], #1
cbz r2, done
ldrb r2, [r1], #1
cbz r2, done
align_to_64:
tst r3, #4
beq mainloop
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne zero_in_second_register
b mainloop
done:
sub r0, r1, r0
sub r0, r0, #1
bx lr
END(strlen)

View File

@@ -1,7 +1,10 @@
$(call libc-add-cpu-variant-src,MEMCPY,arch-arm/cortex-a9/bionic/memcpy.S)
$(call libc-add-cpu-variant-src,MEMSET,arch-arm/cortex-a9/bionic/memset.S)
$(call libc-add-cpu-variant-src,STRCAT,arch-arm/cortex-a9/bionic/strcat.S)
$(call libc-add-cpu-variant-src,STRCMP,arch-arm/cortex-a9/bionic/strcmp.S)
# Use cortex-a15 version of strlen.
$(call libc-add-cpu-variant-src,STRLEN,arch-arm/cortex-a15/bionic/strlen.S)
$(call libc-add-cpu-variant-src,STRCPY,arch-arm/cortex-a9/bionic/strcpy.S)
$(call libc-add-cpu-variant-src,STRLEN,arch-arm/cortex-a9/bionic/strlen.S)
$(call libc-add-cpu-variant-src,__STRCAT_CHK,arch-arm/cortex-a9/bionic/__strcat_chk.S)
$(call libc-add-cpu-variant-src,__STRCPY_CHK,arch-arm/cortex-a9/bionic/__strcpy_chk.S)
include bionic/libc/arch-arm/generic/generic.mk

View File

@@ -28,6 +28,7 @@
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* Optimized memcpy() for ARM.
@@ -36,6 +37,13 @@
* so we have to preserve R0.
*/
ENTRY(__memcpy_chk)
cmp r2, r3
bgt fortify_check_failed
// Fall through to memcpy...
END(__memcpy_chk)
ENTRY(memcpy)
/* The stack must always be 64-bits aligned to be compliant with the
* ARM ABI. Since we have to save R0, we might as well save R4
@@ -377,4 +385,20 @@ copy_last_3_and_return:
add sp, sp, #28
ldmfd sp!, {r0, r4, lr}
bx lr
// Only reached when the __memcpy_chk check fails.
fortify_check_failed:
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
END(memcpy)
.data
error_string:
.string "memcpy buffer overflow"

View File

@@ -27,6 +27,7 @@
*/
#include <machine/asm.h>
#include "libc_events.h"
/*
* Optimized memset() for ARM.
@@ -34,9 +35,28 @@
* memset() returns its first argument.
*/
ENTRY(__memset_chk)
cmp r2, r3
bls done
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
END(__memset_chk)
ENTRY(bzero)
mov r2, r1
mov r1, #0
done:
// Fall through to memset...
END(bzero)
ENTRY(memset)
@@ -107,3 +127,7 @@ ENTRY(memset)
ldmfd sp!, {r0, r4-r7, lr}
bx lr
END(memset)
.data
error_string:
.string "memset buffer overflow"

View File

@@ -1,4 +1,8 @@
$(call libc-add-cpu-variant-src,MEMCPY,arch-arm/generic/bionic/memcpy.S)
$(call libc-add-cpu-variant-src,MEMSET,arch-arm/generic/bionic/memset.S)
$(call libc-add-cpu-variant-src,STRCAT,string/strcat.c)
$(call libc-add-cpu-variant-src,STRCMP,arch-arm/generic/bionic/strcmp.S)
$(call libc-add-cpu-variant-src,STRCPY,arch-arm/generic/bionic/strcpy.S)
$(call libc-add-cpu-variant-src,STRLEN,arch-arm/generic/bionic/strlen.c)
$(call libc-add-cpu-variant-src,__STRCAT_CHK,bionic/__strcat_chk.cpp)
$(call libc-add-cpu-variant-src,__STRCPY_CHK,bionic/__strcpy_chk.cpp)

View File

@@ -0,0 +1,225 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.thumb
.thumb_func
// Get the length of src string, then get the source of the dst string.
// Check that the two lengths together don't exceed the threshold, then
// do a memcpy of the data.
ENTRY(__strcat_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
mov lr, r2
// Save the dst register to r5
mov r5, r0
// Zero out r4
eor r4, r4, r4
// r1 contains the address of the string to count.
.L_strlen_start:
mov r0, r1
ands r3, r1, #7
beq .L_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
.L_align_to_32:
bcc .L_align_to_64
ands ip, r3, #2
beq .L_align_to_64
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r3, [r1], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
.p2align 2
.L_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_update_count_and_finish:
sub r3, r1, r0
sub r3, r3, #1
b .L_finish
.L_zero_in_first_register:
sub r3, r1, r0
lsls r2, ip, #17
bne .L_sub8_and_finish
bcs .L_sub7_and_finish
lsls ip, ip, #1
bne .L_sub6_and_finish
sub r3, r3, #5
b .L_finish
.L_sub8_and_finish:
sub r3, r3, #8
b .L_finish
.L_sub7_and_finish:
sub r3, r3, #7
b .L_finish
.L_sub6_and_finish:
sub r3, r3, #6
b .L_finish
.L_zero_in_second_register:
sub r3, r1, r0
lsls r2, ip, #17
bne .L_sub4_and_finish
bcs .L_sub3_and_finish
lsls ip, ip, #1
bne .L_sub2_and_finish
sub r3, r3, #1
b .L_finish
.L_sub4_and_finish:
sub r3, r3, #4
b .L_finish
.L_sub3_and_finish:
sub r3, r3, #3
b .L_finish
.L_sub2_and_finish:
sub r3, r3, #2
.L_finish:
cmp r4, #0
bne .L_strlen_done
// Time to get the dst string length.
mov r1, r5
// Save the original source address to r5.
mov r5, r0
// Save the current length (adding 1 for the terminator).
add r4, r3, #1
b .L_strlen_start
// r0 holds the pointer to the dst string.
// r3 holds the dst string length.
// r4 holds the src string length + 1.
.L_strlen_done:
add r2, r3, r4
cmp r2, lr
bhi __strcat_chk_failed
// Set up the registers for the memcpy code.
mov r1, r5
pld [r1, #64]
mov r2, r4
add r0, r0, r3
pop {r4, r5}
.cfi_endproc
END(__strcat_chk)
#define MEMCPY_BASE __strcat_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcat_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcat_chk_failed)
.cfi_startproc
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcat_chk_failed)
.data
error_string:
.string "strcat buffer overflow"

View File

@@ -0,0 +1,187 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.thumb
.thumb_func
// Get the length of the source string first, then do a memcpy of the data
// instead of a strcpy.
ENTRY(__strcpy_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
mov lr, r2
mov r0, r1
ands r3, r1, #7
beq .L_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
.L_align_to_32:
bcc .L_align_to_64
ands ip, r3, #2
beq .L_align_to_64
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r3, [r0], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
.p2align 2
.L_mainloop:
ldrd r2, r3, [r0], #8
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_update_count_and_finish:
sub r3, r0, r1
sub r3, r3, #1
b .L_check_size
.L_zero_in_first_register:
sub r3, r0, r1
lsls r2, ip, #17
bne .L_sub8_and_finish
bcs .L_sub7_and_finish
lsls ip, ip, #1
bne .L_sub6_and_finish
sub r3, r3, #5
b .L_check_size
.L_sub8_and_finish:
sub r3, r3, #8
b .L_check_size
.L_sub7_and_finish:
sub r3, r3, #7
b .L_check_size
.L_sub6_and_finish:
sub r3, r3, #6
b .L_check_size
.L_zero_in_second_register:
sub r3, r0, r1
lsls r2, ip, #17
bne .L_sub4_and_finish
bcs .L_sub3_and_finish
lsls ip, ip, #1
bne .L_sub2_and_finish
sub r3, r3, #1
b .L_check_size
.L_sub4_and_finish:
sub r3, r3, #4
b .L_check_size
.L_sub3_and_finish:
sub r3, r3, #3
b .L_check_size
.L_sub2_and_finish:
sub r3, r3, #2
.L_check_size:
pld [r1, #0]
pld [r1, #64]
ldr r0, [sp]
cmp r3, lr
bhs __strcpy_chk_failed
// Add 1 for copy length to get the string terminator.
add r2, r3, #1
.cfi_endproc
END(__strcpy_chk)
#define MEMCPY_BASE __strcpy_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcpy_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcpy_chk_failed)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcpy_chk_failed)
.data
error_string:
.string "strcpy buffer overflow"

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -28,8 +28,8 @@
/* Assumes neon instructions and a cache line size of 32 bytes. */
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* This code assumes it is running on a processor that supports all arm v7
@@ -38,109 +38,55 @@
*/
.text
.syntax unified
.fpu neon
.thumb
.thumb_func
#define CACHE_LINE_SIZE 32
ENTRY(__memcpy_chk)
.cfi_startproc
cmp r2, r3
bhi __memcpy_chk_fail
// Fall through to memcpy...
.cfi_endproc
END(__memcpy_chk)
ENTRY(memcpy)
.save {r0, lr}
/* start preloading as early as possible */
pld [r1, #(CACHE_LINE_SIZE*0)]
stmfd sp!, {r0, lr}
pld [r1, #(CACHE_LINE_SIZE*2)]
/* do we have at least 16-bytes to copy (needed for alignment below) */
cmp r2, #16
blo 5f
/* align destination to cache-line for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 0f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
ldrmib lr, [r1], #1
strmib lr, [r0], #1
ldrcsb ip, [r1], #1
ldrcsb lr, [r1], #1
strcsb ip, [r0], #1
strcsb lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// copies 4 bytes, destination 32-bits aligned
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0, :32]!
1: bcc 2f
// copies 8 bytes, destination 64-bits aligned
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2:
0: /* preload immediately the next cache line, which we may need */
pld [r1, #(CACHE_LINE_SIZE*0)]
pld [r1, #(CACHE_LINE_SIZE*2)]
/* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
/* Preload all the cache lines we need.
* NOTE: The number of pld below depends on CACHE_LINE_SIZE,
* ideally we would increase the distance in the main loop to
* avoid the goofy code below. In practice this doesn't seem to make
* a big difference.
* NOTE: The value CACHE_LINE_SIZE * 8 was chosen through
* experimentation.
*/
pld [r1, #(CACHE_LINE_SIZE*4)]
pld [r1, #(CACHE_LINE_SIZE*6)]
pld [r1, #(CACHE_LINE_SIZE*8)]
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(CACHE_LINE_SIZE*8)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
add r2, r2, #64
subs r2, r2, #32
blo 4f
3: /* 32 bytes at a time. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0, :128]!
bhs 3b
4: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 5f
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0, :128]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0]!
2: movs ip, r2, lsl #31
ldrmib r3, [r1], #1
ldrcsb ip, [r1], #1
ldrcsb lr, [r1], #1
strmib r3, [r0], #1
strcsb ip, [r0], #1
strcsb lr, [r0], #1
ldmfd sp!, {r0, lr}
bx lr
.cfi_startproc
pld [r1, #64]
stmfd sp!, {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
.cfi_endproc
END(memcpy)
#define MEMCPY_BASE __memcpy_base
#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__memcpy_chk_fail)
.cfi_startproc
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__memcpy_chk_fail)
.data
error_string:
.string "memcpy buffer overflow"

View File

@@ -0,0 +1,127 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* This code assumes it is running on a processor that supports all arm v7
* instructions, that supports neon instructions, and that has a 32 byte
* cache line.
*/
// Assumes neon instructions and a cache line size of 32 bytes.
ENTRY(MEMCPY_BASE)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
/* do we have at least 16-bytes to copy (needed for alignment below) */
cmp r2, #16
blo 5f
/* align destination to cache-line for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 2f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
itt mi
ldrbmi lr, [r1], #1
strbmi lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// copies 4 bytes, destination 32-bits aligned
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0, :32]!
1: bcc 2f
// copies 8 bytes, destination 64-bits aligned
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2: /* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(32*8)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
adds r2, r2, #32
blo 4f
/* Copy 32 bytes. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
sub r2, r2, #32
vst1.8 {d0 - d3}, [r0, :128]!
4: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 5f
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0, :128]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0]!
2: movs ip, r2, lsl #31
itt mi
ldrbmi r3, [r1], #1
strbmi r3, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
ldmfd sp!, {r0, lr}
bx lr
.cfi_endproc
END(MEMCPY_BASE)

View File

@@ -28,6 +28,7 @@
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* This code assumes it is running on a processor that supports all arm v7
@@ -37,15 +38,47 @@
.fpu neon
ENTRY(__memset_chk)
.cfi_startproc
cmp r2, r3
bls .L_done
// Preserve lr for backtrace.
.save {lr}
push {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
.cfi_endproc
END(__memset_chk)
ENTRY(bzero)
.cfi_startproc
mov r2, r1
mov r1, #0
.L_done:
// Fall through to memset...
.cfi_endproc
END(bzero)
/* memset() returns its first argument. */
ENTRY(memset)
.cfi_startproc
.save {r0}
stmfd sp!, {r0}
.cfi_def_cfa_offset 4
.cfi_rel_offset r0, 0
vdup.8 q0, r1
@@ -78,4 +111,9 @@ ENTRY(memset)
strcsb r1, [r0], #1
ldmfd sp!, {r0}
bx lr
.cfi_endproc
END(memset)
.data
error_string:
.string "memset buffer overflow"

View File

@@ -123,8 +123,13 @@ ENTRY(strcmp)
.macro init
/* Macro to save temporary registers and prepare magic values. */
subs sp, sp, #16
.cfi_def_cfa_offset 16
strd r4, r5, [sp, #8]
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
strd r6, r7, [sp]
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
mvn r6, #0 /* all F */
mov r7, #0 /* all 0 */
.endm /* init */
@@ -165,18 +170,20 @@ ENTRY(strcmp)
#endif /* not __ARMEB__ */
.endm /* setup_return */
.cfi_startproc
pld [r0, #0]
pld [r1, #0]
/* Are both strings double-word aligned? */
orr ip, r0, r1
tst ip, #7
bne do_align
bne .L_do_align
/* Fast path. */
.save {r4-r7}
init
doubleword_aligned:
.L_doubleword_aligned:
/* Get here when the strings to compare are double-word aligned. */
/* Compare two words in every iteration. */
@@ -189,14 +196,14 @@ doubleword_aligned:
ldrd r2, r3, [r0], #8
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r2, w2=r4, label=return_24
magic_compare_and_branch w1=r3, w2=r5, label=return_35
magic_compare_and_branch w1=r2, w2=r4, label=.L_return_24
magic_compare_and_branch w1=r3, w2=r5, label=.L_return_35
b 2b
do_align:
.L_do_align:
/* Is the first string word-aligned? */
ands ip, r0, #3
beq word_aligned_r0
beq .L_word_aligned_r0
/* Fast compare byte by byte until the first string is word-aligned. */
/* The offset of r0 from a word boundary is in ip. Thus, the number of bytes
@@ -204,58 +211,58 @@ do_align:
bic r0, r0, #3
ldr r2, [r0], #4
lsls ip, ip, #31
beq byte2
bcs byte3
beq .L_byte2
bcs .L_byte3
byte1:
.L_byte1:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE1_OFFSET
subs ip, r3, ip
bne fast_return
m_cbz reg=r3, label=fast_return
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
byte2:
.L_byte2:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE2_OFFSET
subs ip, r3, ip
bne fast_return
m_cbz reg=r3, label=fast_return
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
byte3:
.L_byte3:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE3_OFFSET
subs ip, r3, ip
bne fast_return
m_cbnz reg=r3, label=word_aligned_r0
bne .L_fast_return
m_cbnz reg=r3, label=.L_word_aligned_r0
fast_return:
.L_fast_return:
mov r0, ip
bx lr
word_aligned_r0:
.L_word_aligned_r0:
init
/* The first string is word-aligned. */
/* Is the second string word-aligned? */
ands ip, r1, #3
bne strcmp_unaligned
bne .L_strcmp_unaligned
word_aligned:
.L_word_aligned:
/* The strings are word-aligned. */
/* Is the first string double-word aligned? */
tst r0, #4
beq doubleword_aligned_r0
beq .L_doubleword_aligned_r0
/* If r0 is not double-word aligned yet, align it by loading
and comparing the next word from each string. */
ldr r2, [r0], #4
ldr r4, [r1], #4
magic_compare_and_branch w1=r2 w2=r4 label=return_24
magic_compare_and_branch w1=r2 w2=r4 label=.L_return_24
doubleword_aligned_r0:
.L_doubleword_aligned_r0:
/* Get here when r0 is double-word aligned. */
/* Is r1 doubleword_aligned? */
tst r1, #4
beq doubleword_aligned
beq .L_doubleword_aligned
/* Get here when the strings to compare are word-aligned,
r0 is double-word aligned, but r1 is not double-word aligned. */
@@ -271,9 +278,9 @@ doubleword_aligned_r0:
/* Load the next double-word from each string and compare. */
ldrd r2, r3, [r0], #8
magic_compare_and_branch w1=r2 w2=r5 label=return_25
magic_compare_and_branch w1=r2 w2=r5 label=.L_return_25
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r3 w2=r4 label=return_34
magic_compare_and_branch w1=r3 w2=r4 label=.L_return_34
b 3b
.macro miscmp_word offsetlo offsethi
@@ -297,46 +304,46 @@ doubleword_aligned_r0:
and r2, r3, r6, S2LOMEM #\offsetlo
it eq
cmpeq r2, r5
bne return_25
bne .L_return_25
ldr r5, [r1], #4
cmp ip, #0
eor r3, r2, r3
S2HIMEM r2, r5, #\offsethi
it eq
cmpeq r3, r2
bne return_32
bne .L_return_32
b 7b
.endm /* miscmp_word */
strcmp_unaligned:
.L_strcmp_unaligned:
/* r0 is word-aligned, r1 is at offset ip from a word. */
/* Align r1 to the (previous) word-boundary. */
bic r1, r1, #3
/* Unaligned comparison word by word using LDRs. */
cmp ip, #2
beq miscmp_word_16 /* If ip == 2. */
bge miscmp_word_24 /* If ip == 3. */
beq .L_miscmp_word_16 /* If ip == 2. */
bge .L_miscmp_word_24 /* If ip == 3. */
miscmp_word offsetlo=8 offsethi=24 /* If ip == 1. */
miscmp_word_24: miscmp_word offsetlo=24 offsethi=8
.L_miscmp_word_24: miscmp_word offsetlo=24 offsethi=8
return_32:
.L_return_32:
setup_return w1=r3, w2=r2
b do_return
return_34:
b .L_do_return
.L_return_34:
setup_return w1=r3, w2=r4
b do_return
return_25:
b .L_do_return
.L_return_25:
setup_return w1=r2, w2=r5
b do_return
return_35:
b .L_do_return
.L_return_35:
setup_return w1=r3, w2=r5
b do_return
return_24:
b .L_do_return
.L_return_24:
setup_return w1=r2, w2=r4
do_return:
.L_do_return:
#ifdef __ARMEB__
mov r0, ip
@@ -348,11 +355,16 @@ do_return:
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
/* There is a zero or a different byte between r1 and r2. */
/* r0 contains a mask of all-zero bytes in r1. */
/* Using r0 and not ip here because cbz requires low register. */
m_cbz reg=r0, label=compute_return_value
m_cbz reg=r0, label=.L_compute_return_value
clz r0, r0
/* r0 contains the number of bits on the left of the first all-zero byte in r1. */
rsb r0, r0, #24
@@ -360,7 +372,7 @@ do_return:
lsr r1, r1, r0
lsr r2, r2, r0
compute_return_value:
.L_compute_return_value:
movs r0, #1
cmp r1, r2
/* The return value is computed as follows.
@@ -380,7 +392,7 @@ compute_return_value:
* previous version. See bionic/libc/arch-arm/cortex-a15/bionic/strcmp.S
* for the unedited version of this code.
*/
miscmp_word_16:
.L_miscmp_word_16:
wp1 .req r0
wp2 .req r1
b1 .req r2
@@ -453,6 +465,11 @@ miscmp_word_16:
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
bx lr
@@ -472,6 +489,12 @@ miscmp_word_16:
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
bx lr
.cfi_endproc
END(strcmp)

View File

@@ -1,7 +1,11 @@
$(call libc-add-cpu-variant-src,MEMCPY,arch-arm/krait/bionic/memcpy.S)
$(call libc-add-cpu-variant-src,MEMSET,arch-arm/krait/bionic/memset.S)
$(call libc-add-cpu-variant-src,STRCMP,arch-arm/krait/bionic/strcmp.S)
# Use cortex-a15 version of strlen.
$(call libc-add-cpu-variant-src,__STRCAT_CHK,arch-arm/krait/bionic/__strcat_chk.S)
$(call libc-add-cpu-variant-src,__STRCPY_CHK,arch-arm/krait/bionic/__strcpy_chk.S)
# Use cortex-a15 versions of strcat/strcpy/strlen.
$(call libc-add-cpu-variant-src,STRCAT,arch-arm/cortex-a15/bionic/strcat.S)
$(call libc-add-cpu-variant-src,STRCPY,arch-arm/cortex-a15/bionic/strcpy.S)
$(call libc-add-cpu-variant-src,STRLEN,arch-arm/cortex-a15/bionic/strlen.S)
include bionic/libc/arch-arm/generic/generic.mk

View File

@@ -1,5 +1,5 @@
/*
Copyright (c) 2010, 2011 Intel Corporation
Copyright (c) 2010, 2011, 2012, 2013 Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -106,9 +106,12 @@ name: \
ENTRY (MEMCMP)
movl LEN(%esp), %ecx
#ifdef USE_AS_WMEMCMP
#ifdef USE_WCHAR
shl $2, %ecx
jz L(zero)
#elif defined USE_UTF16
shl $1, %ecx
jz L(zero)
#endif
movl BLK1(%esp), %eax
@@ -116,7 +119,7 @@ ENTRY (MEMCMP)
movl BLK2(%esp), %edx
jae L(48bytesormore)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cmp $1, %ecx
jbe L(less1bytes)
#endif
@@ -128,7 +131,7 @@ ENTRY (MEMCMP)
CFI_POP (%ebx)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
.p2align 4
L(less1bytes):
jb L(zero)
@@ -174,7 +177,7 @@ L(48bytesormore):
jz L(shr_0)
xor %edx, %esi
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cmp $8, %edx
jae L(next_unaligned_table)
cmp $0, %edx
@@ -210,7 +213,7 @@ L(next_unaligned_table):
cmp $14, %edx
je L(shr_14)
jmp L(shr_15)
#else
#elif defined(USE_WCHAR)
cmp $0, %edx
je L(shr_0)
cmp $4, %edx
@@ -218,6 +221,22 @@ L(next_unaligned_table):
cmp $8, %edx
je L(shr_8)
jmp L(shr_12)
#elif defined(USE_UTF16)
cmp $0, %edx
je L(shr_0)
cmp $2, %edx
je L(shr_2)
cmp $4, %edx
je L(shr_4)
cmp $6, %edx
je L(shr_6)
cmp $8, %edx
je L(shr_8)
cmp $10, %edx
je L(shr_10)
cmp $12, %edx
je L(shr_12)
jmp L(shr_14)
#endif
.p2align 4
@@ -289,7 +308,7 @@ L(shr_0_gobble_loop_next):
POP (%esi)
jmp L(less48bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -372,8 +391,10 @@ L(shr_1_gobble_next):
POP (%edi)
POP (%esi)
jmp L(less48bytes)
#endif
#if !defined(USE_WCHAR)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -456,7 +477,9 @@ L(shr_2_gobble_next):
POP (%edi)
POP (%esi)
jmp L(less48bytes)
#endif
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -624,7 +647,7 @@ L(shr_4_gobble_next):
POP (%esi)
jmp L(less48bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -707,7 +730,9 @@ L(shr_5_gobble_next):
POP (%edi)
POP (%esi)
jmp L(less48bytes)
#endif
#if !defined(USE_WCHAR)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -790,7 +815,9 @@ L(shr_6_gobble_next):
POP (%edi)
POP (%esi)
jmp L(less48bytes)
#endif
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -958,7 +985,7 @@ L(shr_8_gobble_next):
POP (%esi)
jmp L(less48bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -1041,7 +1068,9 @@ L(shr_9_gobble_next):
POP (%edi)
POP (%esi)
jmp L(less48bytes)
#endif
#if !defined(USE_WCHAR)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -1124,7 +1153,9 @@ L(shr_10_gobble_next):
POP (%edi)
POP (%esi)
jmp L(less48bytes)
#endif
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -1292,7 +1323,7 @@ L(shr_12_gobble_next):
POP (%esi)
jmp L(less48bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -1375,7 +1406,9 @@ L(shr_13_gobble_next):
POP (%edi)
POP (%esi)
jmp L(less48bytes)
#endif
#if !defined(USE_WCHAR)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -1458,7 +1491,9 @@ L(shr_14_gobble_next):
POP (%edi)
POP (%esi)
jmp L(less48bytes)
#endif
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cfi_restore_state
cfi_remember_state
.p2align 4
@@ -1558,7 +1593,7 @@ L(first16bytes):
add %eax, %esi
L(less16bytes):
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
test %dl, %dl
jz L(next_24_bytes)
@@ -1668,7 +1703,7 @@ L(Byte31):
movzbl -9(%esi), %edx
sub %edx, %eax
RETURN_END
#else
#elif defined(USE_AS_WMEMCMP)
/* special for wmemcmp */
test %dl, %dl
@@ -1682,7 +1717,6 @@ L(Byte31):
neg %eax
RETURN
.p2align 4
L(second_double_word):
mov -12(%edi), %ecx
@@ -1691,7 +1725,7 @@ L(second_double_word):
jg L(nequal_bigger)
neg %eax
RETURN
.p2align 4
L(next_two_double_words):
and $15, %dh
@@ -1715,6 +1749,79 @@ L(fourth_double_word):
.p2align 4
L(nequal_bigger):
RETURN_END
#elif defined(USE_AS_MEMCMP16)
/* special for __memcmp16 */
test %dl, %dl
jz L(next_four_words)
test $15, %dl
jz L(second_two_words)
test $3, %dl
jz L(second_word)
movzwl -16(%edi), %eax
movzwl -16(%esi), %ebx
subl %ebx, %eax
RETURN
.p2align 4
L(second_word):
movzwl -14(%edi), %eax
movzwl -14(%esi), %ebx
subl %ebx, %eax
RETURN
.p2align 4
L(second_two_words):
test $63, %dl
jz L(fourth_word)
movzwl -12(%edi), %eax
movzwl -12(%esi), %ebx
subl %ebx, %eax
RETURN
.p2align 4
L(fourth_word):
movzwl -10(%edi), %eax
movzwl -10(%esi), %ebx
subl %ebx, %eax
RETURN
.p2align 4
L(next_four_words):
test $15, %dh
jz L(fourth_two_words)
test $3, %dh
jz L(sixth_word)
movzwl -8(%edi), %eax
movzwl -8(%esi), %ebx
subl %ebx, %eax
RETURN
.p2align 4
L(sixth_word):
movzwl -6(%edi), %eax
movzwl -6(%esi), %ebx
subl %ebx, %eax
RETURN
.p2align 4
L(fourth_two_words):
test $63, %dh
jz L(eighth_word)
movzwl -4(%edi), %eax
movzwl -4(%esi), %ebx
subl %ebx, %eax
RETURN
.p2align 4
L(eighth_word):
movzwl -2(%edi), %eax
movzwl -2(%esi), %ebx
subl %ebx, %eax
RETURN
#else
# error Unreachable preprocessor case
#endif
CFI_PUSH (%ebx)
@@ -1725,7 +1832,7 @@ L(more8bytes):
jae L(more16bytes)
cmp $8, %ecx
je L(8bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cmp $9, %ecx
je L(9bytes)
cmp $10, %ecx
@@ -1739,8 +1846,16 @@ L(more8bytes):
cmp $14, %ecx
je L(14bytes)
jmp L(15bytes)
#else
#elif defined(USE_WCHAR) && !defined(USE_UTF16)
jmp L(12bytes)
#elif defined(USE_UTF16) && !defined(USE_WCHAR)
cmp $10, %ecx
je L(10bytes)
cmp $12, %ecx
je L(12bytes)
jmp L(14bytes)
#else
# error Unreachable preprocessor case
#endif
.p2align 4
@@ -1749,7 +1864,7 @@ L(more16bytes):
jae L(more24bytes)
cmp $16, %ecx
je L(16bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cmp $17, %ecx
je L(17bytes)
cmp $18, %ecx
@@ -1763,8 +1878,16 @@ L(more16bytes):
cmp $22, %ecx
je L(22bytes)
jmp L(23bytes)
#else
#elif defined(USE_WCHAR) && !defined(USE_UTF16)
jmp L(20bytes)
#elif defined(USE_UTF16) && !defined(USE_WCHAR)
cmp $18, %ecx
je L(18bytes)
cmp $20, %ecx
je L(20bytes)
jmp L(22bytes)
#else
# error Unreachable preprocessor case
#endif
.p2align 4
@@ -1773,7 +1896,7 @@ L(more24bytes):
jae L(more32bytes)
cmp $24, %ecx
je L(24bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cmp $25, %ecx
je L(25bytes)
cmp $26, %ecx
@@ -1787,8 +1910,16 @@ L(more24bytes):
cmp $30, %ecx
je L(30bytes)
jmp L(31bytes)
#else
#elif defined(USE_WCHAR) && !defined(USE_UTF16)
jmp L(28bytes)
#elif defined(USE_UTF16) && !defined(USE_WCHAR)
cmp $26, %ecx
je L(26bytes)
cmp $28, %ecx
je L(28bytes)
jmp L(30bytes)
#else
# error Unreachable preprocessor case
#endif
.p2align 4
@@ -1797,7 +1928,7 @@ L(more32bytes):
jae L(more40bytes)
cmp $32, %ecx
je L(32bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cmp $33, %ecx
je L(33bytes)
cmp $34, %ecx
@@ -1811,15 +1942,23 @@ L(more32bytes):
cmp $38, %ecx
je L(38bytes)
jmp L(39bytes)
#else
#elif defined(USE_WCHAR) && !defined(USE_UTF16)
jmp L(36bytes)
#elif defined(USE_UTF16) && !defined(USE_WCHAR)
cmp $34, %ecx
je L(34bytes)
cmp $36, %ecx
je L(36bytes)
jmp L(38bytes)
#else
# error Unreachable preprocessor case
#endif
.p2align 4
L(less48bytes):
cmp $8, %ecx
jae L(more8bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cmp $2, %ecx
je L(2bytes)
cmp $3, %ecx
@@ -1831,15 +1970,23 @@ L(less48bytes):
cmp $6, %ecx
je L(6bytes)
jmp L(7bytes)
#else
#elif defined(USE_WCHAR) && !defined(USE_UTF16)
jmp L(4bytes)
#elif defined(USE_UTF16) && !defined(USE_WCHAR)
cmp $2, %ecx
je L(2bytes)
cmp $4, %ecx
je L(4bytes)
jmp L(6bytes)
#else
# error Unreachable preprocessor case
#endif
.p2align 4
L(more40bytes):
cmp $40, %ecx
je L(40bytes)
#ifndef USE_AS_WMEMCMP
#if !defined(USE_WCHAR) && !defined(USE_UTF16)
cmp $41, %ecx
je L(41bytes)
cmp $42, %ecx
@@ -1853,7 +2000,15 @@ L(more40bytes):
cmp $46, %ecx
je L(46bytes)
jmp L(47bytes)
#elif defined(USE_UTF16) && !defined(USE_WCHAR)
cmp $42, %ecx
je L(42bytes)
cmp $44, %ecx
je L(44bytes)
jmp L(46bytes)
#endif
#if !defined(USE_AS_WMEMCMP) && !defined(USE_AS_MEMCMP16)
.p2align 4
L(44bytes):
mov -44(%eax), %ecx
@@ -1914,7 +2069,8 @@ L(4bytes):
POP (%ebx)
ret
CFI_PUSH (%ebx)
#else
#elif defined(USE_AS_WMEMCMP)
.p2align 4
L(44bytes):
mov -44(%eax), %ecx
@@ -1964,9 +2120,131 @@ L(4bytes):
POP (%ebx)
ret
CFI_PUSH (%ebx)
#elif defined USE_AS_MEMCMP16
.p2align 4
L(46bytes):
movzwl -46(%eax), %ecx
movzwl -46(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(44bytes):
movzwl -44(%eax), %ecx
movzwl -44(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(42bytes):
movzwl -42(%eax), %ecx
movzwl -42(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(40bytes):
movzwl -40(%eax), %ecx
movzwl -40(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(38bytes):
movzwl -38(%eax), %ecx
movzwl -38(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(36bytes):
movzwl -36(%eax), %ecx
movzwl -36(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(34bytes):
movzwl -34(%eax), %ecx
movzwl -34(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(32bytes):
movzwl -32(%eax), %ecx
movzwl -32(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(30bytes):
movzwl -30(%eax), %ecx
movzwl -30(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(28bytes):
movzwl -28(%eax), %ecx
movzwl -28(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(26bytes):
movzwl -26(%eax), %ecx
movzwl -26(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(24bytes):
movzwl -24(%eax), %ecx
movzwl -24(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(22bytes):
movzwl -22(%eax), %ecx
movzwl -22(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(20bytes):
movzwl -20(%eax), %ecx
movzwl -20(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(18bytes):
movzwl -18(%eax), %ecx
movzwl -18(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(16bytes):
movzwl -16(%eax), %ecx
movzwl -16(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(14bytes):
movzwl -14(%eax), %ecx
movzwl -14(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(12bytes):
movzwl -12(%eax), %ecx
movzwl -12(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(10bytes):
movzwl -10(%eax), %ecx
movzwl -10(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(8bytes):
movzwl -8(%eax), %ecx
movzwl -8(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(6bytes):
movzwl -6(%eax), %ecx
movzwl -6(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(4bytes):
movzwl -4(%eax), %ecx
movzwl -4(%edx), %ebx
subl %ebx, %ecx
jne L(memcmp16_exit)
L(2bytes):
movzwl -2(%eax), %eax
movzwl -2(%edx), %ebx
subl %ebx, %eax
POP (%ebx)
ret
CFI_PUSH (%ebx)
#else
# error Unreachable preprocessor case
#endif
#ifndef USE_AS_WMEMCMP
#if !defined(USE_AS_WMEMCMP) && !defined(USE_AS_MEMCMP16)
.p2align 4
L(45bytes):
@@ -2191,9 +2469,8 @@ L(end):
neg %eax
L(bigger):
ret
#else
#elif defined(USE_AS_WMEMCMP)
/* for wmemcmp */
.p2align 4
L(find_diff):
POP (%ebx)
@@ -2206,5 +2483,14 @@ L(find_diff):
L(find_diff_bigger):
ret
#elif defined(USE_AS_MEMCMP16)
.p2align 4
L(memcmp16_exit):
POP (%ebx)
mov %ecx, %eax
ret
#else
# error Unreachable preprocessor case
#endif
END (MEMCMP)

View File

@@ -0,0 +1,37 @@
/*
Copyright (c) 2013, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define MEMCMP __memcmp16
/* int __memcmp16(const unsigned short *ptr1, const unsigned short *ptr2, size_t n); */
#define USE_UTF16
#define USE_AS_MEMCMP16 1
#include "ssse3-memcmp-atom.S"

View File

@@ -1,5 +1,5 @@
/*
Copyright (c) 2011, Intel Corporation
Copyright (c) 2011, 2012, 2013 Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -29,5 +29,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define MEMCMP wmemcmp
#define USE_WCHAR
#define USE_AS_WMEMCMP 1
#include "ssse3-memcmp-atom.S"

View File

@@ -27,6 +27,7 @@ _LIBC_ARCH_COMMON_SRC_FILES += \
arch-x86/string/ssse3-strcpy-atom.S \
arch-x86/string/ssse3-memcmp-atom.S \
arch-x86/string/ssse3-wmemcmp-atom.S \
arch-x86/string/ssse3-memcmp16-atom.S \
arch-x86/string/ssse3-wcscat-atom.S \
arch-x86/string/ssse3-wcscpy-atom.S
else
@@ -38,6 +39,7 @@ _LIBC_ARCH_COMMON_SRC_FILES += \
arch-x86/string/strncmp.S \
arch-x86/string/strcat.S \
arch-x86/string/memcmp.S \
string/memcmp16.c \
string/strcpy.c \
string/strncat.c \
string/strncpy.c \

View File

@@ -31,18 +31,17 @@
#include <string.h>
#include "libc_logging.h"
char *
__strrchr_chk(const char *p, int ch, size_t s_len)
extern "C" char* __strrchr_chk(const char *p, int ch, size_t s_len)
{
char *save;
char *save;
for (save = NULL;; ++p, s_len--) {
if (s_len == 0)
__fortify_chk_fail("strrchr read beyond buffer", 0);
if (*p == (char) ch)
save = (char *)p;
if (!*p)
return(save);
}
/* NOTREACHED */
for (save = NULL;; ++p, s_len--) {
if (s_len == 0)
__fortify_chk_fail("strrchr read beyond buffer", 0);
if (*p == (char) ch)
save = (char *)p;
if (!*p)
return(save);
}
/* NOTREACHED */
}

View File

@@ -16,6 +16,7 @@
#include "dlmalloc.h"
#include "private/bionic_name_mem.h"
#include "private/libc_logging.h"
// Send dlmalloc errors to the log.
@@ -25,6 +26,11 @@ static void __bionic_heap_usage_error(const char* function, void* address);
#define CORRUPTION_ERROR_ACTION(m) __bionic_heap_corruption_error(__FUNCTION__)
#define USAGE_ERROR_ACTION(m,p) __bionic_heap_usage_error(__FUNCTION__, p)
/* Bionic named anonymous memory declarations */
static void* named_anonymous_mmap(size_t length);
#define MMAP(s) named_anonymous_mmap(s)
#define DIRECT_MMAP(s) named_anonymous_mmap(s)
// Ugly inclusion of C file so that bionic specific #defines configure dlmalloc.
#include "../upstream-dlmalloc/malloc.c"
@@ -42,3 +48,15 @@ static void __bionic_heap_usage_error(const char* function, void* address) {
// TODO: improve the debuggerd protocol so we can tell it to dump an address when we abort.
*((int**) 0xdeadbaad) = (int*) address;
}
static void* named_anonymous_mmap(size_t length)
{
void* ret;
ret = mmap(NULL, length, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
if (ret == MAP_FAILED)
return ret;
__bionic_name_mem(ret, length, "libc_malloc");
return ret;
}

34
libc/bionic/futimens.cpp Normal file
View File

@@ -0,0 +1,34 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <errno.h>
#include <sys/stat.h>
int futimens(int fd, const struct timespec times[2]) {
return utimensat(fd, NULL, times, 0);
}

View File

@@ -37,6 +37,8 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/auxv.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include "atexit.h"
@@ -62,6 +64,21 @@ uintptr_t __stack_chk_guard = 0;
unsigned int __page_size = PAGE_SIZE;
unsigned int __page_shift = PAGE_SHIFT;
static size_t get_stack_size() {
const size_t minimal_stack_size = 128 * 1024;
size_t stack_size = minimal_stack_size;
struct rlimit stack_limit;
int rlimit_result = getrlimit(RLIMIT_STACK, &stack_limit);
if ((rlimit_result == 0) && (stack_limit.rlim_cur != RLIM_INFINITY)) {
stack_size = stack_limit.rlim_cur;
stack_size = (stack_size & ~(PAGE_SIZE - 1));
if (stack_size < minimal_stack_size) {
stack_size = minimal_stack_size;
}
}
return stack_size;
}
/* Init TLS for the initial thread. Called by the linker _before_ libc is mapped
* in memory. Beware: all writes to libc globals from this function will
* apply to linker-private copies and will not be visible from libc later on.
@@ -76,9 +93,9 @@ unsigned int __page_shift = PAGE_SHIFT;
void __libc_init_tls(KernelArgumentBlock& args) {
__libc_auxv = args.auxv;
unsigned stack_top = (__get_sp() & ~(PAGE_SIZE - 1)) + PAGE_SIZE;
unsigned stack_size = 128 * 1024;
unsigned stack_bottom = stack_top - stack_size;
uintptr_t stack_top = (__get_sp() & ~(PAGE_SIZE - 1)) + PAGE_SIZE;
size_t stack_size = get_stack_size();
uintptr_t stack_bottom = stack_top - stack_size;
static void* tls[BIONIC_TLS_SLOTS];
static pthread_internal_t thread;

View File

@@ -37,13 +37,14 @@ extern "C" void* __mmap2(void*, size_t, int, int, int, size_t);
#define MMAP2_SHIFT 12 // 2**12 == 4096
void* mmap(void* addr, size_t size, int prot, int flags, int fd, long offset) {
void* mmap(void* addr, size_t size, int prot, int flags, int fd, off_t offset) {
if (offset & ((1UL << MMAP2_SHIFT)-1)) {
errno = EINVAL;
return MAP_FAILED;
}
void* result = __mmap2(addr, size, prot, flags, fd, offset >> MMAP2_SHIFT);
size_t unsigned_offset = static_cast<size_t>(offset); // To avoid sign extension.
void* result = __mmap2(addr, size, prot, flags, fd, unsigned_offset >> MMAP2_SHIFT);
if (result != MAP_FAILED && (flags & (MAP_PRIVATE | MAP_ANONYMOUS)) != 0) {
ErrnoRestorer errno_restorer;

53
libc/bionic/name_mem.c Normal file
View File

@@ -0,0 +1,53 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include "private/bionic_name_mem.h"
/*
* Local definitions of custom prctl arguments to set a vma name in some kernels
*/
#define BIONIC_PR_SET_VMA 0x53564d41
#define BIONIC_PR_SET_VMA_ANON_NAME 0
/*
* Names a region of memory. The name is expected to show up in /proc/pid/maps
* and /proc/pid/smaps. There is no guarantee that it will work, and it if it
* does work it is likely to only work on memory that was allocated with
* mmap(MAP_ANONYMOUS), and only on regions that are page aligned. name should
* be a pointer to a string that is valid for as long as the memory is mapped,
* preferably a compile-time constant string.
*
* Returns -1 on error and sets errno. If it returns an error naming page
* aligned anonymous memory the kernel doesn't support naming, and an alternate
* method of naming memory should be used (like ashmem).
*/
int __bionic_name_mem(void *addr, size_t len, const char *name)
{
return prctl(BIONIC_PR_SET_VMA, BIONIC_PR_SET_VMA_ANON_NAME,
addr, len, name);
}

View File

@@ -36,7 +36,13 @@ int pthread_getcpuclockid(pthread_t t, clockid_t* clockid) {
return ESRCH;
}
enum { CLOCK_IDTYPE_BITS = 3 };
*clockid = CLOCK_THREAD_CPUTIME_ID | (thread->tid << CLOCK_IDTYPE_BITS);
// The tid is stored in the top bits, but negated.
clockid_t result = ~static_cast<clockid_t>(thread->tid) << 3;
// Bits 0 and 1: clock type (0 = CPUCLOCK_PROF, 1 = CPUCLOCK_VIRT, 2 = CPUCLOCK_SCHED).
result |= 2;
// Bit 2: thread (set) or process (clear)?
result |= (1 << 2);
*clockid = result;
return 0;
}

View File

@@ -33,6 +33,7 @@
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <pthread.h>
#include <stdio.h> // For FOPEN_MAX.
#include <string.h>
#include <sys/sysconf.h>
@@ -57,7 +58,6 @@
/* the following depends on our implementation */
#define SYSTEM_ATEXIT_MAX 65536 /* our implementation is unlimited */
#define SYSTEM_THREAD_STACK_MIN 32768 /* lower values may be possible, but be conservative */
#define SYSTEM_THREAD_THREADS_MAX 2048 /* really unlimited */
#define SYSTEM_2_C_BIND _POSIX_VERSION /* Posix C binding version */
@@ -309,7 +309,7 @@ int sysconf(int name) {
case _SC_THREAD_KEYS_MAX:
return (BIONIC_TLS_SLOTS - TLS_SLOT_FIRST_USER_SLOT - GLOBAL_INIT_THREAD_LOCAL_BUFFER_COUNT);
case _SC_THREAD_STACK_MIN: return SYSTEM_THREAD_STACK_MIN;
case _SC_THREAD_STACK_MIN: return PTHREAD_STACK_MIN;
case _SC_THREAD_THREADS_MAX: return SYSTEM_THREAD_THREADS_MAX;
case _SC_TTY_NAME_MAX: return SYSTEM_TTY_NAME_MAX;
#ifdef _POSIX_THREADS

View File

@@ -42,14 +42,14 @@
#include <sys/cdefs.h>
#define _U 0x01
#define _L 0x02
#define _N 0x04
#define _S 0x08
#define _P 0x10
#define _C 0x20
#define _X 0x40
#define _B 0x80
#define _CTYPE_U 0x01
#define _CTYPE_L 0x02
#define _CTYPE_N 0x04
#define _CTYPE_S 0x08
#define _CTYPE_P 0x10
#define _CTYPE_C 0x20
#define _CTYPE_X 0x40
#define _CTYPE_B 0x80
__BEGIN_DECLS
@@ -101,57 +101,57 @@ int _toupper(int);
__CTYPE_INLINE int isalnum(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_U|_L|_N)));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_CTYPE_U|_CTYPE_L|_CTYPE_N)));
}
__CTYPE_INLINE int isalpha(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_U|_L)));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_CTYPE_U|_CTYPE_L)));
}
__CTYPE_INLINE int iscntrl(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _C));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _CTYPE_C));
}
__CTYPE_INLINE int isdigit(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _N));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _CTYPE_N));
}
__CTYPE_INLINE int isgraph(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N)));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_N)));
}
__CTYPE_INLINE int islower(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _L));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _CTYPE_L));
}
__CTYPE_INLINE int isprint(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N|_B)));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_N|_CTYPE_B)));
}
__CTYPE_INLINE int ispunct(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _P));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _CTYPE_P));
}
__CTYPE_INLINE int isspace(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _S));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _CTYPE_S));
}
__CTYPE_INLINE int isupper(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _U));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _CTYPE_U));
}
__CTYPE_INLINE int isxdigit(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_N|_X)));
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & (_CTYPE_N|_CTYPE_X)));
}
__CTYPE_INLINE int tolower(int c)

View File

@@ -249,13 +249,16 @@ typedef struct {
} imaxdiv_t;
__BEGIN_DECLS
intmax_t imaxabs(intmax_t);
imaxdiv_t imaxdiv(intmax_t, intmax_t);
intmax_t imaxabs(intmax_t) __pure2;
imaxdiv_t imaxdiv(intmax_t, intmax_t) __pure2;
intmax_t strtoimax(const char *, char **, int);
uintmax_t strtoumax(const char *, char **, int);
intmax_t strntoimax(const char *nptr, char **endptr, int base, size_t n);
uintmax_t strntoumax(const char *nptr, char **endptr, int base, size_t n);
__END_DECLS
#endif /* _INTTYPES_H_ */

View File

@@ -207,11 +207,13 @@ void endprotoent(void);
void endservent(void);
void freehostent(struct hostent *);
struct hostent *gethostbyaddr(const void *, socklen_t, int);
struct hostent *android_gethostbyaddrforiface(const void *, socklen_t, int, const char*, int);
int gethostbyaddr_r(const void *, int, int, struct hostent *, char *, size_t, struct hostent **, int *);
struct hostent *gethostbyname(const char *);
int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
struct hostent *gethostbyname2(const char *, int);
int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
struct hostent *android_gethostbynameforiface(const char *, int, const char *, int);
struct hostent *gethostent(void);
int gethostent_r(struct hostent *, char *, size_t, struct hostent **, int *);
struct hostent *getipnodebyaddr(const void *, size_t, int, int *);
@@ -239,7 +241,9 @@ void sethostent(int);
void setnetent(int);
void setprotoent(int);
int getaddrinfo(const char *, const char *, const struct addrinfo *, struct addrinfo **);
int android_getaddrinfoforiface(const char *, const char *, const struct addrinfo *, const char *, int, struct addrinfo **);
int getnameinfo(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t, int);
int android_getnameinfoforiface(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t, int, const char *, int);
void freeaddrinfo(struct addrinfo *);
const char *gai_strerror(int);
void setnetgrent(const char *);

View File

@@ -191,8 +191,13 @@ typedef uint64_t uint_fast64_t;
* intptr_t & uintptr_t
*/
#ifdef __LP64__
typedef long intptr_t;
typedef unsigned long uintptr_t;
#else
typedef int intptr_t;
typedef unsigned int uintptr_t;
#endif
#ifdef __STDINT_LIMITS
# define INTPTR_MIN INT32_MIN

View File

@@ -77,17 +77,9 @@ static __inline__ double atof(const char *nptr)
return (strtod(nptr, NULL));
}
static __inline__ int abs(int __n) {
return (__n < 0) ? -__n : __n;
}
static __inline__ long labs(long __n) {
return (__n < 0L) ? -__n : __n;
}
static __inline__ long long llabs(long long __n) {
return (__n < 0LL) ? -__n : __n;
}
extern int abs(int) __pure2;
extern long labs(long) __pure2;
extern long long llabs(long long) __pure2;
extern char * realpath(const char *path, char *resolved);
extern int system(const char * string);

View File

@@ -176,9 +176,9 @@
#define _POSIX_JOB_CONTROL 1 /* job control is a Linux feature */
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 /* the minimum mandated by POSIX */
#define PTHREAD_DESTRUCTOR_ITERATIONS 4
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
#define _POSIX_THREAD_KEYS_MAX 128 /* the minimum mandated by POSIX */
/* TODO: our PTHREAD_KEYS_MAX is currently too low to be posix compliant! */
#define PTHREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX
#define _POSIX_THREAD_THREADS_MAX 64 /* the minimum mandated by POSIX */
#define PTHREAD_THREADS_MAX /* bionic has no specific limit */

View File

@@ -168,7 +168,8 @@ extern int renameat(int olddirfd, const char *oldpath, int newdirfd, const char
# define UTIME_NOW ((1l << 30) - 1l)
# define UTIME_OMIT ((1l << 30) - 2l)
extern int utimensat (int fd, const char *path, const struct timespec times[2], int flags);
extern int utimensat(int fd, const char *path, const struct timespec times[2], int flags);
extern int futimens(int fd, const struct timespec times[2]);
__END_DECLS

View File

@@ -98,7 +98,7 @@ struct syslog_data {
#define SYSLOG_DATA_INIT {-1, 0, 0, 0, (const char *)0, LOG_USER, 0xff}
#define _PATH_LOG "/dev/kmsg"
#define _PATH_LOG "/dev/syslog"
extern void closelog(void);
extern void openlog(const char *, int, int);

View File

@@ -1,24 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef LINUX_KEXEC_H
#define LINUX_KEXEC_H
struct pt_regs;
struct task_struct;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#endif

View File

@@ -1,109 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __LINUX_MFD_MSM_ADIE_CODEC_H
#define __LINUX_MFD_MSM_ADIE_CODEC_H
#include <linux/types.h>
#define ADIE_CODEC_ACTION_ENTRY 0x1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ADIE_CODEC_ACTION_DELAY_WAIT 0x2
#define ADIE_CODEC_ACTION_STAGE_REACHED 0x3
#define ADIE_CODEC_PATH_OFF 0x0050
#define ADIE_CODEC_DIGITAL_READY 0x0100
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ADIE_CODEC_DIGITAL_ANALOG_READY 0x1000
#define ADIE_CODEC_ANALOG_OFF 0x0750
#define ADIE_CODEC_DIGITAL_OFF 0x0600
#define ADIE_CODEC_FLASH_IMAGE 0x0001
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ADIE_CODEC_RX 0
#define ADIE_CODEC_TX 1
#define ADIE_CODEC_LB 3
#define ADIE_CODEC_MAX 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ADIE_CODEC_PACK_ENTRY(reg, mask, val) ((val)|(mask << 8)|(reg << 16))
#define ADIE_CODEC_UNPACK_ENTRY(packed, reg, mask, val) do { ((reg) = ((packed >> 16) & (0xff))); ((mask) = ((packed >> 8) & (0xff))); ((val) = ((packed) & (0xff))); } while (0);
struct adie_codec_action_unit {
u32 type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 action;
};
struct adie_codec_hwsetting_entry{
struct adie_codec_action_unit *actions;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 action_sz;
u32 freq_plan;
u32 osr;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct adie_codec_dev_profile {
u32 path_type;
u32 setting_sz;
struct adie_codec_hwsetting_entry *settings;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct adie_codec_register {
u8 reg;
u8 mask;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u8 val;
};
struct adie_codec_register_image {
struct adie_codec_register *regs;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 img_sz;
};
struct adie_codec_path;
struct adie_codec_anc_data {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 size;
u32 writes[];
};
struct adie_codec_operations {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int codec_id;
int (*codec_open) (struct adie_codec_dev_profile *profile,
struct adie_codec_path **path_pptr);
int (*codec_close) (struct adie_codec_path *path_ptr);
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int (*codec_setpath) (struct adie_codec_path *path_ptr,
u32 freq_plan, u32 osr);
int (*codec_proceed_stage) (struct adie_codec_path *path_ptr,
u32 state);
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 (*codec_freq_supported) (struct adie_codec_dev_profile *profile,
u32 requested_freq);
int (*codec_enable_sidetone) (struct adie_codec_path *rx_path_ptr,
u32 enable);
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int (*codec_enable_anc) (struct adie_codec_path *rx_path_ptr,
u32 enable, struct adie_codec_anc_data *calibration_writes);
int (*codec_set_device_digital_volume) (
struct adie_codec_path *path_ptr,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 num_channels,
u32 vol_percentage);
int (*codec_set_device_analog_volume) (struct adie_codec_path *path_ptr,
u32 num_channels,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 volume);
int (*codec_set_master_mode) (struct adie_codec_path *path_ptr,
u8 master);
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#endif

View File

@@ -1,60 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __LINUX_MSM_ADSP_H
#define __LINUX_MSM_ADSP_H
#include <linux/types.h>
#include <linux/ioctl.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ADSP_IOCTL_MAGIC 'q'
struct adsp_command_t {
uint16_t queue;
uint32_t len;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint8_t *data;
};
struct adsp_event_t {
uint16_t type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t timeout_ms;
uint16_t msg_id;
uint16_t flags;
uint32_t len;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint8_t *data;
};
#define ADSP_IOCTL_ENABLE _IOR(ADSP_IOCTL_MAGIC, 1, unsigned)
#define ADSP_IOCTL_DISABLE _IOR(ADSP_IOCTL_MAGIC, 2, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ADSP_IOCTL_DISABLE_ACK _IOR(ADSP_IOCTL_MAGIC, 3, unsigned)
#define ADSP_IOCTL_WRITE_COMMAND _IOR(ADSP_IOCTL_MAGIC, 4, struct adsp_command_t *)
#define ADSP_IOCTL_GET_EVENT _IOWR(ADSP_IOCTL_MAGIC, 5, struct adsp_event_data_t *)
#define ADSP_IOCTL_SET_CLKRATE _IOR(ADSP_IOCTL_MAGIC, 6, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ADSP_IOCTL_DISABLE_EVENT_RSP _IOR(ADSP_IOCTL_MAGIC, 10, unsigned)
struct adsp_pmem_info {
int fd;
void *vaddr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#define ADSP_IOCTL_REGISTER_PMEM _IOW(ADSP_IOCTL_MAGIC, 13, unsigned)
#define ADSP_IOCTL_UNREGISTER_PMEM _IOW(ADSP_IOCTL_MAGIC, 14, unsigned)
#define ADSP_IOCTL_ABORT_EVENT_READ _IOW(ADSP_IOCTL_MAGIC, 15, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ADSP_IOCTL_LINK_TASK _IOW(ADSP_IOCTL_MAGIC, 16, unsigned)
#endif

View File

@@ -1,345 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __LINUX_MSM_AUDIO_H
#define __LINUX_MSM_AUDIO_H
#include <linux/types.h>
#include <linux/ioctl.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_IOCTL_MAGIC 'a'
#define AUDIO_START _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned)
#define AUDIO_STOP _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned)
#define AUDIO_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_GET_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 3, unsigned)
#define AUDIO_SET_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 4, unsigned)
#define AUDIO_GET_STATS _IOR(AUDIO_IOCTL_MAGIC, 5, unsigned)
#define AUDIO_ENABLE_AUDPP _IOW(AUDIO_IOCTL_MAGIC, 6, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_ADRC _IOW(AUDIO_IOCTL_MAGIC, 7, unsigned)
#define AUDIO_SET_EQ _IOW(AUDIO_IOCTL_MAGIC, 8, unsigned)
#define AUDIO_SET_RX_IIR _IOW(AUDIO_IOCTL_MAGIC, 9, unsigned)
#define AUDIO_SET_VOLUME _IOW(AUDIO_IOCTL_MAGIC, 10, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_PAUSE _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned)
#define AUDIO_PLAY_DTMF _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned)
#define AUDIO_GET_EVENT _IOR(AUDIO_IOCTL_MAGIC, 13, unsigned)
#define AUDIO_ABORT_GET_EVENT _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_REGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 15, unsigned)
#define AUDIO_DEREGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 16, unsigned)
#define AUDIO_ASYNC_WRITE _IOW(AUDIO_IOCTL_MAGIC, 17, unsigned)
#define AUDIO_ASYNC_READ _IOW(AUDIO_IOCTL_MAGIC, 18, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_INCALL _IOW(AUDIO_IOCTL_MAGIC, 19, struct msm_voicerec_mode)
#define AUDIO_GET_NUM_SND_DEVICE _IOR(AUDIO_IOCTL_MAGIC, 20, unsigned)
#define AUDIO_GET_SND_DEVICES _IOWR(AUDIO_IOCTL_MAGIC, 21, struct msm_snd_device_list)
#define AUDIO_ENABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 22, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_DISABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 23, unsigned)
#define AUDIO_ROUTE_STREAM _IOW(AUDIO_IOCTL_MAGIC, 24, struct msm_audio_route_config)
#define AUDIO_GET_PCM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 30, unsigned)
#define AUDIO_SET_PCM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 31, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SWITCH_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 32, unsigned)
#define AUDIO_SET_MUTE _IOW(AUDIO_IOCTL_MAGIC, 33, unsigned)
#define AUDIO_UPDATE_ACDB _IOW(AUDIO_IOCTL_MAGIC, 34, unsigned)
#define AUDIO_START_VOICE _IOW(AUDIO_IOCTL_MAGIC, 35, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_STOP_VOICE _IOW(AUDIO_IOCTL_MAGIC, 36, unsigned)
#define AUDIO_REINIT_ACDB _IOW(AUDIO_IOCTL_MAGIC, 39, unsigned)
#define AUDIO_OUTPORT_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 40, unsigned short)
#define AUDIO_SET_ERR_THRESHOLD_VALUE _IOW(AUDIO_IOCTL_MAGIC, 41, unsigned short)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_GET_BITSTREAM_ERROR_INFO _IOR(AUDIO_IOCTL_MAGIC, 42, struct msm_audio_bitstream_error_info)
#define AUDIO_SET_SRS_TRUMEDIA_PARAM _IOW(AUDIO_IOCTL_MAGIC, 43, unsigned)
#define AUDIO_SET_STREAM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 80, struct msm_audio_stream_config)
#define AUDIO_GET_STREAM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 81, struct msm_audio_stream_config)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_GET_SESSION_ID _IOR(AUDIO_IOCTL_MAGIC, 82, unsigned short)
#define AUDIO_GET_STREAM_INFO _IOR(AUDIO_IOCTL_MAGIC, 83, struct msm_audio_bitstream_info)
#define AUDIO_SET_PAN _IOW(AUDIO_IOCTL_MAGIC, 84, unsigned)
#define AUDIO_SET_QCONCERT_PLUS _IOW(AUDIO_IOCTL_MAGIC, 85, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_MBADRC _IOW(AUDIO_IOCTL_MAGIC, 86, unsigned)
#define AUDIO_SET_VOLUME_PATH _IOW(AUDIO_IOCTL_MAGIC, 87, struct msm_vol_info)
#define AUDIO_SET_MAX_VOL_ALL _IOW(AUDIO_IOCTL_MAGIC, 88, unsigned)
#define AUDIO_ENABLE_AUDPRE _IOW(AUDIO_IOCTL_MAGIC, 89, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_AGC _IOW(AUDIO_IOCTL_MAGIC, 90, unsigned)
#define AUDIO_SET_NS _IOW(AUDIO_IOCTL_MAGIC, 91, unsigned)
#define AUDIO_SET_TX_IIR _IOW(AUDIO_IOCTL_MAGIC, 92, unsigned)
#define AUDIO_GET_BUF_CFG _IOW(AUDIO_IOCTL_MAGIC, 93, struct msm_audio_buf_cfg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_BUF_CFG _IOW(AUDIO_IOCTL_MAGIC, 94, struct msm_audio_buf_cfg)
#define AUDIO_SET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 95, struct msm_acdb_cmd_device)
#define AUDIO_GET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 96, struct msm_acdb_cmd_device)
#define AUDIO_REGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 97, unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_DEREGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 98, unsigned)
#define AUDIO_MAX_COMMON_IOCTL_NUM 100
#define HANDSET_MIC 0x01
#define HANDSET_SPKR 0x02
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define HEADSET_MIC 0x03
#define HEADSET_SPKR_MONO 0x04
#define HEADSET_SPKR_STEREO 0x05
#define SPKR_PHONE_MIC 0x06
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SPKR_PHONE_MONO 0x07
#define SPKR_PHONE_STEREO 0x08
#define BT_SCO_MIC 0x09
#define BT_SCO_SPKR 0x0A
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define BT_A2DP_SPKR 0x0B
#define TTY_HEADSET_MIC 0x0C
#define TTY_HEADSET_SPKR 0x0D
#define DEFAULT_TX 0x0E
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DEFAULT_RX 0x0F
#define BT_A2DP_TX 0x10
#define HEADSET_MONO_PLUS_SPKR_MONO_RX 0x11
#define HEADSET_MONO_PLUS_SPKR_STEREO_RX 0x12
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define HEADSET_STEREO_PLUS_SPKR_MONO_RX 0x13
#define HEADSET_STEREO_PLUS_SPKR_STEREO_RX 0x14
#define I2S_RX 0x20
#define I2S_TX 0x21
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ADRC_ENABLE 0x0001
#define EQ_ENABLE 0x0002
#define IIR_ENABLE 0x0004
#define QCONCERT_PLUS_ENABLE 0x0008
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MBADRC_ENABLE 0x0010
#define SRS_ENABLE 0x0020
#define SRS_DISABLE 0x0040
#define AGC_ENABLE 0x0001
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define NS_ENABLE 0x0002
#define TX_IIR_ENABLE 0x0004
#define FLUENCE_ENABLE 0x0008
#define VOC_REC_UPLINK 0x00
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VOC_REC_DOWNLINK 0x01
#define VOC_REC_BOTH 0x02
struct msm_audio_config {
uint32_t buffer_size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t buffer_count;
uint32_t channel_count;
uint32_t sample_rate;
uint32_t type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t meta_field;
uint32_t bits;
uint32_t unused[3];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_audio_stream_config {
uint32_t buffer_size;
uint32_t buffer_count;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_audio_buf_cfg{
uint32_t meta_info_enable;
uint32_t frames_per_buf;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_audio_stats {
uint32_t byte_count;
uint32_t sample_count;
uint32_t unused[2];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct msm_audio_ion_info {
int fd;
void *vaddr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct msm_audio_pmem_info {
int fd;
void *vaddr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct msm_audio_aio_buf {
void *buf_addr;
uint32_t buf_len;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t data_len;
void *private_data;
unsigned short mfield_sz;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_IOCTL_MAGIC 's'
#define SND_MUTE_UNMUTED 0
#define SND_MUTE_MUTED 1
struct msm_mute_info {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t mute;
uint32_t path;
};
struct msm_vol_info {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t vol;
uint32_t path;
};
struct msm_voicerec_mode {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t rec_mode;
};
struct msm_snd_device_config {
uint32_t device;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t ear_mute;
uint32_t mic_mute;
};
#define SND_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_device_config *)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_METHOD_VOICE 0
struct msm_snd_volume_config {
uint32_t device;
uint32_t method;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t volume;
};
#define SND_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_snd_volume_config *)
#define SND_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_snd_endpoint {
int id;
char name[64];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_snd_endpoint *)
#define SND_AVC_CTL _IOW(SND_IOCTL_MAGIC, 6, unsigned *)
#define SND_AGC_CTL _IOW(SND_IOCTL_MAGIC, 7, unsigned *)
struct msm_audio_pcm_config {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t pcm_feedback;
uint32_t buffer_count;
uint32_t buffer_size;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_EVENT_SUSPEND 0
#define AUDIO_EVENT_RESUME 1
#define AUDIO_EVENT_WRITE_DONE 2
#define AUDIO_EVENT_READ_DONE 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_EVENT_STREAM_INFO 4
#define AUDIO_EVENT_BITSTREAM_ERROR_INFO 5
#define AUDIO_CODEC_TYPE_MP3 0
#define AUDIO_CODEC_TYPE_AAC 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_audio_bitstream_info {
uint32_t codec_type;
uint32_t chan_info;
uint32_t sample_rate;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t bit_stream_info;
uint32_t bit_rate;
uint32_t unused[3];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_audio_bitstream_error_info {
uint32_t dec_id;
uint32_t err_msg_indicator;
uint32_t err_type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
union msm_audio_event_payload {
struct msm_audio_aio_buf aio_buf;
struct msm_audio_bitstream_info stream_info;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_audio_bitstream_error_info error_info;
int reserved;
};
struct msm_audio_event {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int event_type;
int timeout_ms;
union msm_audio_event_payload event_payload;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_SNDDEV_CAP_RX 0x1
#define MSM_SNDDEV_CAP_TX 0x2
#define MSM_SNDDEV_CAP_VOICE 0x4
struct msm_snd_device_info {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t dev_id;
uint32_t dev_cap;
char dev_name[64];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_snd_device_list {
uint32_t num_dev;
struct msm_snd_device_info *list;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_dtmf_config {
uint16_t path;
uint16_t dtmf_hi;
uint16_t dtmf_low;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint16_t duration;
uint16_t tx_gain;
uint16_t rx_gain;
uint16_t mixing;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#define AUDIO_ROUTE_STREAM_VOICE_RX 0
#define AUDIO_ROUTE_STREAM_VOICE_TX 1
#define AUDIO_ROUTE_STREAM_PLAYBACK 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_ROUTE_STREAM_REC 3
struct msm_audio_route_config {
uint32_t stream_type;
uint32_t stream_id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t dev_id;
};
#define AUDIO_MAX_EQ_BANDS 12
struct msm_audio_eq_band {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint16_t band_idx;
uint32_t filter_type;
uint32_t center_freq_hz;
uint32_t filter_gain;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t q_factor;
} __attribute__ ((packed));
struct msm_audio_eq_stream_config {
uint32_t enable;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t num_bands;
struct msm_audio_eq_band eq_bands[AUDIO_MAX_EQ_BANDS];
} __attribute__ ((packed));
struct msm_acdb_cmd_device {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t command_id;
uint32_t device_id;
uint32_t network_id;
uint32_t sample_rate_id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t interface_id;
uint32_t algorithm_block_id;
uint32_t total_bytes;
uint32_t *phys_buf;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#endif

View File

@@ -1,79 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __MSM_AUDIO_AAC_H
#define __MSM_AUDIO_AAC_H
#include <linux/msm_audio.h>
#define AUDIO_SET_AAC_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+0), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_GET_AAC_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+1), unsigned)
#define AUDIO_SET_AAC_ENC_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+3), struct msm_audio_aac_enc_config)
#define AUDIO_GET_AAC_ENC_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+4), struct msm_audio_aac_enc_config)
#define AUDIO_AAC_FORMAT_ADTS -1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_AAC_FORMAT_RAW 0x0000
#define AUDIO_AAC_FORMAT_PSUEDO_RAW 0x0001
#define AUDIO_AAC_FORMAT_LOAS 0x0002
#define AUDIO_AAC_FORMAT_ADIF 0x0003
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_AAC_OBJECT_LC 0x0002
#define AUDIO_AAC_OBJECT_LTP 0x0004
#define AUDIO_AAC_OBJECT_ERLC 0x0011
#define AUDIO_AAC_OBJECT_BSAC 0x0016
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_AAC_SEC_DATA_RES_ON 0x0001
#define AUDIO_AAC_SEC_DATA_RES_OFF 0x0000
#define AUDIO_AAC_SCA_DATA_RES_ON 0x0001
#define AUDIO_AAC_SCA_DATA_RES_OFF 0x0000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_AAC_SPEC_DATA_RES_ON 0x0001
#define AUDIO_AAC_SPEC_DATA_RES_OFF 0x0000
#define AUDIO_AAC_SBR_ON_FLAG_ON 0x0001
#define AUDIO_AAC_SBR_ON_FLAG_OFF 0x0000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_AAC_SBR_PS_ON_FLAG_ON 0x0001
#define AUDIO_AAC_SBR_PS_ON_FLAG_OFF 0x0000
#define AUDIO_AAC_DUAL_MONO_PL_PR 0
#define AUDIO_AAC_DUAL_MONO_SL_SR 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_AAC_DUAL_MONO_SL_PR 2
#define AUDIO_AAC_DUAL_MONO_PL_SR 3
struct msm_audio_aac_config {
signed short format;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned short audio_object;
unsigned short ep_config;
unsigned short aac_section_data_resilience_flag;
unsigned short aac_scalefactor_data_resilience_flag;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned short aac_spectral_data_resilience_flag;
unsigned short sbr_on_flag;
unsigned short sbr_ps_on_flag;
unsigned short dual_mono_mode;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned short channel_configuration;
};
struct msm_audio_aac_enc_config {
uint32_t channels;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t sample_rate;
uint32_t bit_rate;
uint32_t stream_format;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#endif

View File

@@ -1,70 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __MSM_AUDIO_ACDB_H
#define __MSM_AUDIO_ACDB_H
#include <linux/msm_audio.h>
#define AUDIO_SET_VOCPROC_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+0), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_VOCPROC_STREAM_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+1), unsigned)
#define AUDIO_SET_VOCPROC_VOL_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+2), unsigned)
#define AUDIO_SET_AUDPROC_RX_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+3), unsigned)
#define AUDIO_SET_AUDPROC_RX_STREAM_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+4), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_AUDPROC_RX_VOL_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+5), unsigned)
#define AUDIO_SET_AUDPROC_TX_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+6), unsigned)
#define AUDIO_SET_AUDPROC_TX_STREAM_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+7), unsigned)
#define AUDIO_SET_AUDPROC_TX_VOL_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+8), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_SIDETONE_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+9), unsigned)
#define AUDIO_SET_ANC_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+10), unsigned)
#define AUDIO_SET_VOICE_RX_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+11), unsigned)
#define AUDIO_SET_VOICE_TX_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+12), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_ADM_RX_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+13), unsigned)
#define AUDIO_SET_ADM_TX_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+14), unsigned)
#define AUDIO_SET_ASM_TOPOLOGY _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+15), unsigned)
#define AUDIO_SET_AFE_TX_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+16), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_SET_AFE_RX_CAL _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+17), unsigned)
#define AUDIO_MAX_ACDB_IOCTL (AUDIO_MAX_COMMON_IOCTL_NUM+30)
struct cal_block {
uint32_t cal_size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t cal_offset;
};
struct sidetone_cal {
uint16_t enable;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint16_t gain;
};
#define AUDIO_GET_RTAC_ADM_INFO _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+1), unsigned)
#define AUDIO_GET_RTAC_VOICE_INFO _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+2), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_GET_RTAC_ADM_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+3), unsigned)
#define AUDIO_SET_RTAC_ADM_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+4), unsigned)
#define AUDIO_GET_RTAC_ASM_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+5), unsigned)
#define AUDIO_SET_RTAC_ASM_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+6), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_GET_RTAC_CVS_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+7), unsigned)
#define AUDIO_SET_RTAC_CVS_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+8), unsigned)
#define AUDIO_GET_RTAC_CVP_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+9), unsigned)
#define AUDIO_SET_RTAC_CVP_CAL _IOWR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_ACDB_IOCTL+10), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_MAX_RTAC_IOCTL (AUDIO_MAX_ACDB_IOCTL+20)
#endif

View File

@@ -1,48 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __MSM_AUDIO_WMA_H
#define __MSM_AUDIO_WMA_H
#define AUDIO_GET_WMA_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+0), unsigned)
#define AUDIO_SET_WMA_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+1), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define AUDIO_GET_WMA_CONFIG_V2 _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+2), struct msm_audio_wma_config_v2)
#define AUDIO_SET_WMA_CONFIG_V2 _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+3), struct msm_audio_wma_config_v2)
struct msm_audio_wma_config {
unsigned short armdatareqthr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned short channelsdecoded;
unsigned short wmabytespersec;
unsigned short wmasamplingfreq;
unsigned short wmaencoderopts;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct msm_audio_wma_config_v2 {
unsigned short format_tag;
unsigned short numchannels;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t samplingrate;
uint32_t avgbytespersecond;
unsigned short block_align;
unsigned short validbitspersample;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t channelmask;
unsigned short encodeopt;
};
#endif
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */

View File

@@ -1,40 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __MSM_AUDIO_WMAPRO_H
#define __MSM_AUDIO_WMAPRO_H
#define AUDIO_GET_WMAPRO_CONFIG _IOR(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+0), unsigned)
#define AUDIO_SET_WMAPRO_CONFIG _IOW(AUDIO_IOCTL_MAGIC, (AUDIO_MAX_COMMON_IOCTL_NUM+1), unsigned)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_audio_wmapro_config {
unsigned short armdatareqthr;
uint8_t validbitspersample;
uint8_t numchannels;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned short formattag;
unsigned short samplingrate;
unsigned short avgbytespersecond;
unsigned short asfpacketlength;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned short channelmask;
unsigned short encodeopt;
unsigned short advancedencodeopt;
uint32_t advancedencodeopt2;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#endif

View File

@@ -1,38 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _ARCH_ARM_MACH_MSM_MDM_IOCTLS_H
#define _ARXH_ARM_MACH_MSM_MDM_IOCTLS_H
#define CHARM_CODE 0xCC
#define WAKE_CHARM _IO(CHARM_CODE, 1)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define RESET_CHARM _IO(CHARM_CODE, 2)
#define CHECK_FOR_BOOT _IOR(CHARM_CODE, 3, int)
#define WAIT_FOR_BOOT _IO(CHARM_CODE, 4)
#define NORMAL_BOOT_DONE _IOW(CHARM_CODE, 5, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define RAM_DUMP_DONE _IOW(CHARM_CODE, 6, int)
#define WAIT_FOR_RESTART _IOR(CHARM_CODE, 7, int)
#define GET_DLOAD_STATUS _IOR(CHARM_CODE, 8, int)
enum charm_boot_type {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
CHARM_NORMAL_BOOT = 0,
CHARM_RAM_DUMPS,
};
#endif
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */

View File

@@ -1,30 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _DSPS_H_
#define _DSPS_H_
#include <linux/ioctl.h>
#define DSPS_IOCTL_MAGIC 'd'
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DSPS_IOCTL_ON _IO(DSPS_IOCTL_MAGIC, 1)
#define DSPS_IOCTL_OFF _IO(DSPS_IOCTL_MAGIC, 2)
#define DSPS_IOCTL_READ_SLOW_TIMER _IOR(DSPS_IOCTL_MAGIC, 3, unsigned int*)
#define DSPS_IOCTL_READ_FAST_TIMER _IOR(DSPS_IOCTL_MAGIC, 4, unsigned int*)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define DSPS_IOCTL_RESET _IO(DSPS_IOCTL_MAGIC, 5)
#endif

View File

@@ -1,105 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __LINUX_MSM_ION_H__
#define __LINUX_MSM_ION_H__
#include <linux/ion.h>
enum msm_ion_heap_types {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
ION_HEAP_TYPE_IOMMU = ION_HEAP_TYPE_CUSTOM + 1,
ION_HEAP_TYPE_CP = ION_HEAP_TYPE_CUSTOM + 2,
};
enum ion_heap_ids {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
INVALID_HEAP_ID = -1,
ION_CP_MM_HEAP_ID = 8,
ION_CP_MFC_HEAP_ID = 12,
ION_CP_WB_HEAP_ID = 16,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
ION_CAMERA_HEAP_ID = 20,
ION_SF_HEAP_ID = 24,
ION_IOMMU_HEAP_ID = 25,
ION_QSECOM_HEAP_ID = 27,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
ION_AUDIO_HEAP_ID = 28,
ION_MM_FIRMWARE_HEAP_ID = 29,
ION_SYSTEM_HEAP_ID = 30,
ION_HEAP_ID_RESERVED = 31
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum ion_fixed_position {
NOT_FIXED,
FIXED_LOW,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
FIXED_MIDDLE,
FIXED_HIGH,
};
enum cp_mem_usage {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VIDEO_BITSTREAM = 0x1,
VIDEO_PIXEL = 0x2,
VIDEO_NONPIXEL = 0x3,
MAX_USAGE = 0x4,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
UNKNOWN = 0x7FFFFFFF,
};
#define ION_HEAP_CP_MASK (1 << ION_HEAP_TYPE_CP)
#define ION_SECURE (1 << ION_HEAP_ID_RESERVED)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ION_HEAP(bit) (1 << (bit))
#define ION_VMALLOC_HEAP_NAME "vmalloc"
#define ION_AUDIO_HEAP_NAME "audio"
#define ION_SF_HEAP_NAME "sf"
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ION_MM_HEAP_NAME "mm"
#define ION_CAMERA_HEAP_NAME "camera_preview"
#define ION_IOMMU_HEAP_NAME "iommu"
#define ION_MFC_HEAP_NAME "mfc"
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ION_WB_HEAP_NAME "wb"
#define ION_MM_FIRMWARE_HEAP_NAME "mm_fw"
#define ION_QSECOM_HEAP_NAME "qsecom"
#define ION_FMEM_HEAP_NAME "fmem"
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define CACHED 1
#define UNCACHED 0
#define ION_CACHE_SHIFT 0
#define ION_SET_CACHE(__cache) ((__cache) << ION_CACHE_SHIFT)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ION_IS_CACHED(__flags) ((__flags) & (1 << ION_CACHE_SHIFT))
struct ion_flush_data {
struct ion_handle *handle;
int fd;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
void *vaddr;
unsigned int offset;
unsigned int length;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct ion_flag_data {
struct ion_handle *handle;
unsigned long flags;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ION_IOC_CLEAN_CACHES _IOWR(ION_IOC_MAGIC, 20, struct ion_flush_data)
#define ION_IOC_INV_CACHES _IOWR(ION_IOC_MAGIC, 21, struct ion_flush_data)
#define ION_IOC_CLEAN_INV_CACHES _IOWR(ION_IOC_MAGIC, 22, struct ion_flush_data)
#define ION_IOC_GET_FLAGS _IOWR(ION_IOC_MAGIC, 23, struct ion_flag_data)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#endif

View File

@@ -1,365 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _MSM_KGSL_H
#define _MSM_KGSL_H
#define KGSL_VERSION_MAJOR 3
#define KGSL_VERSION_MINOR 12
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define KGSL_CONTEXT_SAVE_GMEM 0x00000001
#define KGSL_CONTEXT_NO_GMEM_ALLOC 0x00000002
#define KGSL_CONTEXT_SUBMIT_IB_LIST 0x00000004
#define KGSL_CONTEXT_CTX_SWITCH 0x00000008
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define KGSL_CONTEXT_PREAMBLE 0x00000010
#define KGSL_CONTEXT_TRASH_STATE 0x00000020
#define KGSL_CONTEXT_PER_CONTEXT_TS 0x00000040
#define KGSL_CONTEXT_INVALID 0xffffffff
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define KGSL_MEMFLAGS_GPUREADONLY 0x01000000
#define KGSL_FLAGS_NORMALMODE 0x00000000
#define KGSL_FLAGS_SAFEMODE 0x00000001
#define KGSL_FLAGS_INITIALIZED0 0x00000002
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define KGSL_FLAGS_INITIALIZED 0x00000004
#define KGSL_FLAGS_STARTED 0x00000008
#define KGSL_FLAGS_ACTIVE 0x00000010
#define KGSL_FLAGS_RESERVED0 0x00000020
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define KGSL_FLAGS_RESERVED1 0x00000040
#define KGSL_FLAGS_RESERVED2 0x00000080
#define KGSL_FLAGS_SOFT_RESET 0x00000100
#define KGSL_FLAGS_PER_CONTEXT_TIMESTAMPS 0x00000200
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define KGSL_CLK_SRC 0x00000001
#define KGSL_CLK_CORE 0x00000002
#define KGSL_CLK_IFACE 0x00000004
#define KGSL_CLK_MEM 0x00000008
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define KGSL_CLK_MEM_IFACE 0x00000010
#define KGSL_CLK_AXI 0x00000020
enum kgsl_ctx_reset_stat {
KGSL_CTX_STAT_NO_ERROR = 0x00000000,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
KGSL_CTX_STAT_GUILTY_CONTEXT_RESET_EXT = 0x00000001,
KGSL_CTX_STAT_INNOCENT_CONTEXT_RESET_EXT = 0x00000002,
KGSL_CTX_STAT_UNKNOWN_CONTEXT_RESET_EXT = 0x00000003
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define KGSL_CONVERT_TO_MBPS(val) (val*1000*1000U)
enum kgsl_deviceid {
KGSL_DEVICE_3D0 = 0x00000000,
KGSL_DEVICE_2D0 = 0x00000001,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
KGSL_DEVICE_2D1 = 0x00000002,
KGSL_DEVICE_MAX = 0x00000003
};
enum kgsl_user_mem_type {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
KGSL_USER_MEM_TYPE_PMEM = 0x00000000,
KGSL_USER_MEM_TYPE_ASHMEM = 0x00000001,
KGSL_USER_MEM_TYPE_ADDR = 0x00000002,
KGSL_USER_MEM_TYPE_ION = 0x00000003,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
KGSL_USER_MEM_TYPE_MAX = 0x00000004,
};
struct kgsl_devinfo {
unsigned int device_id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int chip_id;
unsigned int mmu_enabled;
unsigned int gmem_gpubaseaddr;
unsigned int gpu_id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int gmem_sizebytes;
};
struct kgsl_devmemstore {
volatile unsigned int soptimestamp;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int sbz;
volatile unsigned int eoptimestamp;
unsigned int sbz2;
volatile unsigned int ts_cmp_enable;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int sbz3;
volatile unsigned int ref_wait_ts;
unsigned int sbz4;
unsigned int current_context;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int sbz5;
};
#define KGSL_MEMSTORE_OFFSET(ctxt_id, field) ((ctxt_id)*sizeof(struct kgsl_devmemstore) + offsetof(struct kgsl_devmemstore, field))
enum kgsl_timestamp_type {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
KGSL_TIMESTAMP_CONSUMED = 0x00000001,
KGSL_TIMESTAMP_RETIRED = 0x00000002,
KGSL_TIMESTAMP_QUEUED = 0x00000003,
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum kgsl_property_type {
KGSL_PROP_DEVICE_INFO = 0x00000001,
KGSL_PROP_DEVICE_SHADOW = 0x00000002,
KGSL_PROP_DEVICE_POWER = 0x00000003,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
KGSL_PROP_SHMEM = 0x00000004,
KGSL_PROP_SHMEM_APERTURES = 0x00000005,
KGSL_PROP_MMU_ENABLE = 0x00000006,
KGSL_PROP_INTERRUPT_WAITS = 0x00000007,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
KGSL_PROP_VERSION = 0x00000008,
KGSL_PROP_GPU_RESET_STAT = 0x00000009,
KGSL_PROP_PWRCTRL = 0x0000000E,
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct kgsl_shadowprop {
unsigned int gpuaddr;
unsigned int size;
unsigned int flags;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct kgsl_version {
unsigned int drv_major;
unsigned int drv_minor;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int dev_major;
unsigned int dev_minor;
};
struct kgsl_ibdesc {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int gpuaddr;
void *hostptr;
unsigned int sizedwords;
unsigned int ctrl;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#define KGSL_IOC_TYPE 0x09
struct kgsl_device_getproperty {
unsigned int type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
void *value;
unsigned int sizebytes;
};
#define IOCTL_KGSL_DEVICE_GETPROPERTY _IOWR(KGSL_IOC_TYPE, 0x2, struct kgsl_device_getproperty)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct kgsl_device_waittimestamp {
unsigned int timestamp;
unsigned int timeout;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_DEVICE_WAITTIMESTAMP _IOW(KGSL_IOC_TYPE, 0x6, struct kgsl_device_waittimestamp)
struct kgsl_device_waittimestamp_ctxtid {
unsigned int context_id;
unsigned int timestamp;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int timeout;
};
#define IOCTL_KGSL_DEVICE_WAITTIMESTAMP_CTXTID _IOW(KGSL_IOC_TYPE, 0x7, struct kgsl_device_waittimestamp_ctxtid)
struct kgsl_ringbuffer_issueibcmds {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int drawctxt_id;
unsigned int ibdesc_addr;
unsigned int numibs;
unsigned int timestamp;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int flags;
};
#define IOCTL_KGSL_RINGBUFFER_ISSUEIBCMDS _IOWR(KGSL_IOC_TYPE, 0x10, struct kgsl_ringbuffer_issueibcmds)
struct kgsl_cmdstream_readtimestamp {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int type;
unsigned int timestamp;
};
#define IOCTL_KGSL_CMDSTREAM_READTIMESTAMP_OLD _IOR(KGSL_IOC_TYPE, 0x11, struct kgsl_cmdstream_readtimestamp)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_CMDSTREAM_READTIMESTAMP _IOWR(KGSL_IOC_TYPE, 0x11, struct kgsl_cmdstream_readtimestamp)
struct kgsl_cmdstream_freememontimestamp {
unsigned int gpuaddr;
unsigned int type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int timestamp;
};
#define IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP _IOW(KGSL_IOC_TYPE, 0x12, struct kgsl_cmdstream_freememontimestamp)
#define IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP_OLD _IOR(KGSL_IOC_TYPE, 0x12, struct kgsl_cmdstream_freememontimestamp)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct kgsl_drawctxt_create {
unsigned int flags;
unsigned int drawctxt_id;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_DRAWCTXT_CREATE _IOWR(KGSL_IOC_TYPE, 0x13, struct kgsl_drawctxt_create)
struct kgsl_drawctxt_destroy {
unsigned int drawctxt_id;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_DRAWCTXT_DESTROY _IOW(KGSL_IOC_TYPE, 0x14, struct kgsl_drawctxt_destroy)
struct kgsl_map_user_mem {
int fd;
unsigned int gpuaddr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int len;
unsigned int offset;
unsigned int hostptr;
enum kgsl_user_mem_type memtype;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int reserved;
};
#define IOCTL_KGSL_MAP_USER_MEM _IOWR(KGSL_IOC_TYPE, 0x15, struct kgsl_map_user_mem)
struct kgsl_cmdstream_readtimestamp_ctxtid {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int context_id;
unsigned int type;
unsigned int timestamp;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_CMDSTREAM_READTIMESTAMP_CTXTID _IOWR(KGSL_IOC_TYPE, 0x16, struct kgsl_cmdstream_readtimestamp_ctxtid)
struct kgsl_cmdstream_freememontimestamp_ctxtid {
unsigned int context_id;
unsigned int gpuaddr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int type;
unsigned int timestamp;
};
#define IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP_CTXTID _IOW(KGSL_IOC_TYPE, 0x17, struct kgsl_cmdstream_freememontimestamp_ctxtid)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct kgsl_sharedmem_from_pmem {
int pmem_fd;
unsigned int gpuaddr;
unsigned int len;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int offset;
};
#define IOCTL_KGSL_SHAREDMEM_FROM_PMEM _IOWR(KGSL_IOC_TYPE, 0x20, struct kgsl_sharedmem_from_pmem)
struct kgsl_sharedmem_free {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int gpuaddr;
};
#define IOCTL_KGSL_SHAREDMEM_FREE _IOW(KGSL_IOC_TYPE, 0x21, struct kgsl_sharedmem_free)
struct kgsl_cff_user_event {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned char cff_opcode;
unsigned int op1;
unsigned int op2;
unsigned int op3;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int op4;
unsigned int op5;
unsigned int __pad[2];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_CFF_USER_EVENT _IOW(KGSL_IOC_TYPE, 0x31, struct kgsl_cff_user_event)
struct kgsl_gmem_desc {
unsigned int x;
unsigned int y;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int width;
unsigned int height;
unsigned int pitch;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct kgsl_buffer_desc {
void *hostptr;
unsigned int gpuaddr;
int size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int format;
unsigned int pitch;
unsigned int enabled;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct kgsl_bind_gmem_shadow {
unsigned int drawctxt_id;
struct kgsl_gmem_desc gmem_desc;
unsigned int shadow_x;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int shadow_y;
struct kgsl_buffer_desc shadow_buffer;
unsigned int buffer_id;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_DRAWCTXT_BIND_GMEM_SHADOW _IOW(KGSL_IOC_TYPE, 0x22, struct kgsl_bind_gmem_shadow)
struct kgsl_sharedmem_from_vmalloc {
unsigned int gpuaddr;
unsigned int hostptr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int flags;
};
#define IOCTL_KGSL_SHAREDMEM_FROM_VMALLOC _IOWR(KGSL_IOC_TYPE, 0x23, struct kgsl_sharedmem_from_vmalloc)
#define IOCTL_KGSL_SHAREDMEM_FLUSH_CACHE _IOW(KGSL_IOC_TYPE, 0x24, struct kgsl_sharedmem_free)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct kgsl_drawctxt_set_bin_base_offset {
unsigned int drawctxt_id;
unsigned int offset;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_DRAWCTXT_SET_BIN_BASE_OFFSET _IOW(KGSL_IOC_TYPE, 0x25, struct kgsl_drawctxt_set_bin_base_offset)
enum kgsl_cmdwindow_type {
KGSL_CMDWINDOW_MIN = 0x00000000,
KGSL_CMDWINDOW_2D = 0x00000000,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
KGSL_CMDWINDOW_3D = 0x00000001,
KGSL_CMDWINDOW_MMU = 0x00000002,
KGSL_CMDWINDOW_ARBITER = 0x000000FF,
KGSL_CMDWINDOW_MAX = 0x000000FF,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct kgsl_cmdwindow_write {
enum kgsl_cmdwindow_type target;
unsigned int addr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int data;
};
#define IOCTL_KGSL_CMDWINDOW_WRITE _IOW(KGSL_IOC_TYPE, 0x2e, struct kgsl_cmdwindow_write)
struct kgsl_gpumem_alloc {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long gpuaddr;
size_t size;
unsigned int flags;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_GPUMEM_ALLOC _IOWR(KGSL_IOC_TYPE, 0x2f, struct kgsl_gpumem_alloc)
struct kgsl_cff_syncmem {
unsigned int gpuaddr;
unsigned int len;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int __pad[2];
};
#define IOCTL_KGSL_CFF_SYNCMEM _IOW(KGSL_IOC_TYPE, 0x30, struct kgsl_cff_syncmem)
struct kgsl_timestamp_event {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int type;
unsigned int timestamp;
unsigned int context_id;
void *priv;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
size_t len;
};
#define IOCTL_KGSL_TIMESTAMP_EVENT_OLD _IOW(KGSL_IOC_TYPE, 0x31, struct kgsl_timestamp_event)
#define KGSL_TIMESTAMP_EVENT_GENLOCK 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct kgsl_timestamp_event_genlock {
int handle;
};
#define KGSL_TIMESTAMP_EVENT_FENCE 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct kgsl_timestamp_event_fence {
int fence_fd;
};
#define IOCTL_KGSL_SETPROPERTY _IOW(KGSL_IOC_TYPE, 0x32, struct kgsl_device_getproperty)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IOCTL_KGSL_TIMESTAMP_EVENT _IOWR(KGSL_IOC_TYPE, 0x33, struct kgsl_timestamp_event)
#endif

View File

@@ -1,530 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _MSM_MDP_H_
#define _MSM_MDP_H_
#include <linux/types.h>
#include <linux/fb.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_IOCTL_MAGIC 'm'
#define MSMFB_GRP_DISP _IOW(MSMFB_IOCTL_MAGIC, 1, unsigned int)
#define MSMFB_BLIT _IOW(MSMFB_IOCTL_MAGIC, 2, unsigned int)
#define MSMFB_SUSPEND_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 128, unsigned int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_RESUME_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 129, unsigned int)
#define MSMFB_CURSOR _IOW(MSMFB_IOCTL_MAGIC, 130, struct fb_cursor)
#define MSMFB_SET_LUT _IOW(MSMFB_IOCTL_MAGIC, 131, struct fb_cmap)
#define MSMFB_HISTOGRAM _IOWR(MSMFB_IOCTL_MAGIC, 132, struct mdp_histogram_data)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_GET_CCS_MATRIX _IOWR(MSMFB_IOCTL_MAGIC, 133, struct mdp_ccs)
#define MSMFB_SET_CCS_MATRIX _IOW(MSMFB_IOCTL_MAGIC, 134, struct mdp_ccs)
#define MSMFB_OVERLAY_SET _IOWR(MSMFB_IOCTL_MAGIC, 135, struct mdp_overlay)
#define MSMFB_OVERLAY_UNSET _IOW(MSMFB_IOCTL_MAGIC, 136, unsigned int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_OVERLAY_PLAY _IOW(MSMFB_IOCTL_MAGIC, 137, struct msmfb_overlay_data)
#define MSMFB_OVERLAY_QUEUE MSMFB_OVERLAY_PLAY
#define MSMFB_GET_PAGE_PROTECTION _IOR(MSMFB_IOCTL_MAGIC, 138, struct mdp_page_protection)
#define MSMFB_SET_PAGE_PROTECTION _IOW(MSMFB_IOCTL_MAGIC, 139, struct mdp_page_protection)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_OVERLAY_GET _IOR(MSMFB_IOCTL_MAGIC, 140, struct mdp_overlay)
#define MSMFB_OVERLAY_PLAY_ENABLE _IOW(MSMFB_IOCTL_MAGIC, 141, unsigned int)
#define MSMFB_OVERLAY_BLT _IOWR(MSMFB_IOCTL_MAGIC, 142, struct msmfb_overlay_blt)
#define MSMFB_OVERLAY_BLT_OFFSET _IOW(MSMFB_IOCTL_MAGIC, 143, unsigned int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_HISTOGRAM_START _IOR(MSMFB_IOCTL_MAGIC, 144, struct mdp_histogram_start_req)
#define MSMFB_HISTOGRAM_STOP _IOR(MSMFB_IOCTL_MAGIC, 145, unsigned int)
#define MSMFB_NOTIFY_UPDATE _IOW(MSMFB_IOCTL_MAGIC, 146, unsigned int)
#define MSMFB_OVERLAY_3D _IOWR(MSMFB_IOCTL_MAGIC, 147, struct msmfb_overlay_3d)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_MIXER_INFO _IOWR(MSMFB_IOCTL_MAGIC, 148, struct msmfb_mixer_info_req)
#define MSMFB_OVERLAY_PLAY_WAIT _IOWR(MSMFB_IOCTL_MAGIC, 149, struct msmfb_overlay_data)
#define MSMFB_WRITEBACK_INIT _IO(MSMFB_IOCTL_MAGIC, 150)
#define MSMFB_WRITEBACK_START _IO(MSMFB_IOCTL_MAGIC, 151)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_WRITEBACK_STOP _IO(MSMFB_IOCTL_MAGIC, 152)
#define MSMFB_WRITEBACK_QUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 153, struct msmfb_data)
#define MSMFB_WRITEBACK_DEQUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 154, struct msmfb_data)
#define MSMFB_WRITEBACK_TERMINATE _IO(MSMFB_IOCTL_MAGIC, 155)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_MDP_PP _IOWR(MSMFB_IOCTL_MAGIC, 156, struct msmfb_mdp_pp)
#define MSMFB_OVERLAY_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 160, unsigned int)
#define MSMFB_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 161, unsigned int)
#define MSMFB_BUFFER_SYNC _IOW(MSMFB_IOCTL_MAGIC, 162, struct mdp_buf_sync)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_DISPLAY_COMMIT _IOW(MSMFB_IOCTL_MAGIC, 164, struct mdp_display_commit)
#define FB_TYPE_3D_PANEL 0x10101010
#define MDP_IMGTYPE2_START 0x10000
#define MSMFB_DRIVER_VERSION 0xF9E8D701
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum {
NOTIFY_UPDATE_START,
NOTIFY_UPDATE_STOP,
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum {
MDP_RGB_565,
MDP_XRGB_8888,
MDP_Y_CBCR_H2V2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_Y_CBCR_H2V2_ADRENO,
MDP_ARGB_8888,
MDP_RGB_888,
MDP_Y_CRCB_H2V2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_YCRYCB_H2V1,
MDP_Y_CRCB_H2V1,
MDP_Y_CBCR_H2V1,
MDP_Y_CRCB_H1V2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_Y_CBCR_H1V2,
MDP_RGBA_8888,
MDP_BGRA_8888,
MDP_RGBX_8888,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_Y_CRCB_H2V2_TILE,
MDP_Y_CBCR_H2V2_TILE,
MDP_Y_CR_CB_H2V2,
MDP_Y_CR_CB_GH2V2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_Y_CB_CR_H2V2,
MDP_Y_CRCB_H1V1,
MDP_Y_CBCR_H1V1,
MDP_YCRCB_H1V1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_YCBCR_H1V1,
MDP_BGR_565,
MDP_IMGTYPE_LIMIT,
MDP_RGB_BORDERFILL,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_FB_FORMAT = MDP_IMGTYPE2_START,
MDP_IMGTYPE_LIMIT2
};
enum {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
PMEM_IMG,
FB_IMG,
};
enum {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
HSIC_HUE = 0,
HSIC_SAT,
HSIC_INT,
HSIC_CON,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
NUM_HSIC_PARAM,
};
#define MDSS_MDP_ROT_ONLY 0x80
#define MDSS_MDP_RIGHT_MIXER 0x100
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_ROT_NOP 0
#define MDP_FLIP_LR 0x1
#define MDP_FLIP_UD 0x2
#define MDP_ROT_90 0x4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR)
#define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR)
#define MDP_DITHER 0x8
#define MDP_BLUR 0x10
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_BLEND_FG_PREMULT 0x20000
#define MDP_DEINTERLACE 0x80000000
#define MDP_SHARPENING 0x40000000
#define MDP_NO_DMA_BARRIER_START 0x20000000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_NO_DMA_BARRIER_END 0x10000000
#define MDP_NO_BLIT 0x08000000
#define MDP_BLIT_WITH_DMA_BARRIERS 0x000
#define MDP_BLIT_WITH_NO_DMA_BARRIERS (MDP_NO_DMA_BARRIER_START | MDP_NO_DMA_BARRIER_END)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_BLIT_SRC_GEM 0x04000000
#define MDP_BLIT_DST_GEM 0x02000000
#define MDP_BLIT_NON_CACHED 0x01000000
#define MDP_OV_PIPE_SHARE 0x00800000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_DEINTERLACE_ODD 0x00400000
#define MDP_OV_PLAY_NOWAIT 0x00200000
#define MDP_SOURCE_ROTATED_90 0x00100000
#define MDP_OVERLAY_PP_CFG_EN 0x00080000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_BACKEND_COMPOSITION 0x00040000
#define MDP_BORDERFILL_SUPPORTED 0x00010000
#define MDP_SECURE_OVERLAY_SESSION 0x00008000
#define MDP_MEMORY_ID_TYPE_FB 0x00001000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_TRANSP_NOP 0xffffffff
#define MDP_ALPHA_NOP 0xff
#define MDP_FB_PAGE_PROTECTION_NONCACHED (0)
#define MDP_FB_PAGE_PROTECTION_WRITECOMBINE (1)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_FB_PAGE_PROTECTION_WRITETHROUGHCACHE (2)
#define MDP_FB_PAGE_PROTECTION_WRITEBACKCACHE (3)
#define MDP_FB_PAGE_PROTECTION_WRITEBACKWACACHE (4)
#define MDP_FB_PAGE_PROTECTION_INVALID (5)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_NUM_FB_PAGE_PROTECTION_VALUES (5)
struct mdp_rect {
uint32_t x;
uint32_t y;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t w;
uint32_t h;
};
struct mdp_img {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t width;
uint32_t height;
uint32_t format;
uint32_t offset;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int memory_id;
uint32_t priv;
};
#define MDP_CCS_RGB2YUV 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_CCS_YUV2RGB 1
#define MDP_CCS_SIZE 9
#define MDP_BV_SIZE 3
struct mdp_ccs {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int direction;
uint16_t ccs[MDP_CCS_SIZE];
uint16_t bv[MDP_BV_SIZE];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_csc {
int id;
uint32_t csc_mv[9];
uint32_t csc_pre_bv[3];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t csc_post_bv[3];
uint32_t csc_pre_lv[6];
uint32_t csc_post_lv[6];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_BLIT_REQ_VERSION 2
struct mdp_blit_req {
struct mdp_img src;
struct mdp_img dst;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_rect src_rect;
struct mdp_rect dst_rect;
uint32_t alpha;
uint32_t transp_mask;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t flags;
int sharpening_strength;
};
struct mdp_blit_req_list {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t count;
struct mdp_blit_req req[];
};
#define MSMFB_DATA_VERSION 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msmfb_data {
uint32_t offset;
int memory_id;
int id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t flags;
uint32_t priv;
uint32_t iova;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSMFB_NEW_REQUEST -1
struct msmfb_overlay_data {
uint32_t id;
struct msmfb_data data;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t version_key;
struct msmfb_data plane1_data;
struct msmfb_data plane2_data;
struct msmfb_data dst_data;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct msmfb_img {
uint32_t width;
uint32_t height;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t format;
};
#define MSMFB_WRITEBACK_DEQUEUE_BLOCKING 0x1
struct msmfb_writeback_data {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msmfb_data buf_info;
struct msmfb_img img;
};
#define MDP_PP_OPS_READ 0x2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_PP_OPS_WRITE 0x4
struct mdp_qseed_cfg {
uint32_t table_num;
uint32_t ops;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t len;
uint32_t *data;
};
struct mdp_qseed_cfg_data {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t block;
struct mdp_qseed_cfg qseed_data;
};
#define MDP_OVERLAY_PP_CSC_CFG 0x1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_OVERLAY_PP_QSEED_CFG 0x2
#define MDP_CSC_FLAG_ENABLE 0x1
#define MDP_CSC_FLAG_YUV_IN 0x2
#define MDP_CSC_FLAG_YUV_OUT 0x4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_csc_cfg {
uint32_t flags;
uint32_t csc_mv[9];
uint32_t csc_pre_bv[3];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t csc_post_bv[3];
uint32_t csc_pre_lv[6];
uint32_t csc_post_lv[6];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_csc_cfg_data {
uint32_t block;
struct mdp_csc_cfg csc_data;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_overlay_pp_params {
uint32_t config_ops;
struct mdp_csc_cfg csc_cfg;
struct mdp_qseed_cfg qseed_cfg[2];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct mdp_overlay {
struct msmfb_img src;
struct mdp_rect src_rect;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_rect dst_rect;
uint32_t z_order;
uint32_t is_fg;
uint32_t alpha;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t transp_mask;
uint32_t flags;
uint32_t id;
uint32_t user_data[8];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_overlay_pp_params overlay_pp_cfg;
};
struct msmfb_overlay_3d {
uint32_t is_3d;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t width;
uint32_t height;
};
struct msmfb_overlay_blt {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t enable;
uint32_t offset;
uint32_t width;
uint32_t height;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t bpp;
};
struct mdp_histogram {
uint32_t frame_cnt;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t bin_cnt;
uint32_t *r;
uint32_t *g;
uint32_t *b;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum {
MDP_BLOCK_RESERVED = 0,
MDP_BLOCK_OVERLAY_0,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_BLOCK_OVERLAY_1,
MDP_BLOCK_VG_1,
MDP_BLOCK_VG_2,
MDP_BLOCK_RGB_1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_BLOCK_RGB_2,
MDP_BLOCK_DMA_P,
MDP_BLOCK_DMA_S,
MDP_BLOCK_DMA_E,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
MDP_BLOCK_OVERLAY_2,
MDP_BLOCK_MAX,
};
struct mdp_histogram_start_req {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t block;
uint8_t frame_cnt;
uint8_t bit_mask;
uint8_t num_bins;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct mdp_histogram_data {
uint32_t block;
uint8_t bin_cnt;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t *c0;
uint32_t *c1;
uint32_t *c2;
uint32_t *extra_info;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct mdp_pcc_coeff {
uint32_t c, r, g, b, rr, gg, bb, rg, gb, rb, rgb_0, rgb_1;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_pcc_cfg_data {
uint32_t block;
uint32_t ops;
struct mdp_pcc_coeff r, g, b;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum {
mdp_lut_igc,
mdp_lut_pgc,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
mdp_lut_hist,
mdp_lut_max,
};
struct mdp_igc_lut_data {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t block;
uint32_t len, ops;
uint32_t *c0_c1_data;
uint32_t *c2_data;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct mdp_ar_gc_lut_data {
uint32_t x_start;
uint32_t slope;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t offset;
};
struct mdp_pgc_lut_data {
uint32_t block;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t flags;
uint8_t num_r_stages;
uint8_t num_g_stages;
uint8_t num_b_stages;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_ar_gc_lut_data *r_data;
struct mdp_ar_gc_lut_data *g_data;
struct mdp_ar_gc_lut_data *b_data;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_hist_lut_data {
uint32_t block;
uint32_t ops;
uint32_t len;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t *data;
};
struct mdp_lut_cfg_data {
uint32_t lut_type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
union {
struct mdp_igc_lut_data igc_lut_data;
struct mdp_pgc_lut_data pgc_lut_data;
struct mdp_hist_lut_data hist_lut_data;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
} data;
};
struct mdp_bl_scale_data {
uint32_t min_lvl;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t scale;
};
enum {
mdp_op_pcc_cfg,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
mdp_op_csc_cfg,
mdp_op_lut_cfg,
mdp_op_qseed_cfg,
mdp_bl_scale_cfg,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
mdp_op_max,
};
struct msmfb_mdp_pp {
uint32_t op;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
union {
struct mdp_pcc_cfg_data pcc_cfg_data;
struct mdp_csc_cfg_data csc_cfg_data;
struct mdp_lut_cfg_data lut_cfg_data;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_qseed_cfg_data qseed_cfg_data;
struct mdp_bl_scale_data bl_scale_data;
} data;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MDP_MAX_FENCE_FD 10
#define MDP_BUF_SYNC_FLAG_WAIT 1
struct mdp_buf_sync {
uint32_t flags;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t acq_fen_fd_cnt;
int *acq_fen_fd;
int *rel_fen_fd;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_buf_fence {
uint32_t flags;
uint32_t acq_fen_fd_cnt;
int acq_fen_fd[MDP_MAX_FENCE_FD];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int rel_fen_fd[MDP_MAX_FENCE_FD];
};
#define MDP_DISPLAY_COMMIT_OVERLAY 0x00000001
struct mdp_display_commit {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t flags;
uint32_t wait_for_finish;
struct fb_var_screeninfo var;
struct mdp_buf_fence buf_fence;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct mdp_page_protection {
uint32_t page_protection;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct mdp_mixer_info {
int pndx;
int pnum;
int ptype;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int mixer_num;
int z_order;
};
#define MAX_PIPE_PER_MIXER 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msmfb_mixer_info_req {
int mixer_num;
int cnt;
struct mdp_mixer_info info[MAX_PIPE_PER_MIXER];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum {
DISPLAY_SUBSYSTEM_ID,
ROTATOR_SUBSYSTEM_ID,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#endif

View File

@@ -1,231 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _MSM_VDEC_H_
#define _MSM_VDEC_H_
#include <linux/types.h>
#define VDEC_IOCTL_MAGIC 'v'
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_INITIALIZE _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init)
#define VDEC_IOCTL_SETBUFFERS _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer)
#define VDEC_IOCTL_QUEUE _IOWR(VDEC_IOCTL_MAGIC, 3, struct vdec_input_buf)
#define VDEC_IOCTL_REUSEFRAMEBUFFER _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_FLUSH _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int)
#define VDEC_IOCTL_EOS _IO(VDEC_IOCTL_MAGIC, 6)
#define VDEC_IOCTL_GETMSG _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg)
#define VDEC_IOCTL_CLOSE _IO(VDEC_IOCTL_MAGIC, 8)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_FREEBUFFERS _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info)
#define VDEC_IOCTL_GETDECATTRIBUTES _IOR(VDEC_IOCTL_MAGIC, 10, struct vdec_dec_attributes)
enum {
VDEC_FRAME_DECODE_OK,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_FRAME_DECODE_ERR,
VDEC_FATAL_ERR,
VDEC_FLUSH_FINISH,
VDEC_EOS,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_FRAME_FLUSH,
VDEC_STREAM_SWITCH,
VDEC_SUSPEND_FINISH,
VDEC_BUFFER_CONSUMED
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum {
VDEC_FLUSH_INPUT,
VDEC_FLUSH_OUTPUT,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_FLUSH_ALL
};
enum {
VDEC_BUFFER_TYPE_INPUT,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_BUFFER_TYPE_OUTPUT,
VDEC_BUFFER_TYPE_INTERNAL1,
VDEC_BUFFER_TYPE_INTERNAL2,
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum {
VDEC_QUEUE_SUCCESS,
VDEC_QUEUE_FAILED,
VDEC_QUEUE_BADSTATE,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct vdec_input_buf_info {
u32 offset;
u32 data;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 size;
int timestamp_lo;
int timestamp_hi;
int avsync_state;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 flags;
};
struct vdec_buf_desc {
u32 bufsize;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 num_min_buffers;
u32 num_max_buffers;
};
struct vdec_buf_req {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 max_input_queue_size;
struct vdec_buf_desc input;
struct vdec_buf_desc output;
struct vdec_buf_desc dec_req1;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_buf_desc dec_req2;
};
struct vdec_region_info {
u32 src_id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 offset;
u32 size;
};
struct vdec_config {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 fourcc;
u32 width;
u32 height;
u32 order;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 notify_enable;
u32 vc1_rowbase;
u32 h264_startcode_detect;
u32 h264_nal_len_size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 postproc_flag;
u32 fruc_enable;
u32 reserved;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_vc1_panscan_regions {
int num;
int width[4];
int height[4];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int xoffset[4];
int yoffset[4];
};
struct vdec_cropping_window {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 x1;
u32 y1;
u32 x2;
u32 y2;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct vdec_frame_info {
u32 status;
u32 offset;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 data1;
u32 data2;
int timestamp_lo;
int timestamp_hi;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int cal_timestamp_lo;
int cal_timestamp_hi;
u32 dec_width;
u32 dec_height;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_cropping_window cwin;
u32 picture_type[2];
u32 picture_format;
u32 vc1_rangeY;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 vc1_rangeUV;
u32 picture_resolution;
u32 frame_disp_repeat;
u32 repeat_first_field;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 top_field_first;
u32 interframe_interp;
struct vdec_vc1_panscan_regions panscan;
u32 concealed_macblk_num;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 flags;
u32 performance_stats;
u32 data3;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_buf_info {
u32 buf_type;
struct vdec_region_info region;
u32 num_buf;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 islast;
};
struct vdec_buffer {
u32 pmem_id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_buf_info buf;
};
struct vdec_sequence {
u8 *header;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 len;
};
struct vdec_config_sps {
struct vdec_config cfg;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_sequence seq;
};
#define VDEC_MSG_REUSEINPUTBUFFER 1
#define VDEC_MSG_FRAMEDONE 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_msg {
u32 id;
union {
u32 buf_id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_frame_info vfr_info;
};
};
struct vdec_init {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_config_sps sps_cfg;
struct vdec_buf_req *buf_req;
};
struct vdec_input_buf {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 pmem_id;
struct vdec_input_buf_info buffer;
struct vdec_queue_status *queue_status;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_queue_status {
u32 status;
};
struct vdec_dec_attributes {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 fourcc;
u32 profile;
u32 level;
u32 dec_pic_width;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
u32 dec_pic_height;
struct vdec_buf_desc input;
struct vdec_buf_desc output;
struct vdec_buf_desc dec_req1;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_buf_desc dec_req2;
};
#endif

View File

@@ -1,305 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _MSM_VENC_H_
#define _MSM_VENC_H_
#include <linux/types.h>
#define VENC_MAX_RECON_BUFFERS 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VENC_FLAG_EOS 0x00000001
#define VENC_FLAG_END_OF_FRAME 0x00000010
#define VENC_FLAG_SYNC_FRAME 0x00000020
#define VENC_FLAG_EXTRA_DATA 0x00000040
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VENC_FLAG_CODEC_CONFIG 0x00000080
enum venc_flush_type {
VENC_FLUSH_INPUT,
VENC_FLUSH_OUTPUT,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_FLUSH_ALL
};
enum venc_state_type {
VENC_STATE_PAUSE = 0x1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_STATE_START = 0x2,
VENC_STATE_STOP = 0x4
};
enum venc_event_type_enum {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_EVENT_START_STATUS,
VENC_EVENT_STOP_STATUS,
VENC_EVENT_SUSPEND_STATUS,
VENC_EVENT_RESUME_STATUS,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_EVENT_FLUSH_STATUS,
VENC_EVENT_RELEASE_INPUT,
VENC_EVENT_DELIVER_OUTPUT,
VENC_EVENT_UNKNOWN_STATUS
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum venc_status_code {
VENC_STATUS_SUCCESS,
VENC_STATUS_ERROR,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_STATUS_INVALID_STATE,
VENC_STATUS_FLUSHING,
VENC_STATUS_INVALID_PARAM,
VENC_STATUS_CMD_QUEUE_FULL,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_STATUS_CRITICAL,
VENC_STATUS_INSUFFICIENT_RESOURCES,
VENC_STATUS_TIMEOUT
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum venc_msg_code {
VENC_MSG_INDICATION,
VENC_MSG_INPUT_BUFFER_DONE,
VENC_MSG_OUTPUT_BUFFER_DONE,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_MSG_NEED_OUTPUT_BUFFER,
VENC_MSG_FLUSH,
VENC_MSG_START,
VENC_MSG_STOP,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_MSG_PAUSE,
VENC_MSG_RESUME,
VENC_MSG_STOP_READING_MSG
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum venc_error_code {
VENC_S_SUCCESS,
VENC_S_EFAIL,
VENC_S_EFATAL,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_S_EBADPARAM,
VENC_S_EINVALSTATE,
VENC_S_ENOSWRES,
VENC_S_ENOHWRES,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_S_EBUFFREQ,
VENC_S_EINVALCMD,
VENC_S_ETIMEOUT,
VENC_S_ENOREATMPT,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_S_ENOPREREQ,
VENC_S_ECMDQFULL,
VENC_S_ENOTSUPP,
VENC_S_ENOTIMPL,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_S_ENOTPMEM,
VENC_S_EFLUSHED,
VENC_S_EINSUFBUF,
VENC_S_ESAMESTATE,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_S_EINVALTRANS
};
enum venc_mem_region_enum {
VENC_PMEM_EBI1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VENC_PMEM_SMI
};
struct venc_buf_type {
unsigned int region;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int phys;
unsigned int size;
int offset;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_qp_range {
unsigned int min_qp;
unsigned int max_qp;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_frame_rate {
unsigned int frame_rate_num;
unsigned int frame_rate_den;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_slice_info {
unsigned int slice_mode;
unsigned int units_per_slice;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_extra_data {
unsigned int slice_extra_data_flag;
unsigned int slice_client_data1;
unsigned int slice_client_data2;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int slice_client_data3;
unsigned int none_extra_data_flag;
unsigned int none_client_data1;
unsigned int none_client_data2;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int none_client_data3;
};
struct venc_common_config {
unsigned int standard;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int input_frame_height;
unsigned int input_frame_width;
unsigned int output_frame_height;
unsigned int output_frame_width;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int rotation_angle;
unsigned int intra_period;
unsigned int rate_control;
struct venc_frame_rate frame_rate;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int bitrate;
struct venc_qp_range qp_range;
unsigned int iframe_qp;
unsigned int pframe_qp;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_slice_info slice_config;
struct venc_extra_data extra_data;
};
struct venc_nonio_buf_config {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_buf_type recon_buf1;
struct venc_buf_type recon_buf2;
struct venc_buf_type wb_buf;
struct venc_buf_type cmd_buf;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_buf_type vlc_buf;
};
struct venc_mpeg4_config {
unsigned int profile;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int level;
unsigned int time_resolution;
unsigned int ac_prediction;
unsigned int hec_interval;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int data_partition;
unsigned int short_header;
unsigned int rvlc_enable;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_h263_config {
unsigned int profile;
unsigned int level;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_h264_config {
unsigned int profile;
unsigned int level;
unsigned int max_nal;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int idr_period;
};
struct venc_pmem {
int src;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int fd;
unsigned int offset;
void *virt;
void *phys;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int size;
};
struct venc_buffer {
unsigned char *ptr_buffer;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int size;
unsigned int len;
unsigned int offset;
long long time_stamp;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int flags;
unsigned int client_data;
};
struct venc_buffers {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_pmem recon_buf[VENC_MAX_RECON_BUFFERS];
struct venc_pmem wb_buf;
struct venc_pmem cmd_buf;
struct venc_pmem vlc_buf;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct venc_buffer_flush {
unsigned int flush_mode;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
union venc_msg_data {
struct venc_buffer buf;
struct venc_buffer_flush flush_ret;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_msg {
unsigned int status_code;
unsigned int msg_code;
union venc_msg_data msg_data;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int msg_data_size;
};
union venc_codec_config {
struct venc_mpeg4_config mpeg4_params;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_h263_config h263_params;
struct venc_h264_config h264_params;
};
struct venc_q6_config {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_common_config config_params;
union venc_codec_config codec_params;
struct venc_nonio_buf_config buf_params;
void *callback_event;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct venc_hdr_config {
struct venc_common_config config_params;
union venc_codec_config codec_params;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct venc_init_config {
struct venc_q6_config q6_config;
struct venc_buffers q6_bufs;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct venc_seq_config {
int size;
struct venc_pmem buf;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_q6_config q6_config;
};
#define VENC_IOCTL_MAGIC 'V'
#define VENC_IOCTL_CMD_READ_NEXT_MSG _IOWR(VENC_IOCTL_MAGIC, 1, struct venc_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VENC_IOCTL_CMD_STOP_READ_MSG _IO(VENC_IOCTL_MAGIC, 2)
#define VENC_IOCTL_SET_INPUT_BUFFER _IOW(VENC_IOCTL_MAGIC, 3, struct venc_pmem)
#define VENC_IOCTL_SET_OUTPUT_BUFFER _IOW(VENC_IOCTL_MAGIC, 4, struct venc_pmem)
#define VENC_IOCTL_CMD_START _IOW(VENC_IOCTL_MAGIC, 5, struct venc_init_config)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VENC_IOCTL_CMD_ENCODE_FRAME _IOW(VENC_IOCTL_MAGIC, 6, struct venc_buffer)
#define VENC_IOCTL_CMD_FILL_OUTPUT_BUFFER _IOW(VENC_IOCTL_MAGIC, 7, struct venc_buffer)
#define VENC_IOCTL_CMD_FLUSH _IOW(VENC_IOCTL_MAGIC, 8, struct venc_buffer_flush)
#define VENC_IOCTL_CMD_PAUSE _IO(VENC_IOCTL_MAGIC, 9)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VENC_IOCTL_CMD_RESUME _IO(VENC_IOCTL_MAGIC, 10)
#define VENC_IOCTL_CMD_STOP _IO(VENC_IOCTL_MAGIC, 11)
#define VENC_IOCTL_SET_INTRA_PERIOD _IOW(VENC_IOCTL_MAGIC, 12, int)
#define VENC_IOCTL_CMD_REQUEST_IFRAME _IO(VENC_IOCTL_MAGIC, 13)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VENC_IOCTL_GET_SEQUENCE_HDR _IOWR(VENC_IOCTL_MAGIC, 14, struct venc_seq_config)
#define VENC_IOCTL_SET_INTRA_REFRESH _IOW(VENC_IOCTL_MAGIC, 15, int)
#define VENC_IOCTL_SET_FRAME_RATE _IOW(VENC_IOCTL_MAGIC, 16, struct venc_frame_rate)
#define VENC_IOCTL_SET_TARGET_BITRATE _IOW(VENC_IOCTL_MAGIC, 17, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VENC_IOCTL_SET_QP_RANGE _IOW(VENC_IOCTL_MAGIC, 18, struct venc_qp_range)
#endif

View File

@@ -1,53 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _MSM_RMNET_H_
#define _MSM_RMNET_H_
#define RMNET_MODE_NONE (0x00)
#define RMNET_MODE_LLP_ETH (0x01)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define RMNET_MODE_LLP_IP (0x02)
#define RMNET_MODE_QOS (0x04)
#define RMNET_MODE_MASK (RMNET_MODE_LLP_ETH | RMNET_MODE_LLP_IP | RMNET_MODE_QOS)
#define RMNET_IS_MODE_QOS(mode) ((mode & RMNET_MODE_QOS) == RMNET_MODE_QOS)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define RMNET_IS_MODE_IP(mode) ((mode & RMNET_MODE_LLP_IP) == RMNET_MODE_LLP_IP)
enum rmnet_ioctl_cmds_e {
RMNET_IOCTL_SET_LLP_ETHERNET = 0x000089F1,
RMNET_IOCTL_SET_LLP_IP = 0x000089F2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
RMNET_IOCTL_GET_LLP = 0x000089F3,
RMNET_IOCTL_SET_QOS_ENABLE = 0x000089F4,
RMNET_IOCTL_SET_QOS_DISABLE = 0x000089F5,
RMNET_IOCTL_GET_QOS = 0x000089F6,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
RMNET_IOCTL_GET_OPMODE = 0x000089F7,
RMNET_IOCTL_OPEN = 0x000089F8,
RMNET_IOCTL_CLOSE = 0x000089F9,
RMNET_IOCTL_MAX
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#define QMI_QOS_HDR_S __attribute((__packed__)) qmi_qos_hdr_s
struct QMI_QOS_HDR_S {
unsigned char version;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned char flags;
unsigned long flow_id;
};
#endif
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */

View File

@@ -1,75 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __MSM_ROTATOR_H__
#define __MSM_ROTATOR_H__
#include <linux/types.h>
#include <linux/msm_mdp.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_ROTATOR_IOCTL_MAGIC 'R'
#define MSM_ROTATOR_IOCTL_START _IOWR(MSM_ROTATOR_IOCTL_MAGIC, 1, struct msm_rotator_img_info)
#define MSM_ROTATOR_IOCTL_ROTATE _IOW(MSM_ROTATOR_IOCTL_MAGIC, 2, struct msm_rotator_data_info)
#define MSM_ROTATOR_IOCTL_FINISH _IOW(MSM_ROTATOR_IOCTL_MAGIC, 3, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ROTATOR_VERSION_01 0xA5B4C301
enum rotator_clk_type {
ROTATOR_CORE_CLK,
ROTATOR_PCLK,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
ROTATOR_IMEM_CLK
};
struct msm_rotator_img_info {
unsigned int session_id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msmfb_img src;
struct msmfb_img dst;
struct mdp_rect src_rect;
unsigned int dst_x;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int dst_y;
unsigned char rotations;
int enable;
unsigned int downscale_ratio;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int secure;
};
struct msm_rotator_data_info {
int session_id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msmfb_data src;
struct msmfb_data dst;
unsigned int version_key;
struct msmfb_data src_chroma;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msmfb_data dst_chroma;
};
struct msm_rot_clocks {
const char *clk_name;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum rotator_clk_type clk_type;
unsigned int clk_rate;
};
struct msm_rotator_platform_data {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int number_of_clocks;
unsigned int hardware_version_number;
struct msm_rot_clocks *rotator_clks;
char rot_iommu_split_domain;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#endif

View File

@@ -1,539 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _MSM_VIDC_DEC_H_
#define _MSM_VIDC_DEC_H_
#include <linux/types.h>
#include <linux/ioctl.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_S_BASE 0x40000000
#define VDEC_S_SUCCESS (VDEC_S_BASE)
#define VDEC_S_EFAIL (VDEC_S_BASE + 1)
#define VDEC_S_EFATAL (VDEC_S_BASE + 2)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_S_EBADPARAM (VDEC_S_BASE + 3)
#define VDEC_S_EINVALSTATE (VDEC_S_BASE + 4)
#define VDEC_S_ENOSWRES (VDEC_S_BASE + 5)
#define VDEC_S_ENOHWRES (VDEC_S_BASE + 6)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_S_EINVALCMD (VDEC_S_BASE + 7)
#define VDEC_S_ETIMEOUT (VDEC_S_BASE + 8)
#define VDEC_S_ENOPREREQ (VDEC_S_BASE + 9)
#define VDEC_S_ECMDQFULL (VDEC_S_BASE + 10)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_S_ENOTSUPP (VDEC_S_BASE + 11)
#define VDEC_S_ENOTIMPL (VDEC_S_BASE + 12)
#define VDEC_S_BUSY (VDEC_S_BASE + 13)
#define VDEC_S_INPUT_BITSTREAM_ERR (VDEC_S_BASE + 14)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_INTF_VER 1
#define VDEC_MSG_BASE 0x0000000
#define VDEC_MSG_INVALID (VDEC_MSG_BASE + 0)
#define VDEC_MSG_RESP_INPUT_BUFFER_DONE (VDEC_MSG_BASE + 1)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_MSG_RESP_OUTPUT_BUFFER_DONE (VDEC_MSG_BASE + 2)
#define VDEC_MSG_RESP_INPUT_FLUSHED (VDEC_MSG_BASE + 3)
#define VDEC_MSG_RESP_OUTPUT_FLUSHED (VDEC_MSG_BASE + 4)
#define VDEC_MSG_RESP_FLUSH_INPUT_DONE (VDEC_MSG_BASE + 5)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_MSG_RESP_FLUSH_OUTPUT_DONE (VDEC_MSG_BASE + 6)
#define VDEC_MSG_RESP_START_DONE (VDEC_MSG_BASE + 7)
#define VDEC_MSG_RESP_STOP_DONE (VDEC_MSG_BASE + 8)
#define VDEC_MSG_RESP_PAUSE_DONE (VDEC_MSG_BASE + 9)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_MSG_RESP_RESUME_DONE (VDEC_MSG_BASE + 10)
#define VDEC_MSG_RESP_RESOURCE_LOADED (VDEC_MSG_BASE + 11)
#define VDEC_EVT_RESOURCES_LOST (VDEC_MSG_BASE + 12)
#define VDEC_MSG_EVT_CONFIG_CHANGED (VDEC_MSG_BASE + 13)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_MSG_EVT_HW_ERROR (VDEC_MSG_BASE + 14)
#define VDEC_MSG_EVT_INFO_CONFIG_CHANGED (VDEC_MSG_BASE + 15)
#define VDEC_MSG_EVT_INFO_FIELD_DROPPED (VDEC_MSG_BASE + 16)
#define VDEC_BUFFERFLAG_EOS 0x00000001
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_BUFFERFLAG_DECODEONLY 0x00000004
#define VDEC_BUFFERFLAG_DATACORRUPT 0x00000008
#define VDEC_BUFFERFLAG_ENDOFFRAME 0x00000010
#define VDEC_BUFFERFLAG_SYNCFRAME 0x00000020
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_BUFFERFLAG_EXTRADATA 0x00000040
#define VDEC_BUFFERFLAG_CODECCONFIG 0x00000080
#define VDEC_EXTRADATA_NONE 0x001
#define VDEC_EXTRADATA_QP 0x004
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_EXTRADATA_MB_ERROR_MAP 0x008
#define VDEC_EXTRADATA_SEI 0x010
#define VDEC_EXTRADATA_VUI 0x020
#define VDEC_EXTRADATA_VC1 0x040
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_CMDBASE 0x800
#define VDEC_CMD_SET_INTF_VERSION (VDEC_CMDBASE)
#define VDEC_IOCTL_MAGIC 'v'
struct vdec_ioctl_msg {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
void __user *in;
void __user *out;
};
#define VDEC_IOCTL_GET_PROFILE_LEVEL_SUPPORTED _IOWR(VDEC_IOCTL_MAGIC, 0, struct vdec_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_GET_INTERLACE_FORMAT _IOR(VDEC_IOCTL_MAGIC, 1, struct vdec_ioctl_msg)
#define VDEC_IOCTL_GET_CURRENT_PROFILE_LEVEL _IOWR(VDEC_IOCTL_MAGIC, 2, struct vdec_ioctl_msg)
#define VDEC_IOCTL_SET_OUTPUT_FORMAT _IOWR(VDEC_IOCTL_MAGIC, 3, struct vdec_ioctl_msg)
#define VDEC_IOCTL_GET_OUTPUT_FORMAT _IOWR(VDEC_IOCTL_MAGIC, 4, struct vdec_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_SET_CODEC _IOW(VDEC_IOCTL_MAGIC, 5, struct vdec_ioctl_msg)
#define VDEC_IOCTL_GET_CODEC _IOR(VDEC_IOCTL_MAGIC, 6, struct vdec_ioctl_msg)
#define VDEC_IOCTL_SET_PICRES _IOW(VDEC_IOCTL_MAGIC, 7, struct vdec_ioctl_msg)
#define VDEC_IOCTL_GET_PICRES _IOR(VDEC_IOCTL_MAGIC, 8, struct vdec_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_SET_EXTRADATA _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_ioctl_msg)
#define VDEC_IOCTL_GET_EXTRADATA _IOR(VDEC_IOCTL_MAGIC, 10, struct vdec_ioctl_msg)
#define VDEC_IOCTL_SET_SEQUENCE_HEADER _IOW(VDEC_IOCTL_MAGIC, 11, struct vdec_ioctl_msg)
#define VDEC_IOCTL_SET_BUFFER_REQ _IOW(VDEC_IOCTL_MAGIC, 12, struct vdec_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_GET_BUFFER_REQ _IOR(VDEC_IOCTL_MAGIC, 13, struct vdec_ioctl_msg)
#define VDEC_IOCTL_ALLOCATE_BUFFER _IOWR(VDEC_IOCTL_MAGIC, 14, struct vdec_ioctl_msg)
#define VDEC_IOCTL_FREE_BUFFER _IOW(VDEC_IOCTL_MAGIC, 15, struct vdec_ioctl_msg)
#define VDEC_IOCTL_SET_BUFFER _IOW(VDEC_IOCTL_MAGIC, 16, struct vdec_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_FILL_OUTPUT_BUFFER _IOW(VDEC_IOCTL_MAGIC, 17, struct vdec_ioctl_msg)
#define VDEC_IOCTL_DECODE_FRAME _IOW(VDEC_IOCTL_MAGIC, 18, struct vdec_ioctl_msg)
#define VDEC_IOCTL_LOAD_RESOURCES _IO(VDEC_IOCTL_MAGIC, 19)
#define VDEC_IOCTL_CMD_START _IO(VDEC_IOCTL_MAGIC, 20)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_CMD_STOP _IO(VDEC_IOCTL_MAGIC, 21)
#define VDEC_IOCTL_CMD_PAUSE _IO(VDEC_IOCTL_MAGIC, 22)
#define VDEC_IOCTL_CMD_RESUME _IO(VDEC_IOCTL_MAGIC, 23)
#define VDEC_IOCTL_CMD_FLUSH _IOW(VDEC_IOCTL_MAGIC, 24, struct vdec_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_GET_NEXT_MSG _IOR(VDEC_IOCTL_MAGIC, 25, struct vdec_ioctl_msg)
#define VDEC_IOCTL_STOP_NEXT_MSG _IO(VDEC_IOCTL_MAGIC, 26)
#define VDEC_IOCTL_GET_NUMBER_INSTANCES _IOR(VDEC_IOCTL_MAGIC, 27, struct vdec_ioctl_msg)
#define VDEC_IOCTL_SET_PICTURE_ORDER _IOW(VDEC_IOCTL_MAGIC, 28, struct vdec_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_SET_FRAME_RATE _IOW(VDEC_IOCTL_MAGIC, 29, struct vdec_ioctl_msg)
#define VDEC_IOCTL_SET_H264_MV_BUFFER _IOW(VDEC_IOCTL_MAGIC, 30, struct vdec_ioctl_msg)
#define VDEC_IOCTL_FREE_H264_MV_BUFFER _IOW(VDEC_IOCTL_MAGIC, 31, struct vdec_ioctl_msg)
#define VDEC_IOCTL_GET_MV_BUFFER_SIZE _IOR(VDEC_IOCTL_MAGIC, 32, struct vdec_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_SET_IDR_ONLY_DECODING _IO(VDEC_IOCTL_MAGIC, 33)
#define VDEC_IOCTL_SET_CONT_ON_RECONFIG _IO(VDEC_IOCTL_MAGIC, 34)
#define VDEC_IOCTL_SET_DISABLE_DMX _IOW(VDEC_IOCTL_MAGIC, 35, struct vdec_ioctl_msg)
#define VDEC_IOCTL_GET_DISABLE_DMX _IOR(VDEC_IOCTL_MAGIC, 36, struct vdec_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VDEC_IOCTL_GET_DISABLE_DMX_SUPPORT _IOR(VDEC_IOCTL_MAGIC, 37, struct vdec_ioctl_msg)
enum vdec_picture {
PICTURE_TYPE_I,
PICTURE_TYPE_P,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
PICTURE_TYPE_B,
PICTURE_TYPE_BI,
PICTURE_TYPE_SKIP,
PICTURE_TYPE_IDR,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
PICTURE_TYPE_UNKNOWN
};
enum vdec_buffer {
VDEC_BUFFER_TYPE_INPUT,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_BUFFER_TYPE_OUTPUT
};
struct vdec_allocatorproperty {
enum vdec_buffer buffer_type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t mincount;
uint32_t maxcount;
uint32_t actualcount;
size_t buffer_size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t alignment;
uint32_t buf_poolid;
};
struct vdec_bufferpayload {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
void __user *bufferaddr;
size_t buffer_len;
int pmem_fd;
size_t offset;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
size_t mmaped_size;
};
struct vdec_setbuffer_cmd {
enum vdec_buffer buffer_type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_bufferpayload buffer;
};
struct vdec_fillbuffer_cmd {
struct vdec_bufferpayload buffer;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
void *client_data;
};
enum vdec_bufferflush {
VDEC_FLUSH_TYPE_INPUT,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_FLUSH_TYPE_OUTPUT,
VDEC_FLUSH_TYPE_ALL
};
enum vdec_codec {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_CODECTYPE_H264 = 0x1,
VDEC_CODECTYPE_H263 = 0x2,
VDEC_CODECTYPE_MPEG4 = 0x3,
VDEC_CODECTYPE_DIVX_3 = 0x4,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_CODECTYPE_DIVX_4 = 0x5,
VDEC_CODECTYPE_DIVX_5 = 0x6,
VDEC_CODECTYPE_DIVX_6 = 0x7,
VDEC_CODECTYPE_XVID = 0x8,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_CODECTYPE_MPEG1 = 0x9,
VDEC_CODECTYPE_MPEG2 = 0xa,
VDEC_CODECTYPE_VC1 = 0xb,
VDEC_CODECTYPE_VC1_RCV = 0xc
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum vdec_mpeg2_profile {
VDEC_MPEG2ProfileSimple = 0x1,
VDEC_MPEG2ProfileMain = 0x2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG2Profile422 = 0x4,
VDEC_MPEG2ProfileSNR = 0x8,
VDEC_MPEG2ProfileSpatial = 0x10,
VDEC_MPEG2ProfileHigh = 0x20,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG2ProfileKhronosExtensions = 0x6F000000,
VDEC_MPEG2ProfileVendorStartUnused = 0x7F000000,
VDEC_MPEG2ProfileMax = 0x7FFFFFFF
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum vdec_mpeg2_level {
VDEC_MPEG2LevelLL = 0x1,
VDEC_MPEG2LevelML = 0x2,
VDEC_MPEG2LevelH14 = 0x4,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG2LevelHL = 0x8,
VDEC_MPEG2LevelKhronosExtensions = 0x6F000000,
VDEC_MPEG2LevelVendorStartUnused = 0x7F000000,
VDEC_MPEG2LevelMax = 0x7FFFFFFF
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum vdec_mpeg4_profile {
VDEC_MPEG4ProfileSimple = 0x01,
VDEC_MPEG4ProfileSimpleScalable = 0x02,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG4ProfileCore = 0x04,
VDEC_MPEG4ProfileMain = 0x08,
VDEC_MPEG4ProfileNbit = 0x10,
VDEC_MPEG4ProfileScalableTexture = 0x20,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG4ProfileSimpleFace = 0x40,
VDEC_MPEG4ProfileSimpleFBA = 0x80,
VDEC_MPEG4ProfileBasicAnimated = 0x100,
VDEC_MPEG4ProfileHybrid = 0x200,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG4ProfileAdvancedRealTime = 0x400,
VDEC_MPEG4ProfileCoreScalable = 0x800,
VDEC_MPEG4ProfileAdvancedCoding = 0x1000,
VDEC_MPEG4ProfileAdvancedCore = 0x2000,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG4ProfileAdvancedScalable = 0x4000,
VDEC_MPEG4ProfileAdvancedSimple = 0x8000,
VDEC_MPEG4ProfileKhronosExtensions = 0x6F000000,
VDEC_MPEG4ProfileVendorStartUnused = 0x7F000000,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG4ProfileMax = 0x7FFFFFFF
};
enum vdec_mpeg4_level {
VDEC_MPEG4Level0 = 0x01,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG4Level0b = 0x02,
VDEC_MPEG4Level1 = 0x04,
VDEC_MPEG4Level2 = 0x08,
VDEC_MPEG4Level3 = 0x10,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG4Level4 = 0x20,
VDEC_MPEG4Level4a = 0x40,
VDEC_MPEG4Level5 = 0x80,
VDEC_MPEG4LevelKhronosExtensions = 0x6F000000,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_MPEG4LevelVendorStartUnused = 0x7F000000,
VDEC_MPEG4LevelMax = 0x7FFFFFFF
};
enum vdec_avc_profile {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_AVCProfileBaseline = 0x01,
VDEC_AVCProfileMain = 0x02,
VDEC_AVCProfileExtended = 0x04,
VDEC_AVCProfileHigh = 0x08,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_AVCProfileHigh10 = 0x10,
VDEC_AVCProfileHigh422 = 0x20,
VDEC_AVCProfileHigh444 = 0x40,
VDEC_AVCProfileKhronosExtensions = 0x6F000000,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_AVCProfileVendorStartUnused = 0x7F000000,
VDEC_AVCProfileMax = 0x7FFFFFFF
};
enum vdec_avc_level {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_AVCLevel1 = 0x01,
VDEC_AVCLevel1b = 0x02,
VDEC_AVCLevel11 = 0x04,
VDEC_AVCLevel12 = 0x08,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_AVCLevel13 = 0x10,
VDEC_AVCLevel2 = 0x20,
VDEC_AVCLevel21 = 0x40,
VDEC_AVCLevel22 = 0x80,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_AVCLevel3 = 0x100,
VDEC_AVCLevel31 = 0x200,
VDEC_AVCLevel32 = 0x400,
VDEC_AVCLevel4 = 0x800,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_AVCLevel41 = 0x1000,
VDEC_AVCLevel42 = 0x2000,
VDEC_AVCLevel5 = 0x4000,
VDEC_AVCLevel51 = 0x8000,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_AVCLevelKhronosExtensions = 0x6F000000,
VDEC_AVCLevelVendorStartUnused = 0x7F000000,
VDEC_AVCLevelMax = 0x7FFFFFFF
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum vdec_divx_profile {
VDEC_DIVXProfile_qMobile = 0x01,
VDEC_DIVXProfile_Mobile = 0x02,
VDEC_DIVXProfile_HD = 0x04,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_DIVXProfile_Handheld = 0x08,
VDEC_DIVXProfile_Portable = 0x10,
VDEC_DIVXProfile_HomeTheater = 0x20
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum vdec_xvid_profile {
VDEC_XVIDProfile_Simple = 0x1,
VDEC_XVIDProfile_Advanced_Realtime_Simple = 0x2,
VDEC_XVIDProfile_Advanced_Simple = 0x4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum vdec_xvid_level {
VDEC_XVID_LEVEL_S_L0 = 0x1,
VDEC_XVID_LEVEL_S_L1 = 0x2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_XVID_LEVEL_S_L2 = 0x4,
VDEC_XVID_LEVEL_S_L3 = 0x8,
VDEC_XVID_LEVEL_ARTS_L1 = 0x10,
VDEC_XVID_LEVEL_ARTS_L2 = 0x20,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_XVID_LEVEL_ARTS_L3 = 0x40,
VDEC_XVID_LEVEL_ARTS_L4 = 0x80,
VDEC_XVID_LEVEL_AS_L0 = 0x100,
VDEC_XVID_LEVEL_AS_L1 = 0x200,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_XVID_LEVEL_AS_L2 = 0x400,
VDEC_XVID_LEVEL_AS_L3 = 0x800,
VDEC_XVID_LEVEL_AS_L4 = 0x1000
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum vdec_h263profile {
VDEC_H263ProfileBaseline = 0x01,
VDEC_H263ProfileH320Coding = 0x02,
VDEC_H263ProfileBackwardCompatible = 0x04,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_H263ProfileISWV2 = 0x08,
VDEC_H263ProfileISWV3 = 0x10,
VDEC_H263ProfileHighCompression = 0x20,
VDEC_H263ProfileInternet = 0x40,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_H263ProfileInterlace = 0x80,
VDEC_H263ProfileHighLatency = 0x100,
VDEC_H263ProfileKhronosExtensions = 0x6F000000,
VDEC_H263ProfileVendorStartUnused = 0x7F000000,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_H263ProfileMax = 0x7FFFFFFF
};
enum vdec_h263level {
VDEC_H263Level10 = 0x01,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_H263Level20 = 0x02,
VDEC_H263Level30 = 0x04,
VDEC_H263Level40 = 0x08,
VDEC_H263Level45 = 0x10,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_H263Level50 = 0x20,
VDEC_H263Level60 = 0x40,
VDEC_H263Level70 = 0x80,
VDEC_H263LevelKhronosExtensions = 0x6F000000,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_H263LevelVendorStartUnused = 0x7F000000,
VDEC_H263LevelMax = 0x7FFFFFFF
};
enum vdec_wmv_format {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_WMVFormatUnused = 0x01,
VDEC_WMVFormat7 = 0x02,
VDEC_WMVFormat8 = 0x04,
VDEC_WMVFormat9 = 0x08,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_WMFFormatKhronosExtensions = 0x6F000000,
VDEC_WMFFormatVendorStartUnused = 0x7F000000,
VDEC_WMVFormatMax = 0x7FFFFFFF
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum vdec_vc1_profile {
VDEC_VC1ProfileSimple = 0x1,
VDEC_VC1ProfileMain = 0x2,
VDEC_VC1ProfileAdvanced = 0x4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum vdec_vc1_level {
VDEC_VC1_LEVEL_S_Low = 0x1,
VDEC_VC1_LEVEL_S_Medium = 0x2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_VC1_LEVEL_M_Low = 0x4,
VDEC_VC1_LEVEL_M_Medium = 0x8,
VDEC_VC1_LEVEL_M_High = 0x10,
VDEC_VC1_LEVEL_A_L0 = 0x20,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_VC1_LEVEL_A_L1 = 0x40,
VDEC_VC1_LEVEL_A_L2 = 0x80,
VDEC_VC1_LEVEL_A_L3 = 0x100,
VDEC_VC1_LEVEL_A_L4 = 0x200
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct vdec_profile_level {
uint32_t profiles;
uint32_t levels;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
enum vdec_interlaced_format {
VDEC_InterlaceFrameProgressive = 0x1,
VDEC_InterlaceInterleaveFrameTopFieldFirst = 0x2,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_InterlaceInterleaveFrameBottomFieldFirst = 0x4
};
enum vdec_output_fromat {
VDEC_YUV_FORMAT_NV12 = 0x1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_YUV_FORMAT_TILE_4x2 = 0x2
};
enum vdec_output_order {
VDEC_ORDER_DISPLAY = 0x1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
VDEC_ORDER_DECODE = 0x2
};
struct vdec_picsize {
uint32_t frame_width;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t frame_height;
uint32_t stride;
uint32_t scan_lines;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_seqheader {
void __user *ptr_seqheader;
size_t seq_header_len;
int pmem_fd;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
size_t pmem_offset;
};
struct vdec_mberror {
void __user *ptr_errormap;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
size_t err_mapsize;
};
struct vdec_input_frameinfo {
void __user *bufferaddr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
size_t offset;
size_t datalen;
uint32_t flags;
int64_t timestamp;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
void *client_data;
int pmem_fd;
size_t pmem_offset;
void __user *desc_addr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t desc_size;
};
struct vdec_framesize {
uint32_t left;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t top;
uint32_t right;
uint32_t bottom;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_aspectratioinfo {
uint32_t aspect_ratio;
uint32_t par_width;
uint32_t par_height;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct vdec_output_frameinfo {
void __user *bufferaddr;
size_t offset;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
size_t len;
uint32_t flags;
int64_t time_stamp;
enum vdec_picture pic_type;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
void *client_data;
void *input_frame_clientdata;
struct vdec_framesize framesize;
enum vdec_interlaced_format interlaced_format;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_aspectratioinfo aspect_ratio_info;
};
union vdec_msgdata {
struct vdec_output_frameinfo output_frame;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
void *input_frame_clientdata;
};
struct vdec_msginfo {
uint32_t status_code;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t msgcode;
union vdec_msgdata msgdata;
size_t msgdatasize;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_framerate {
unsigned long fps_denominator;
unsigned long fps_numerator;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct vdec_h264_mv{
size_t size;
int count;
int pmem_fd;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int offset;
};
struct vdec_mv_buff_size{
int width;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int height;
int size;
int alignment;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#endif

View File

@@ -1,429 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _MSM_VIDC_ENC_H_
#define _MSM_VIDC_ENC_H_
#include <linux/types.h>
#include <linux/ioctl.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_S_BASE 0x00000000
#define VEN_S_SUCCESS (VEN_S_BASE)
#define VEN_S_EFAIL (VEN_S_BASE+1)
#define VEN_S_EFATAL (VEN_S_BASE+2)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_S_EBADPARAM (VEN_S_BASE+3)
#define VEN_S_EINVALSTATE (VEN_S_BASE+4)
#define VEN_S_ENOSWRES (VEN_S_BASE+5)
#define VEN_S_ENOHWRES (VEN_S_BASE+6)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_S_EBUFFREQ (VEN_S_BASE+7)
#define VEN_S_EINVALCMD (VEN_S_BASE+8)
#define VEN_S_ETIMEOUT (VEN_S_BASE+9)
#define VEN_S_ENOREATMPT (VEN_S_BASE+10)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_S_ENOPREREQ (VEN_S_BASE+11)
#define VEN_S_ECMDQFULL (VEN_S_BASE+12)
#define VEN_S_ENOTSUPP (VEN_S_BASE+13)
#define VEN_S_ENOTIMPL (VEN_S_BASE+14)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_S_ENOTPMEM (VEN_S_BASE+15)
#define VEN_S_EFLUSHED (VEN_S_BASE+16)
#define VEN_S_EINSUFBUF (VEN_S_BASE+17)
#define VEN_S_ESAMESTATE (VEN_S_BASE+18)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_S_EINVALTRANS (VEN_S_BASE+19)
#define VEN_INTF_VER 1
#define VEN_MSG_INDICATION 0
#define VEN_MSG_INPUT_BUFFER_DONE 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_MSG_OUTPUT_BUFFER_DONE 2
#define VEN_MSG_NEED_OUTPUT_BUFFER 3
#define VEN_MSG_FLUSH_INPUT_DONE 4
#define VEN_MSG_FLUSH_OUPUT_DONE 5
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_MSG_START 6
#define VEN_MSG_STOP 7
#define VEN_MSG_PAUSE 8
#define VEN_MSG_RESUME 9
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_MSG_STOP_READING_MSG 10
#define VEN_BUFFLAG_EOS 0x00000001
#define VEN_BUFFLAG_ENDOFFRAME 0x00000010
#define VEN_BUFFLAG_SYNCFRAME 0x00000020
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_BUFFLAG_EXTRADATA 0x00000040
#define VEN_BUFFLAG_CODECCONFIG 0x00000080
#define VEN_EXTRADATA_NONE 0x001
#define VEN_EXTRADATA_QCOMFILLER 0x002
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_EXTRADATA_SLICEINFO 0x100
#define VEN_FRAME_TYPE_I 1
#define VEN_FRAME_TYPE_P 2
#define VEN_FRAME_TYPE_B 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_CODEC_MPEG4 1
#define VEN_CODEC_H264 2
#define VEN_CODEC_H263 3
#define VEN_PROFILE_MPEG4_SP 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_PROFILE_MPEG4_ASP 2
#define VEN_PROFILE_H264_BASELINE 3
#define VEN_PROFILE_H264_MAIN 4
#define VEN_PROFILE_H264_HIGH 5
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_PROFILE_H263_BASELINE 6
#define VEN_LEVEL_MPEG4_0 0x1
#define VEN_LEVEL_MPEG4_1 0x2
#define VEN_LEVEL_MPEG4_2 0x3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_LEVEL_MPEG4_3 0x4
#define VEN_LEVEL_MPEG4_4 0x5
#define VEN_LEVEL_MPEG4_5 0x6
#define VEN_LEVEL_MPEG4_3b 0x7
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_LEVEL_MPEG4_6 0x8
#define VEN_LEVEL_H264_1 0x9
#define VEN_LEVEL_H264_1b 0xA
#define VEN_LEVEL_H264_1p1 0xB
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_LEVEL_H264_1p2 0xC
#define VEN_LEVEL_H264_1p3 0xD
#define VEN_LEVEL_H264_2 0xE
#define VEN_LEVEL_H264_2p1 0xF
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_LEVEL_H264_2p2 0x10
#define VEN_LEVEL_H264_3 0x11
#define VEN_LEVEL_H264_3p1 0x12
#define VEN_LEVEL_H264_3p2 0x13
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_LEVEL_H264_4 0x14
#define VEN_LEVEL_H263_10 0x15
#define VEN_LEVEL_H263_20 0x16
#define VEN_LEVEL_H263_30 0x17
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_LEVEL_H263_40 0x18
#define VEN_LEVEL_H263_45 0x19
#define VEN_LEVEL_H263_50 0x1A
#define VEN_LEVEL_H263_60 0x1B
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_LEVEL_H263_70 0x1C
#define VEN_ENTROPY_MODEL_CAVLC 1
#define VEN_ENTROPY_MODEL_CABAC 2
#define VEN_CABAC_MODEL_0 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_CABAC_MODEL_1 2
#define VEN_CABAC_MODEL_2 3
#define VEN_DB_DISABLE 1
#define VEN_DB_ALL_BLKG_BNDRY 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_DB_SKIP_SLICE_BNDRY 3
#define VEN_MSLICE_OFF 1
#define VEN_MSLICE_CNT_MB 2
#define VEN_MSLICE_CNT_BYTE 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_MSLICE_GOB 4
#define VEN_RC_OFF 1
#define VEN_RC_VBR_VFR 2
#define VEN_RC_VBR_CFR 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_RC_CBR_VFR 4
#define VEN_RC_CBR_CFR 5
#define VEN_FLUSH_INPUT 1
#define VEN_FLUSH_OUTPUT 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_FLUSH_ALL 3
#define VEN_INPUTFMT_NV12 1
#define VEN_INPUTFMT_NV21 2
#define VEN_INPUTFMT_NV12_16M2KA 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_ROTATION_0 1
#define VEN_ROTATION_90 2
#define VEN_ROTATION_180 3
#define VEN_ROTATION_270 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_TIMEOUT_INFINITE 0xffffffff
#define VEN_IR_OFF 1
#define VEN_IR_CYCLIC 2
#define VEN_IR_RANDOM 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTLBASE_NENC 0x800
#define VEN_IOCTLBASE_ENC 0x850
struct venc_ioctl_msg{
void __user *in;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
void __user *out;
};
#define VEN_IOCTL_SET_INTF_VERSION _IOW(VEN_IOCTLBASE_NENC, 0, struct venc_ioctl_msg)
#define VEN_IOCTL_CMD_READ_NEXT_MSG _IOWR(VEN_IOCTLBASE_NENC, 1, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_CMD_STOP_READ_MSG _IO(VEN_IOCTLBASE_NENC, 2)
#define VEN_IOCTL_SET_INPUT_BUFFER_REQ _IOW(VEN_IOCTLBASE_NENC, 3, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_INPUT_BUFFER_REQ _IOR(VEN_IOCTLBASE_NENC, 4, struct venc_ioctl_msg)
#define VEN_IOCTL_CMD_ALLOC_INPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 5, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_SET_INPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 6, struct venc_ioctl_msg)
#define VEN_IOCTL_CMD_FREE_INPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 7, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_OUTPUT_BUFFER_REQ _IOW(VEN_IOCTLBASE_NENC, 8, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_OUTPUT_BUFFER_REQ _IOR(VEN_IOCTLBASE_NENC, 9, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_CMD_ALLOC_OUTPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 10, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_OUTPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 11, struct venc_ioctl_msg)
#define VEN_IOCTL_CMD_FREE_OUTPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 12, struct venc_ioctl_msg)
#define VEN_IOCTL_CMD_START _IO(VEN_IOCTLBASE_NENC, 13)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_CMD_ENCODE_FRAME _IOW(VEN_IOCTLBASE_NENC, 14, struct venc_ioctl_msg)
#define VEN_IOCTL_CMD_FILL_OUTPUT_BUFFER _IOW(VEN_IOCTLBASE_NENC, 15, struct venc_ioctl_msg)
#define VEN_IOCTL_CMD_FLUSH _IOW(VEN_IOCTLBASE_NENC, 16, struct venc_ioctl_msg)
#define VEN_IOCTL_CMD_PAUSE _IO(VEN_IOCTLBASE_NENC, 17)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_CMD_RESUME _IO(VEN_IOCTLBASE_NENC, 18)
#define VEN_IOCTL_CMD_STOP _IO(VEN_IOCTLBASE_NENC, 19)
#define VEN_IOCTL_SET_RECON_BUFFER _IOW(VEN_IOCTLBASE_NENC, 20, struct venc_ioctl_msg)
#define VEN_IOCTL_FREE_RECON_BUFFER _IOW(VEN_IOCTLBASE_NENC, 21, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_GET_RECON_BUFFER_SIZE _IOW(VEN_IOCTLBASE_NENC, 22, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_BASE_CFG _IOW(VEN_IOCTLBASE_ENC, 1, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_BASE_CFG _IOR(VEN_IOCTLBASE_ENC, 2, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_LIVE_MODE _IOW(VEN_IOCTLBASE_ENC, 3, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_GET_LIVE_MODE _IOR(VEN_IOCTLBASE_ENC, 4, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_CODEC_PROFILE _IOW(VEN_IOCTLBASE_ENC, 5, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_CODEC_PROFILE _IOR(VEN_IOCTLBASE_ENC, 6, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_PROFILE_LEVEL _IOW(VEN_IOCTLBASE_ENC, 7, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_GET_PROFILE_LEVEL _IOR(VEN_IOCTLBASE_ENC, 8, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_SHORT_HDR _IOW(VEN_IOCTLBASE_ENC, 9, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_SHORT_HDR _IOR(VEN_IOCTLBASE_ENC, 10, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_SESSION_QP _IOW(VEN_IOCTLBASE_ENC, 11, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_GET_SESSION_QP _IOR(VEN_IOCTLBASE_ENC, 12, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_INTRA_PERIOD _IOW(VEN_IOCTLBASE_ENC, 13, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_INTRA_PERIOD _IOR(VEN_IOCTLBASE_ENC, 14, struct venc_ioctl_msg)
#define VEN_IOCTL_CMD_REQUEST_IFRAME _IO(VEN_IOCTLBASE_ENC, 15)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_GET_CAPABILITY _IOR(VEN_IOCTLBASE_ENC, 16, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_SEQUENCE_HDR _IOR(VEN_IOCTLBASE_ENC, 17, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_ENTROPY_CFG _IOW(VEN_IOCTLBASE_ENC, 18, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_ENTROPY_CFG _IOR(VEN_IOCTLBASE_ENC, 19, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_SET_DEBLOCKING_CFG _IOW(VEN_IOCTLBASE_ENC, 20, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_DEBLOCKING_CFG _IOR(VEN_IOCTLBASE_ENC, 21, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_INTRA_REFRESH _IOW(VEN_IOCTLBASE_ENC, 22, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_INTRA_REFRESH _IOR(VEN_IOCTLBASE_ENC, 23, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_SET_MULTI_SLICE_CFG _IOW(VEN_IOCTLBASE_ENC, 24, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_MULTI_SLICE_CFG _IOR(VEN_IOCTLBASE_ENC, 25, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_RATE_CTRL_CFG _IOW(VEN_IOCTLBASE_ENC, 26, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_RATE_CTRL_CFG _IOR(VEN_IOCTLBASE_ENC, 27, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_SET_VOP_TIMING_CFG _IOW(VEN_IOCTLBASE_ENC, 28, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_VOP_TIMING_CFG _IOR(VEN_IOCTLBASE_ENC, 29, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_FRAME_RATE _IOW(VEN_IOCTLBASE_ENC, 30, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_FRAME_RATE _IOR(VEN_IOCTLBASE_ENC, 31, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_SET_TARGET_BITRATE _IOW(VEN_IOCTLBASE_ENC, 32, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_TARGET_BITRATE _IOR(VEN_IOCTLBASE_ENC, 33, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_ROTATION _IOW(VEN_IOCTLBASE_ENC, 34, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_ROTATION _IOR(VEN_IOCTLBASE_ENC, 35, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_SET_HEC _IOW(VEN_IOCTLBASE_ENC, 36, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_HEC _IOR(VEN_IOCTLBASE_ENC, 37, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_DATA_PARTITION _IOW(VEN_IOCTLBASE_ENC, 38, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_DATA_PARTITION _IOR(VEN_IOCTLBASE_ENC, 39, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_SET_RVLC _IOW(VEN_IOCTLBASE_ENC, 40, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_RVLC _IOR(VEN_IOCTLBASE_ENC, 41, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_AC_PREDICTION _IOW(VEN_IOCTLBASE_ENC, 42, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_AC_PREDICTION _IOR(VEN_IOCTLBASE_ENC, 43, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_SET_QP_RANGE _IOW(VEN_IOCTLBASE_ENC, 44, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_QP_RANGE _IOR(VEN_IOCTLBASE_ENC, 45, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_NUMBER_INSTANCES _IOR(VEN_IOCTLBASE_ENC, 46, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_METABUFFER_MODE _IOW(VEN_IOCTLBASE_ENC, 47, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VEN_IOCTL_SET_EXTRADATA _IOW(VEN_IOCTLBASE_ENC, 48, struct venc_ioctl_msg)
#define VEN_IOCTL_GET_EXTRADATA _IOR(VEN_IOCTLBASE_ENC, 49, struct venc_ioctl_msg)
#define VEN_IOCTL_SET_SLICE_DELIVERY_MODE _IO(VEN_IOCTLBASE_ENC, 50)
#define VEN_IOCTL_SET_SPS_PPS_FOR_IDR _IOW(VEN_IOCTLBASE_ENC, 51, struct venc_ioctl_msg)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_switch{
unsigned char status;
};
struct venc_allocatorproperty{
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long mincount;
unsigned long maxcount;
unsigned long actualcount;
unsigned long datasize;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long suffixsize;
unsigned long alignment;
unsigned long bufpoolid;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_bufferpayload{
unsigned char *pbuffer;
size_t sz;
int fd;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned int offset;
unsigned int maped_size;
unsigned long filled_len;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_buffer{
unsigned char *ptrbuffer;
unsigned long sz;
unsigned long len;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long offset;
long long timestamp;
unsigned long flags;
void *clientdata;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct venc_basecfg{
unsigned long input_width;
unsigned long input_height;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long dvs_width;
unsigned long dvs_height;
unsigned long codectype;
unsigned long fps_num;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long fps_den;
unsigned long targetbitrate;
unsigned long inputformat;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_profile{
unsigned long profile;
};
struct ven_profilelevel{
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long level;
};
struct venc_sessionqp{
unsigned long iframeqp;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long pframqp;
};
struct venc_qprange{
unsigned long maxqp;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long minqp;
};
struct venc_intraperiod{
unsigned long num_pframes;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long num_bframes;
};
struct venc_seqheader{
unsigned char *hdrbufptr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long bufsize;
unsigned long hdrlen;
};
struct venc_capability{
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long codec_types;
unsigned long maxframe_width;
unsigned long maxframe_height;
unsigned long maxtarget_bitrate;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long maxframe_rate;
unsigned long input_formats;
unsigned char dvs;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_entropycfg{
unsigned longentropysel;
unsigned long cabacmodel;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_dbcfg{
unsigned long db_mode;
unsigned long slicealpha_offset;
unsigned long slicebeta_offset;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct venc_intrarefresh{
unsigned long irmode;
unsigned long mbcount;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct venc_multiclicecfg{
unsigned long mslice_mode;
unsigned long mslice_size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct venc_bufferflush{
unsigned long flush_mode;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_ratectrlcfg{
unsigned long rcmode;
};
struct venc_voptimingcfg{
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long voptime_resolution;
};
struct venc_framerate{
unsigned long fps_denominator;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long fps_numerator;
};
struct venc_targetbitrate{
unsigned long target_bitrate;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct venc_rotation{
unsigned long rotation;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_timeout{
unsigned long millisec;
};
struct venc_headerextension{
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long header_extension;
};
struct venc_msg{
unsigned long statuscode;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long msgcode;
struct venc_buffer buf;
unsigned long msgdata_size;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct venc_recon_addr{
unsigned char *pbuffer;
unsigned long buffer_size;
unsigned long pmem_fd;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long offset;
};
struct venc_recon_buff_size{
int width;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int height;
int size;
int alignment;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,100 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __LINUX_MSM_GEMINI_H
#define __LINUX_MSM_GEMINI_H
#include <linux/types.h>
#include <linux/ioctl.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_GMN_IOCTL_MAGIC 'g'
#define MSM_GMN_IOCTL_GET_HW_VERSION _IOW(MSM_GMN_IOCTL_MAGIC, 1, struct msm_gemini_hw_cmd *)
#define MSM_GMN_IOCTL_RESET _IOW(MSM_GMN_IOCTL_MAGIC, 2, struct msm_gemini_ctrl_cmd *)
#define MSM_GMN_IOCTL_STOP _IOW(MSM_GMN_IOCTL_MAGIC, 3, struct msm_gemini_hw_cmds *)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_GMN_IOCTL_START _IOW(MSM_GMN_IOCTL_MAGIC, 4, struct msm_gemini_hw_cmds *)
#define MSM_GMN_IOCTL_INPUT_BUF_ENQUEUE _IOW(MSM_GMN_IOCTL_MAGIC, 5, struct msm_gemini_buf *)
#define MSM_GMN_IOCTL_INPUT_GET _IOW(MSM_GMN_IOCTL_MAGIC, 6, struct msm_gemini_buf *)
#define MSM_GMN_IOCTL_INPUT_GET_UNBLOCK _IOW(MSM_GMN_IOCTL_MAGIC, 7, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_GMN_IOCTL_OUTPUT_BUF_ENQUEUE _IOW(MSM_GMN_IOCTL_MAGIC, 8, struct msm_gemini_buf *)
#define MSM_GMN_IOCTL_OUTPUT_GET _IOW(MSM_GMN_IOCTL_MAGIC, 9, struct msm_gemini_buf *)
#define MSM_GMN_IOCTL_OUTPUT_GET_UNBLOCK _IOW(MSM_GMN_IOCTL_MAGIC, 10, int)
#define MSM_GMN_IOCTL_EVT_GET _IOW(MSM_GMN_IOCTL_MAGIC, 11, struct msm_gemini_ctrl_cmd *)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_GMN_IOCTL_EVT_GET_UNBLOCK _IOW(MSM_GMN_IOCTL_MAGIC, 12, int)
#define MSM_GMN_IOCTL_HW_CMD _IOW(MSM_GMN_IOCTL_MAGIC, 13, struct msm_gemini_hw_cmd *)
#define MSM_GMN_IOCTL_HW_CMDS _IOW(MSM_GMN_IOCTL_MAGIC, 14, struct msm_gemini_hw_cmds *)
#define MSM_GMN_IOCTL_TEST_DUMP_REGION _IOW(MSM_GMN_IOCTL_MAGIC, 15, unsigned long)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_GEMINI_MODE_REALTIME_ENCODE 0
#define MSM_GEMINI_MODE_OFFLINE_ENCODE 1
#define MSM_GEMINI_MODE_REALTIME_ROTATION 2
#define MSM_GEMINI_MODE_OFFLINE_ROTATION 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_gemini_ctrl_cmd {
uint32_t type;
uint32_t len;
void *value;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#define MSM_GEMINI_EVT_RESET 0
#define MSM_GEMINI_EVT_FRAMEDONE 1
#define MSM_GEMINI_EVT_ERR 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_gemini_buf {
uint32_t type;
int fd;
void *vaddr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t y_off;
uint32_t y_len;
uint32_t framedone_len;
uint32_t cbcr_off;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t cbcr_len;
uint32_t num_of_mcu_rows;
uint32_t offset;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_GEMINI_HW_CMD_TYPE_READ 0
#define MSM_GEMINI_HW_CMD_TYPE_WRITE 1
#define MSM_GEMINI_HW_CMD_TYPE_WRITE_OR 2
#define MSM_GEMINI_HW_CMD_TYPE_UWAIT 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_GEMINI_HW_CMD_TYPE_MWAIT 4
#define MSM_GEMINI_HW_CMD_TYPE_MDELAY 5
#define MSM_GEMINI_HW_CMD_TYPE_UDELAY 6
struct msm_gemini_hw_cmd {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t type:4;
uint32_t n:12;
uint32_t offset:16;
uint32_t mask;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
union {
uint32_t data;
uint32_t *pdata;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct msm_gemini_hw_cmds {
uint32_t m;
struct msm_gemini_hw_cmd hw_cmd[1];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#endif

View File

@@ -1,61 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __LINUX_MSM_GESTURES_H
#define __LINUX_MSM_GESTURES_H
#include <linux/types.h>
#include <linux/ioctl.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#include <media/msm_camera.h>
#define MSM_GES_IOCTL_CTRL_COMMAND _IOW('V', BASE_VIDIOC_PRIVATE + 20, struct v4l2_control)
#define VIDIOC_MSM_GESTURE_EVT _IOWR('V', BASE_VIDIOC_PRIVATE + 21, struct v4l2_event)
#define MSM_GES_GET_EVT_PAYLOAD _IOW('V', BASE_VIDIOC_PRIVATE + 22, struct msm_ges_evt)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VIDIOC_MSM_GESTURE_CAM_EVT _IOWR('V', BASE_VIDIOC_PRIVATE + 23, int)
#define MSM_GES_RESP_V4L2 MSM_CAM_RESP_MAX
#define MSM_GES_RESP_MAX (MSM_GES_RESP_V4L2 + 1)
#define MSM_SVR_RESP_MAX MSM_GES_RESP_MAX
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_V4L2_GES_BASE 100
#define MSM_V4L2_GES_OPEN (MSM_V4L2_GES_BASE + 0)
#define MSM_V4L2_GES_CLOSE (MSM_V4L2_GES_BASE + 1)
#define MSM_V4L2_GES_CAM_OPEN (MSM_V4L2_GES_BASE + 2)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_V4L2_GES_CAM_CLOSE (MSM_V4L2_GES_BASE + 3)
#define MSM_GES_APP_EVT_MIN (V4L2_EVENT_PRIVATE_START + 0x14)
#define MSM_GES_APP_NOTIFY_EVENT (MSM_GES_APP_EVT_MIN + 0)
#define MSM_GES_APP_NOTIFY_ERROR_EVENT (MSM_GES_APP_EVT_MIN + 1)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_GES_APP_EVT_MAX (MSM_GES_APP_EVT_MIN + 2)
#define MSM_GESTURE_CID_CTRL_CMD V4L2_CID_BRIGHTNESS
#define MAX_GES_EVENTS 25
struct msm_ges_ctrl_cmd {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int type;
void *value;
int len;
int fd;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t cookie;
};
struct msm_ges_evt {
void *evt_data;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int evt_len;
};
#endif

View File

@@ -1,429 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __MSM_ISP_H__
#define __MSM_ISP_H__
#define BIT(nr) (1UL << (nr))
#define MSG_ID_RESET_ACK 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_START_ACK 1
#define MSG_ID_STOP_ACK 2
#define MSG_ID_UPDATE_ACK 3
#define MSG_ID_OUTPUT_P 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_OUTPUT_T 5
#define MSG_ID_OUTPUT_S 6
#define MSG_ID_OUTPUT_V 7
#define MSG_ID_SNAPSHOT_DONE 8
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_STATS_AEC 9
#define MSG_ID_STATS_AF 10
#define MSG_ID_STATS_AWB 11
#define MSG_ID_STATS_RS 12
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_STATS_CS 13
#define MSG_ID_STATS_IHIST 14
#define MSG_ID_STATS_SKIN 15
#define MSG_ID_EPOCH1 16
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_EPOCH2 17
#define MSG_ID_SYNC_TIMER0_DONE 18
#define MSG_ID_SYNC_TIMER1_DONE 19
#define MSG_ID_SYNC_TIMER2_DONE 20
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_ASYNC_TIMER0_DONE 21
#define MSG_ID_ASYNC_TIMER1_DONE 22
#define MSG_ID_ASYNC_TIMER2_DONE 23
#define MSG_ID_ASYNC_TIMER3_DONE 24
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_AE_OVERFLOW 25
#define MSG_ID_AF_OVERFLOW 26
#define MSG_ID_AWB_OVERFLOW 27
#define MSG_ID_RS_OVERFLOW 28
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_CS_OVERFLOW 29
#define MSG_ID_IHIST_OVERFLOW 30
#define MSG_ID_SKIN_OVERFLOW 31
#define MSG_ID_AXI_ERROR 32
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_CAMIF_OVERFLOW 33
#define MSG_ID_VIOLATION 34
#define MSG_ID_CAMIF_ERROR 35
#define MSG_ID_BUS_OVERFLOW 36
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_SOF_ACK 37
#define MSG_ID_STOP_REC_ACK 38
#define MSG_ID_STATS_AWB_AEC 39
#define MSG_ID_OUTPUT_PRIMARY 40
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_OUTPUT_SECONDARY 41
#define MSG_ID_STATS_COMPOSITE 42
#define MSG_ID_OUTPUT_TERTIARY1 43
#define MSG_ID_STOP_LS_ACK 44
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_OUTPUT_TERTIARY2 45
#define MSG_ID_STATS_BG 46
#define MSG_ID_STATS_BF 47
#define MSG_ID_STATS_BHIST 48
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSG_ID_RDI0_UPDATE_ACK 49
#define MSG_ID_RDI1_UPDATE_ACK 50
#define MSG_ID_RDI2_UPDATE_ACK 51
#define VFE_CMD_DUMMY_0 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_SET_CLK 1
#define VFE_CMD_RESET 2
#define VFE_CMD_START 3
#define VFE_CMD_TEST_GEN_START 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_OPERATION_CFG 5
#define VFE_CMD_AXI_OUT_CFG 6
#define VFE_CMD_CAMIF_CFG 7
#define VFE_CMD_AXI_INPUT_CFG 8
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_BLACK_LEVEL_CFG 9
#define VFE_CMD_MESH_ROLL_OFF_CFG 10
#define VFE_CMD_DEMUX_CFG 11
#define VFE_CMD_FOV_CFG 12
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_MAIN_SCALER_CFG 13
#define VFE_CMD_WB_CFG 14
#define VFE_CMD_COLOR_COR_CFG 15
#define VFE_CMD_RGB_G_CFG 16
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_LA_CFG 17
#define VFE_CMD_CHROMA_EN_CFG 18
#define VFE_CMD_CHROMA_SUP_CFG 19
#define VFE_CMD_MCE_CFG 20
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_SK_ENHAN_CFG 21
#define VFE_CMD_ASF_CFG 22
#define VFE_CMD_S2Y_CFG 23
#define VFE_CMD_S2CbCr_CFG 24
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_CHROMA_SUBS_CFG 25
#define VFE_CMD_OUT_CLAMP_CFG 26
#define VFE_CMD_FRAME_SKIP_CFG 27
#define VFE_CMD_DUMMY_1 28
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_DUMMY_2 29
#define VFE_CMD_DUMMY_3 30
#define VFE_CMD_UPDATE 31
#define VFE_CMD_BL_LVL_UPDATE 32
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_DEMUX_UPDATE 33
#define VFE_CMD_FOV_UPDATE 34
#define VFE_CMD_MAIN_SCALER_UPDATE 35
#define VFE_CMD_WB_UPDATE 36
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_COLOR_COR_UPDATE 37
#define VFE_CMD_RGB_G_UPDATE 38
#define VFE_CMD_LA_UPDATE 39
#define VFE_CMD_CHROMA_EN_UPDATE 40
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_CHROMA_SUP_UPDATE 41
#define VFE_CMD_MCE_UPDATE 42
#define VFE_CMD_SK_ENHAN_UPDATE 43
#define VFE_CMD_S2CbCr_UPDATE 44
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_S2Y_UPDATE 45
#define VFE_CMD_ASF_UPDATE 46
#define VFE_CMD_FRAME_SKIP_UPDATE 47
#define VFE_CMD_CAMIF_FRAME_UPDATE 48
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STATS_AF_UPDATE 49
#define VFE_CMD_STATS_AE_UPDATE 50
#define VFE_CMD_STATS_AWB_UPDATE 51
#define VFE_CMD_STATS_RS_UPDATE 52
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STATS_CS_UPDATE 53
#define VFE_CMD_STATS_SKIN_UPDATE 54
#define VFE_CMD_STATS_IHIST_UPDATE 55
#define VFE_CMD_DUMMY_4 56
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_EPOCH1_ACK 57
#define VFE_CMD_EPOCH2_ACK 58
#define VFE_CMD_START_RECORDING 59
#define VFE_CMD_STOP_RECORDING 60
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_DUMMY_5 61
#define VFE_CMD_DUMMY_6 62
#define VFE_CMD_CAPTURE 63
#define VFE_CMD_DUMMY_7 64
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STOP 65
#define VFE_CMD_GET_HW_VERSION 66
#define VFE_CMD_GET_FRAME_SKIP_COUNTS 67
#define VFE_CMD_OUTPUT1_BUFFER_ENQ 68
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_OUTPUT2_BUFFER_ENQ 69
#define VFE_CMD_OUTPUT3_BUFFER_ENQ 70
#define VFE_CMD_JPEG_OUT_BUF_ENQ 71
#define VFE_CMD_RAW_OUT_BUF_ENQ 72
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_RAW_IN_BUF_ENQ 73
#define VFE_CMD_STATS_AF_ENQ 74
#define VFE_CMD_STATS_AE_ENQ 75
#define VFE_CMD_STATS_AWB_ENQ 76
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STATS_RS_ENQ 77
#define VFE_CMD_STATS_CS_ENQ 78
#define VFE_CMD_STATS_SKIN_ENQ 79
#define VFE_CMD_STATS_IHIST_ENQ 80
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_DUMMY_8 81
#define VFE_CMD_JPEG_ENC_CFG 82
#define VFE_CMD_DUMMY_9 83
#define VFE_CMD_STATS_AF_START 84
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STATS_AF_STOP 85
#define VFE_CMD_STATS_AE_START 86
#define VFE_CMD_STATS_AE_STOP 87
#define VFE_CMD_STATS_AWB_START 88
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STATS_AWB_STOP 89
#define VFE_CMD_STATS_RS_START 90
#define VFE_CMD_STATS_RS_STOP 91
#define VFE_CMD_STATS_CS_START 92
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STATS_CS_STOP 93
#define VFE_CMD_STATS_SKIN_START 94
#define VFE_CMD_STATS_SKIN_STOP 95
#define VFE_CMD_STATS_IHIST_START 96
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STATS_IHIST_STOP 97
#define VFE_CMD_DUMMY_10 98
#define VFE_CMD_SYNC_TIMER_SETTING 99
#define VFE_CMD_ASYNC_TIMER_SETTING 100
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_LIVESHOT 101
#define VFE_CMD_LA_SETUP 102
#define VFE_CMD_LINEARIZATION_CFG 103
#define VFE_CMD_DEMOSAICV3 104
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_DEMOSAICV3_ABCC_CFG 105
#define VFE_CMD_DEMOSAICV3_DBCC_CFG 106
#define VFE_CMD_DEMOSAICV3_DBPC_CFG 107
#define VFE_CMD_DEMOSAICV3_ABF_CFG 108
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_DEMOSAICV3_ABCC_UPDATE 109
#define VFE_CMD_DEMOSAICV3_DBCC_UPDATE 110
#define VFE_CMD_DEMOSAICV3_DBPC_UPDATE 111
#define VFE_CMD_XBAR_CFG 112
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_MODULE_CFG 113
#define VFE_CMD_ZSL 114
#define VFE_CMD_LINEARIZATION_UPDATE 115
#define VFE_CMD_DEMOSAICV3_ABF_UPDATE 116
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_CLF_CFG 117
#define VFE_CMD_CLF_LUMA_UPDATE 118
#define VFE_CMD_CLF_CHROMA_UPDATE 119
#define VFE_CMD_PCA_ROLL_OFF_CFG 120
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_PCA_ROLL_OFF_UPDATE 121
#define VFE_CMD_GET_REG_DUMP 122
#define VFE_CMD_GET_LINEARIZATON_TABLE 123
#define VFE_CMD_GET_MESH_ROLLOFF_TABLE 124
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_GET_PCA_ROLLOFF_TABLE 125
#define VFE_CMD_GET_RGB_G_TABLE 126
#define VFE_CMD_GET_LA_TABLE 127
#define VFE_CMD_DEMOSAICV3_UPDATE 128
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_ACTIVE_REGION_CFG 129
#define VFE_CMD_COLOR_PROCESSING_CONFIG 130
#define VFE_CMD_STATS_WB_AEC_CONFIG 131
#define VFE_CMD_STATS_WB_AEC_UPDATE 132
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_Y_GAMMA_CONFIG 133
#define VFE_CMD_SCALE_OUTPUT1_CONFIG 134
#define VFE_CMD_SCALE_OUTPUT2_CONFIG 135
#define VFE_CMD_CAPTURE_RAW 136
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STOP_LIVESHOT 137
#define VFE_CMD_RECONFIG_VFE 138
#define VFE_CMD_STATS_REQBUF 139
#define VFE_CMD_STATS_ENQUEUEBUF 140
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STATS_FLUSH_BUFQ 141
#define VFE_CMD_STATS_UNREGBUF 142
#define VFE_CMD_STATS_BG_START 143
#define VFE_CMD_STATS_BG_STOP 144
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_STATS_BF_START 145
#define VFE_CMD_STATS_BF_STOP 146
#define VFE_CMD_STATS_BHIST_START 147
#define VFE_CMD_STATS_BHIST_STOP 148
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_RESET_2 149
#define VFE_CMD_FOV_ENC_CFG 150
#define VFE_CMD_FOV_VIEW_CFG 151
#define VFE_CMD_FOV_ENC_UPDATE 152
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_FOV_VIEW_UPDATE 153
#define VFE_CMD_SCALER_ENC_CFG 154
#define VFE_CMD_SCALER_VIEW_CFG 155
#define VFE_CMD_SCALER_ENC_UPDATE 156
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_SCALER_VIEW_UPDATE 157
#define VFE_CMD_COLORXFORM_ENC_CFG 158
#define VFE_CMD_COLORXFORM_VIEW_CFG 159
#define VFE_CMD_COLORXFORM_ENC_UPDATE 160
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_CMD_COLORXFORM_VIEW_UPDATE 161
#define VFE_CMD_TEST_GEN_CFG 162
struct msm_isp_cmd {
int32_t id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint16_t length;
void *value;
};
#define VPE_CMD_DUMMY_0 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VPE_CMD_INIT 1
#define VPE_CMD_DEINIT 2
#define VPE_CMD_ENABLE 3
#define VPE_CMD_DISABLE 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VPE_CMD_RESET 5
#define VPE_CMD_FLUSH 6
#define VPE_CMD_OPERATION_MODE_CFG 7
#define VPE_CMD_INPUT_PLANE_CFG 8
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VPE_CMD_OUTPUT_PLANE_CFG 9
#define VPE_CMD_INPUT_PLANE_UPDATE 10
#define VPE_CMD_SCALE_CFG_TYPE 11
#define VPE_CMD_ZOOM 13
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VPE_CMD_MAX 14
#define MSM_PP_CMD_TYPE_NOT_USED 0
#define MSM_PP_CMD_TYPE_VPE 1
#define MSM_PP_CMD_TYPE_MCTL 2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MCTL_CMD_DUMMY_0 0
#define MCTL_CMD_GET_FRAME_BUFFER 1
#define MCTL_CMD_PUT_FRAME_BUFFER 2
#define MCTL_CMD_DIVERT_FRAME_PP_PATH 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MCTL_PP_EVENT_NOTUSED 0
#define MCTL_PP_EVENT_CMD_ACK 1
#define VPE_OPERATION_MODE_CFG_LEN 4
#define VPE_INPUT_PLANE_CFG_LEN 24
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VPE_OUTPUT_PLANE_CFG_LEN 20
#define VPE_INPUT_PLANE_UPDATE_LEN 12
#define VPE_SCALER_CONFIG_LEN 260
#define VPE_DIS_OFFSET_CFG_LEN 12
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define CAPTURE_WIDTH 1280
#define IMEM_Y_SIZE (CAPTURE_WIDTH*16)
#define IMEM_CBCR_SIZE (CAPTURE_WIDTH*8)
#define IMEM_Y_PING_OFFSET 0x2E000000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IMEM_CBCR_PING_OFFSET (IMEM_Y_PING_OFFSET + IMEM_Y_SIZE)
#define IMEM_Y_PONG_OFFSET (IMEM_CBCR_PING_OFFSET + IMEM_CBCR_SIZE)
#define IMEM_CBCR_PONG_OFFSET (IMEM_Y_PONG_OFFSET + IMEM_Y_SIZE)
struct msm_vpe_op_mode_cfg {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint8_t op_mode_cfg[VPE_OPERATION_MODE_CFG_LEN];
};
struct msm_vpe_input_plane_cfg {
uint8_t input_plane_cfg[VPE_INPUT_PLANE_CFG_LEN];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct msm_vpe_output_plane_cfg {
uint8_t output_plane_cfg[VPE_OUTPUT_PLANE_CFG_LEN];
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_vpe_input_plane_update_cfg {
uint8_t input_plane_update_cfg[VPE_INPUT_PLANE_UPDATE_LEN];
};
struct msm_vpe_scaler_cfg {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint8_t scaler_cfg[VPE_SCALER_CONFIG_LEN];
};
struct msm_vpe_flush_frame_buffer {
uint32_t src_buf_handle;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t dest_buf_handle;
int path;
};
struct msm_mctl_pp_frame_buffer {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t buf_handle;
int path;
};
struct msm_mctl_pp_divert_pp {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
int path;
int enable;
};
struct msm_vpe_clock_rate {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t rate;
};
struct msm_pp_crop {
uint32_t src_x;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t src_y;
uint32_t src_w;
uint32_t src_h;
uint32_t dst_x;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t dst_y;
uint32_t dst_w;
uint32_t dst_h;
uint8_t update_flag;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#define MSM_MCTL_PP_VPE_FRAME_ACK (1<<0)
#define MSM_MCTL_PP_VPE_FRAME_TO_APP (1<<1)
struct msm_mctl_pp_frame_cmd {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t cookie;
uint8_t vpe_output_action;
uint32_t src_buf_handle;
uint32_t dest_buf_handle;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_pp_crop crop;
int path;
};
#define VFE_OUTPUTS_MAIN_AND_PREVIEW BIT(0)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_OUTPUTS_MAIN_AND_VIDEO BIT(1)
#define VFE_OUTPUTS_MAIN_AND_THUMB BIT(2)
#define VFE_OUTPUTS_THUMB_AND_MAIN BIT(3)
#define VFE_OUTPUTS_PREVIEW_AND_VIDEO BIT(4)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_OUTPUTS_VIDEO_AND_PREVIEW BIT(5)
#define VFE_OUTPUTS_PREVIEW BIT(6)
#define VFE_OUTPUTS_VIDEO BIT(7)
#define VFE_OUTPUTS_RAW BIT(8)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define VFE_OUTPUTS_JPEG_AND_THUMB BIT(9)
#define VFE_OUTPUTS_THUMB_AND_JPEG BIT(10)
#define VFE_OUTPUTS_RDI0 BIT(11)
#define VFE_OUTPUTS_RDI1 BIT(12)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_frame_info {
uint32_t inst_handle;
uint32_t path;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#endif

View File

@@ -1,106 +0,0 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __LINUX_MSM_MERCURY_H
#define __LINUX_MSM_MERCURY_H
#include <linux/types.h>
#include <linux/ioctl.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_MERCURY_HW_VERSION_REG 0x0004
#define OUTPUT_H2V1 0
#define OUTPUT_H2V2 1
#define OUTPUT_BYTE 6
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_MERCURY_MODE_REALTIME_ENCODE 0
#define MSM_MERCURY_MODE_OFFLINE_ENCODE 1
#define MSM_MERCURY_MODE_REALTIME_ROTATION 2
#define MSM_MERCURY_MODE_OFFLINE_ROTATION 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_MERCURY_EVT_RESET 1
#define MSM_MERCURY_EVT_FRAMEDONE 2
#define MSM_MERCURY_EVT_ERR 3
#define MSM_MERCURY_EVT_UNBLOCK 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_MERCURY_HW_CMD_TYPE_READ 0
#define MSM_MERCURY_HW_CMD_TYPE_WRITE 1
#define MSM_MERCURY_HW_CMD_TYPE_WRITE_OR 2
#define MSM_MERCURY_HW_CMD_TYPE_UWAIT 3
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_MERCURY_HW_CMD_TYPE_MWAIT 4
#define MSM_MERCURY_HW_CMD_TYPE_MDELAY 5
#define MSM_MERCURY_HW_CMD_TYPE_UDELAY 6
#define MSM_MCR_IOCTL_MAGIC 'g'
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_MCR_IOCTL_GET_HW_VERSION _IOW(MSM_MCR_IOCTL_MAGIC, 1, struct msm_mercury_hw_cmd *)
#define MSM_MCR_IOCTL_RESET _IOW(MSM_MCR_IOCTL_MAGIC, 2, struct msm_mercury_ctrl_cmd *)
#define MSM_MCR_IOCTL_STOP _IOW(MSM_MCR_IOCTL_MAGIC, 3, struct msm_mercury_hw_cmds *)
#define MSM_MCR_IOCTL_START _IOW(MSM_MCR_IOCTL_MAGIC, 4, struct msm_mercury_hw_cmds *)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_MCR_IOCTL_INPUT_BUF_CFG _IOW(MSM_MCR_IOCTL_MAGIC, 5, struct msm_mercury_buf *)
#define MSM_MCR_IOCTL_INPUT_GET _IOW(MSM_MCR_IOCTL_MAGIC, 6, struct msm_mercury_buf *)
#define MSM_MCR_IOCTL_INPUT_GET_UNBLOCK _IOW(MSM_MCR_IOCTL_MAGIC, 7, int)
#define MSM_MCR_IOCTL_OUTPUT_BUF_CFG _IOW(MSM_MCR_IOCTL_MAGIC, 8, struct msm_mercury_buf *)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_MCR_IOCTL_OUTPUT_GET _IOW(MSM_MCR_IOCTL_MAGIC, 9, struct msm_mercury_buf *)
#define MSM_MCR_IOCTL_OUTPUT_GET_UNBLOCK _IOW(MSM_MCR_IOCTL_MAGIC, 10, int)
#define MSM_MCR_IOCTL_EVT_GET _IOW(MSM_MCR_IOCTL_MAGIC, 11, struct msm_mercury_ctrl_cmd *)
#define MSM_MCR_IOCTL_EVT_GET_UNBLOCK _IOW(MSM_MCR_IOCTL_MAGIC, 12, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MSM_MCR_IOCTL_HW_CMD _IOW(MSM_MCR_IOCTL_MAGIC, 13, struct msm_mercury_hw_cmd *)
#define MSM_MCR_IOCTL_HW_CMDS _IOW(MSM_MCR_IOCTL_MAGIC, 14, struct msm_mercury_hw_cmds *)
#define MSM_MCR_IOCTL_TEST_DUMP_REGION _IOW(MSM_MCR_IOCTL_MAGIC, 15, unsigned long)
struct msm_mercury_ctrl_cmd {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t type;
uint32_t len;
void *value;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_mercury_buf {
uint32_t type;
int fd;
void *vaddr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t y_off;
uint32_t y_len;
uint32_t framedone_len;
uint32_t cbcr_off;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t cbcr_len;
uint32_t num_of_mcu_rows;
uint32_t offset;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_mercury_hw_cmd {
uint32_t type:4;
uint32_t n:12;
uint32_t offset:16;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t mask;
union {
uint32_t data;
uint32_t *pdata;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
};
struct msm_mercury_hw_cmds {
uint32_t m;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct msm_mercury_hw_cmd hw_cmd[1];
};
#endif

View File

@@ -0,0 +1,115 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __COMPRESS_OFFLOAD_H
#define __COMPRESS_OFFLOAD_H
#include <linux/types.h>
#include <sound/asound.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#include <sound/compress_params.h>
#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 1)
struct snd_compressed_buffer {
__u32 fragment_size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 fragments;
};
struct snd_compr_params {
struct snd_compressed_buffer buffer;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct snd_codec codec;
__u8 no_wake_mode;
};
struct snd_compr_tstamp {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 byte_offset;
__u32 copied_total;
snd_pcm_uframes_t pcm_frames;
snd_pcm_uframes_t pcm_io_frames;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 sampling_rate;
uint64_t timestamp;
};
struct snd_compr_avail {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u64 avail;
struct snd_compr_tstamp tstamp;
};
enum snd_compr_direction {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
SND_COMPRESS_PLAYBACK = 0,
SND_COMPRESS_CAPTURE
};
struct snd_compr_caps {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 num_codecs;
__u32 direction;
__u32 min_fragment_size;
__u32 max_fragment_size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 min_fragments;
__u32 max_fragments;
__u32 codecs[MAX_NUM_CODECS];
__u32 reserved[11];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct snd_compr_codec_caps {
__u32 codec;
__u32 num_descriptors;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS];
};
enum {
SNDRV_COMPRESS_ENCODER_PADDING = 1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
SNDRV_COMPRESS_ENCODER_DELAY = 2,
};
struct snd_compr_metadata {
__u32 key;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 value[8];
};
struct snd_compr_audio_info {
uint32_t frame_size;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
uint32_t reserved[15];
};
#define SNDRV_COMPRESS_IOCTL_VERSION _IOR('C', 0x00, int)
#define SNDRV_COMPRESS_GET_CAPS _IOWR('C', 0x10, struct snd_compr_caps)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11, struct snd_compr_codec_caps)
#define SNDRV_COMPRESS_SET_PARAMS _IOW('C', 0x12, struct snd_compr_params)
#define SNDRV_COMPRESS_GET_PARAMS _IOR('C', 0x13, struct snd_codec)
#define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14, struct snd_compr_metadata)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SNDRV_COMPRESS_GET_METADATA _IOWR('C', 0x15, struct snd_compr_metadata)
#define SNDRV_COMPRESS_TSTAMP _IOR('C', 0x20, struct snd_compr_tstamp)
#define SNDRV_COMPRESS_AVAIL _IOR('C', 0x21, struct snd_compr_avail)
#define SNDRV_COMPRESS_PAUSE _IO('C', 0x30)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SNDRV_COMPRESS_RESUME _IO('C', 0x31)
#define SNDRV_COMPRESS_START _IO('C', 0x32)
#define SNDRV_COMPRESS_STOP _IO('C', 0x33)
#define SNDRV_COMPRESS_DRAIN _IO('C', 0x34)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SNDRV_COMPRESS_NEXT_TRACK _IO('C', 0x35)
#define SNDRV_COMPRESS_PARTIAL_DRAIN _IO('C', 0x36)
#define SND_COMPR_TRIGGER_DRAIN 7
#define SND_COMPR_TRIGGER_NEXT_TRACK 8
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_COMPR_TRIGGER_PARTIAL_DRAIN 9
#endif

View File

@@ -0,0 +1,265 @@
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef __SND_COMPRESS_PARAMS_H
#define __SND_COMPRESS_PARAMS_H
#define MAX_NUM_CODECS 32
#define MAX_NUM_CODEC_DESCRIPTORS 32
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define MAX_NUM_BITRATES 32
#define MAX_NUM_FRAMES_PER_BUFFER 1
#define COMPRESSED_META_DATA_MODE 0x10
#define META_DATA_LEN_BYTES 36
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define Q6_AC3_DECODER 0x00010BF6
#define Q6_EAC3_DECODER 0x00010C3C
#define Q6_DTS 0x00010D88
#define Q6_DTS_LBR 0x00010DBB
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOCODEC_PCM ((__u32) 0x00000001)
#define SND_AUDIOCODEC_MP3 ((__u32) 0x00000002)
#define SND_AUDIOCODEC_AMR ((__u32) 0x00000003)
#define SND_AUDIOCODEC_AMRWB ((__u32) 0x00000004)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOCODEC_AMRWBPLUS ((__u32) 0x00000005)
#define SND_AUDIOCODEC_AAC ((__u32) 0x00000006)
#define SND_AUDIOCODEC_WMA ((__u32) 0x00000007)
#define SND_AUDIOCODEC_REAL ((__u32) 0x00000008)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOCODEC_VORBIS ((__u32) 0x00000009)
#define SND_AUDIOCODEC_FLAC ((__u32) 0x0000000A)
#define SND_AUDIOCODEC_IEC61937 ((__u32) 0x0000000B)
#define SND_AUDIOCODEC_G723_1 ((__u32) 0x0000000C)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOCODEC_G729 ((__u32) 0x0000000D)
#define SND_AUDIOCODEC_AC3 ((__u32) 0x0000000E)
#define SND_AUDIOCODEC_DTS ((__u32) 0x0000000F)
#define SND_AUDIOCODEC_AC3_PASS_THROUGH ((__u32) 0x00000010)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOCODEC_WMA_PRO ((__u32) 0x00000011)
#define SND_AUDIOCODEC_DTS_PASS_THROUGH ((__u32) 0x00000012)
#define SND_AUDIOCODEC_DTS_LBR ((__u32) 0x00000013)
#define SND_AUDIOCODEC_DTS_TRANSCODE_LOOPBACK ((__u32) 0x00000014)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_DTS_TRANSCODE_LOOPBACK
#define SND_AUDIOPROFILE_PCM ((__u32) 0x00000001)
#define SND_AUDIOCHANMODE_MP3_MONO ((__u32) 0x00000001)
#define SND_AUDIOCHANMODE_MP3_STEREO ((__u32) 0x00000002)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOCHANMODE_MP3_JOINTSTEREO ((__u32) 0x00000004)
#define SND_AUDIOCHANMODE_MP3_DUAL ((__u32) 0x00000008)
#define SND_AUDIOPROFILE_AMR ((__u32) 0x00000001)
#define SND_AUDIOMODE_AMR_DTX_OFF ((__u32) 0x00000001)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_AMR_VAD1 ((__u32) 0x00000002)
#define SND_AUDIOMODE_AMR_VAD2 ((__u32) 0x00000004)
#define SND_AUDIOSTREAMFORMAT_UNDEFINED ((__u32) 0x00000000)
#define SND_AUDIOSTREAMFORMAT_CONFORMANCE ((__u32) 0x00000001)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOSTREAMFORMAT_IF1 ((__u32) 0x00000002)
#define SND_AUDIOSTREAMFORMAT_IF2 ((__u32) 0x00000004)
#define SND_AUDIOSTREAMFORMAT_FSF ((__u32) 0x00000008)
#define SND_AUDIOSTREAMFORMAT_RTPPAYLOAD ((__u32) 0x00000010)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOSTREAMFORMAT_ITU ((__u32) 0x00000020)
#define SND_AUDIOPROFILE_AMRWB ((__u32) 0x00000001)
#define SND_AUDIOMODE_AMRWB_DTX_OFF ((__u32) 0x00000001)
#define SND_AUDIOMODE_AMRWB_VAD1 ((__u32) 0x00000002)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_AMRWB_VAD2 ((__u32) 0x00000004)
#define SND_AUDIOPROFILE_AMRWBPLUS ((__u32) 0x00000001)
#define SND_AUDIOPROFILE_AAC ((__u32) 0x00000001)
#define SND_AUDIOMODE_AAC_MAIN ((__u32) 0x00000001)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_AAC_LC ((__u32) 0x00000002)
#define SND_AUDIOMODE_AAC_SSR ((__u32) 0x00000004)
#define SND_AUDIOMODE_AAC_LTP ((__u32) 0x00000008)
#define SND_AUDIOMODE_AAC_HE ((__u32) 0x00000010)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_AAC_SCALABLE ((__u32) 0x00000020)
#define SND_AUDIOMODE_AAC_ERLC ((__u32) 0x00000040)
#define SND_AUDIOMODE_AAC_LD ((__u32) 0x00000080)
#define SND_AUDIOMODE_AAC_HE_PS ((__u32) 0x00000100)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_AAC_HE_MPS ((__u32) 0x00000200)
#define SND_AUDIOSTREAMFORMAT_MP2ADTS ((__u32) 0x00000001)
#define SND_AUDIOSTREAMFORMAT_MP4ADTS ((__u32) 0x00000002)
#define SND_AUDIOSTREAMFORMAT_MP4LOAS ((__u32) 0x00000004)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOSTREAMFORMAT_MP4LATM ((__u32) 0x00000008)
#define SND_AUDIOSTREAMFORMAT_ADIF ((__u32) 0x00000010)
#define SND_AUDIOSTREAMFORMAT_MP4FF ((__u32) 0x00000020)
#define SND_AUDIOSTREAMFORMAT_RAW ((__u32) 0x00000040)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOPROFILE_WMA7 ((__u32) 0x00000001)
#define SND_AUDIOPROFILE_WMA8 ((__u32) 0x00000002)
#define SND_AUDIOPROFILE_WMA9 ((__u32) 0x00000004)
#define SND_AUDIOPROFILE_WMA10 ((__u32) 0x00000008)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_WMA_LEVEL1 ((__u32) 0x00000001)
#define SND_AUDIOMODE_WMA_LEVEL2 ((__u32) 0x00000002)
#define SND_AUDIOMODE_WMA_LEVEL3 ((__u32) 0x00000004)
#define SND_AUDIOMODE_WMA_LEVEL4 ((__u32) 0x00000008)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_WMAPRO_LEVELM0 ((__u32) 0x00000010)
#define SND_AUDIOMODE_WMAPRO_LEVELM1 ((__u32) 0x00000020)
#define SND_AUDIOMODE_WMAPRO_LEVELM2 ((__u32) 0x00000040)
#define SND_AUDIOMODE_WMAPRO_LEVELM3 ((__u32) 0x00000080)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOSTREAMFORMAT_WMA_ASF ((__u32) 0x00000001)
#define SND_AUDIOSTREAMFORMAT_WMA_NOASF_HDR ((__u32) 0x00000002)
#define SND_AUDIOPROFILE_REALAUDIO ((__u32) 0x00000001)
#define SND_AUDIOMODE_REALAUDIO_G2 ((__u32) 0x00000001)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_REALAUDIO_8 ((__u32) 0x00000002)
#define SND_AUDIOMODE_REALAUDIO_10 ((__u32) 0x00000004)
#define SND_AUDIOMODE_REALAUDIO_SURROUND ((__u32) 0x00000008)
#define SND_AUDIOPROFILE_VORBIS ((__u32) 0x00000001)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_VORBIS ((__u32) 0x00000001)
#define SND_AUDIOPROFILE_FLAC ((__u32) 0x00000001)
#define SND_AUDIOMODE_FLAC_LEVEL0 ((__u32) 0x00000001)
#define SND_AUDIOMODE_FLAC_LEVEL1 ((__u32) 0x00000002)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_FLAC_LEVEL2 ((__u32) 0x00000004)
#define SND_AUDIOMODE_FLAC_LEVEL3 ((__u32) 0x00000008)
#define SND_AUDIOMODE_FLAC_LEVEL4 ((__u32) 0x00000010)
#define SND_AUDIOMODE_FLAC_LEVEL5 ((__u32) 0x00000020)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_FLAC_LEVEL6 ((__u32) 0x00000040)
#define SND_AUDIOMODE_FLAC_LEVEL7 ((__u32) 0x00000080)
#define SND_AUDIOMODE_FLAC_LEVEL8 ((__u32) 0x00000100)
#define SND_AUDIOSTREAMFORMAT_FLAC ((__u32) 0x00000001)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOSTREAMFORMAT_FLAC_OGG ((__u32) 0x00000002)
#define SND_AUDIOPROFILE_IEC61937 ((__u32) 0x00000001)
#define SND_AUDIOPROFILE_IEC61937_SPDIF ((__u32) 0x00000002)
#define SND_AUDIOMODE_IEC_REF_STREAM_HEADER ((__u32) 0x00000000)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_IEC_LPCM ((__u32) 0x00000001)
#define SND_AUDIOMODE_IEC_AC3 ((__u32) 0x00000002)
#define SND_AUDIOMODE_IEC_MPEG1 ((__u32) 0x00000004)
#define SND_AUDIOMODE_IEC_MP3 ((__u32) 0x00000008)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_IEC_MPEG2 ((__u32) 0x00000010)
#define SND_AUDIOMODE_IEC_AACLC ((__u32) 0x00000020)
#define SND_AUDIOMODE_IEC_DTS ((__u32) 0x00000040)
#define SND_AUDIOMODE_IEC_ATRAC ((__u32) 0x00000080)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_IEC_SACD ((__u32) 0x00000100)
#define SND_AUDIOMODE_IEC_EAC3 ((__u32) 0x00000200)
#define SND_AUDIOMODE_IEC_DTS_HD ((__u32) 0x00000400)
#define SND_AUDIOMODE_IEC_MLP ((__u32) 0x00000800)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_IEC_DST ((__u32) 0x00001000)
#define SND_AUDIOMODE_IEC_WMAPRO ((__u32) 0x00002000)
#define SND_AUDIOMODE_IEC_REF_CXT ((__u32) 0x00004000)
#define SND_AUDIOMODE_IEC_HE_AAC ((__u32) 0x00008000)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_IEC_HE_AAC2 ((__u32) 0x00010000)
#define SND_AUDIOMODE_IEC_MPEG_SURROUND ((__u32) 0x00020000)
#define SND_AUDIOPROFILE_G723_1 ((__u32) 0x00000001)
#define SND_AUDIOMODE_G723_1_ANNEX_A ((__u32) 0x00000001)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_G723_1_ANNEX_B ((__u32) 0x00000002)
#define SND_AUDIOMODE_G723_1_ANNEX_C ((__u32) 0x00000004)
#define SND_AUDIOPROFILE_G729 ((__u32) 0x00000001)
#define SND_AUDIOMODE_G729_ANNEX_A ((__u32) 0x00000001)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SND_AUDIOMODE_G729_ANNEX_B ((__u32) 0x00000002)
#define SND_RATECONTROLMODE_CONSTANTBITRATE ((__u32) 0x00000001)
#define SND_RATECONTROLMODE_VARIABLEBITRATE ((__u32) 0x00000002)
struct snd_enc_wma {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 super_block_align;
__u32 bits_per_sample;
__u32 channelmask;
__u32 encodeopt;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 encodeopt1;
__u32 encodeopt2;
};
struct snd_enc_vorbis {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__s32 quality;
__u32 managed;
__u32 max_bit_rate;
__u32 min_bit_rate;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 downmix;
};
struct snd_enc_real {
__u32 quant_bits;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 start_region;
__u32 num_regions;
};
struct snd_enc_flac {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 num;
__u32 gain;
};
struct snd_enc_generic {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 bw;
__s32 reserved[15];
};
union snd_codec_options {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct snd_enc_wma wma;
struct snd_enc_vorbis vorbis;
struct snd_enc_real real;
struct snd_enc_flac flac;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct snd_enc_generic generic;
};
struct snd_codec_desc {
__u32 max_ch;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 sample_rates;
__u32 bit_rate[MAX_NUM_BITRATES];
__u32 num_bitrates;
__u32 rate_control;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 profiles;
__u32 modes;
__u32 formats;
__u32 min_buffer;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 reserved[15];
};
struct snd_codec {
__u32 id;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 ch_in;
__u32 ch_out;
__u32 sample_rate;
__u32 bit_rate;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 rate_control;
__u32 profile;
__u32 level;
__u32 ch_mode;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
__u32 format;
__u32 align;
union snd_codec_options options;
__u32 reserved[3];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#endif

View File

@@ -16,33 +16,34 @@
***
****************************************************************************
****************************************************************************/
#ifndef _MSM_HW3D_H_
#define _MSM_HW3D_H_
#include <linux/fs.h>
#include <linux/ioctl.h>
#ifndef _UAPILINUX_KEXEC_H
#define _UAPILINUX_KEXEC_H
#include <linux/types.h>
#define KEXEC_ON_CRASH 0x00000001
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct hw3d_region;
#define HW3D_IOCTL_MAGIC 'h'
#define HW3D_WAIT_FOR_REVOKE _IO(HW3D_IOCTL_MAGIC, 0x80)
#define HW3D_WAIT_FOR_INTERRUPT _IO(HW3D_IOCTL_MAGIC, 0x81)
#define KEXEC_PRESERVE_CONTEXT 0x00000002
#define KEXEC_ARCH_MASK 0xffff0000
#define KEXEC_ARCH_DEFAULT ( 0 << 16)
#define KEXEC_ARCH_386 ( 3 << 16)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define HW3D_GET_REGIONS _IOR(HW3D_IOCTL_MAGIC, 0x82, struct hw3d_region *)
#define HW3D_REGION_OFFSET(id) ((((uint32_t)(id)) & 0xf) << 28)
#define HW3D_REGION_ID(addr) (((uint32_t)(addr) >> 28) & 0xf)
#define HW3D_OFFSET_IN_REGION(addr) ((uint32_t)(addr) & ~(0xfUL << 28))
#define KEXEC_ARCH_X86_64 (62 << 16)
#define KEXEC_ARCH_PPC (20 << 16)
#define KEXEC_ARCH_PPC64 (21 << 16)
#define KEXEC_ARCH_IA_64 (50 << 16)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum {
HW3D_EBI = 0,
HW3D_SMI = 1,
HW3D_REGS = 2,
#define KEXEC_ARCH_ARM (40 << 16)
#define KEXEC_ARCH_S390 (22 << 16)
#define KEXEC_ARCH_SH (42 << 16)
#define KEXEC_ARCH_MIPS_LE (10 << 16)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
HW3D_NUM_REGIONS = HW3D_REGS + 1,
#define KEXEC_ARCH_MIPS ( 8 << 16)
#define KEXEC_SEGMENT_MAX 16
struct kexec_segment {
const void *buf;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
size_t bufsz;
const void *mem;
size_t memsz;
};
struct hw3d_region {
unsigned long phys;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
unsigned long map_offset;
unsigned long len;
};
#endif
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */

View File

@@ -56,6 +56,7 @@
#include <sys/param.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "arpa_nameser.h"
@@ -69,6 +70,7 @@
#include <stdio.h>
#include <strings.h>
#include <syslog.h>
#include <unistd.h>
#ifndef LOG_AUTH
# define LOG_AUTH 0
@@ -80,6 +82,9 @@
#include <stdlib.h>
#include <string.h>
// This should be synchronized to ResponseCode.h
static const int DnsProxyQueryResult = 222;
static const char const AskedForGot[] =
"gethostby*.getanswer: asked for \"%s\", got \"%s\"";
@@ -121,7 +126,7 @@ static struct hostent *_gethtbyname2(const char *, int);
static int _dns_gethtbyaddr(void *, void *, va_list);
static int _dns_gethtbyname(void *, void *, va_list);
static struct hostent *gethostbyname_internal(const char *, int, res_state);
static struct hostent *gethostbyname_internal(const char *, int, res_state, const char *, int);
static const ns_src default_dns_files[] = {
{ NSSRC_FILES, NS_SUCCESS },
@@ -490,40 +495,136 @@ gethostbyname(const char *name)
assert(name != NULL);
/* try IPv6 first - if that fails do IPv4 */
if (res->options & RES_USE_INET6) {
hp = gethostbyname_internal(name, AF_INET6, res);
hp = gethostbyname_internal(name, AF_INET6, res, NULL, 0);
if (hp) {
__res_put_state(res);
return hp;
}
}
hp = gethostbyname_internal(name, AF_INET, res);
hp = gethostbyname_internal(name, AF_INET, res, NULL, 0);
__res_put_state(res);
return hp;
}
struct hostent *
gethostbyname2(const char *name, int af)
{
return android_gethostbynameforiface(name, af, NULL, 0);
}
struct hostent *
android_gethostbynameforiface(const char *name, int af, const char *iface, int mark)
{
struct hostent *hp;
res_state res = __res_get_state();
if (res == NULL)
return NULL;
hp = gethostbyname_internal(name, af, res);
hp = gethostbyname_internal(name, af, res, iface, mark);
__res_put_state(res);
return hp;
}
static FILE* android_open_proxy()
{
int sock;
const int one = 1;
struct sockaddr_un proxy_addr;
sock = socket(AF_UNIX, SOCK_STREAM, 0);
if (sock < 0) {
return NULL;
}
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
memset(&proxy_addr, 0, sizeof(proxy_addr));
proxy_addr.sun_family = AF_UNIX;
strlcpy(proxy_addr.sun_path, "/dev/socket/dnsproxyd", sizeof(proxy_addr.sun_path));
if (TEMP_FAILURE_RETRY(connect(sock,
(const struct sockaddr*) &proxy_addr,
sizeof(proxy_addr))) != 0) {
close(sock);
return NULL;
}
return fdopen(sock, "r+");
}
static struct hostent *
gethostbyname_internal(const char *name, int af, res_state res)
android_read_hostent(FILE* proxy)
{
uint32_t size;
char buf[4];
if (fread(buf, 1, sizeof(buf), proxy) != sizeof(buf)) return NULL;
/* This is reading serialized data from system/netd/DnsProxyListener.cpp
* and changes here need to be matched there */
int result_code = strtol(buf, NULL, 10);
if (result_code != DnsProxyQueryResult) {
fread(&size, 1, sizeof(size), proxy);
return NULL;
}
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
size = ntohl(size);
res_static rs = __res_get_static();
memset(&rs->host, 0, sizeof(rs->host));
char *ptr = rs->hostbuf;
if (fread(ptr, 1, size, proxy) != size) return NULL;
ptr += size;
rs->host.h_name = rs->hostbuf;
char **aliases = rs->host_aliases;
rs->host.h_aliases = rs->host_aliases;
while (1) {
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
size = ntohl(size);
if (size == 0) {
*aliases = NULL;
break;
}
if (fread(ptr, 1, size, proxy) != size) return NULL;
*aliases++ = ptr;
ptr += size;
}
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
rs->host.h_addrtype = ntohl(size);
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
rs->host.h_length = ntohl(size);
char **addrs = rs->h_addr_ptrs;
rs->host.h_addr_list = rs->h_addr_ptrs;
while (1) {
if (fread(&size, 1, sizeof(size), proxy) != sizeof(size)) return NULL;
size = ntohl(size);
if (size == 0) {
*addrs = NULL;
break;
}
if (fread(ptr, 1, size, proxy) != size) return NULL;
*addrs++ = ptr;
ptr += size;
}
return &rs->host;
}
static struct hostent *
gethostbyname_internal_real(const char *name, int af, res_state res)
{
const char *cp;
char *bp, *ep;
int size;
struct hostent *hp;
struct resolv_cache* cache;
res_static rs = __res_get_static();
res_static rs = __res_get_static();
static const ns_dtab dtab[] = {
NS_FILES_CB(_gethtbyname, NULL)
@@ -632,14 +733,85 @@ gethostbyname_internal(const char *name, int af, res_state res)
if (nsdispatch(&hp, dtab, NSDB_HOSTS, "gethostbyname",
default_dns_files, name, strlen(name), af) != NS_SUCCESS) {
return NULL;
}
}
h_errno = NETDB_SUCCESS;
return hp;
}
// very similar in proxy-ness to android_getaddrinfo_proxy
static struct hostent *
gethostbyname_internal(const char *name, int af, res_state res, const char *iface, int mark)
{
const char *cache_mode = getenv("ANDROID_DNS_MODE");
FILE* proxy = NULL;
struct hostent *result = NULL;
if (cache_mode != NULL && strcmp(cache_mode, "local") == 0) {
res_setiface(res, iface);
res_setmark(res, mark);
return gethostbyname_internal_real(name, af, res);
}
proxy = android_open_proxy();
if (proxy == NULL) goto exit;
/* This is writing to system/netd/DnsProxyListener.cpp and changes
* here need to be matched there */
if (fprintf(proxy, "gethostbyname %s %s %d",
iface == NULL ? "^" : iface,
name == NULL ? "^" : name,
af) < 0) {
goto exit;
}
if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
goto exit;
}
result = android_read_hostent(proxy);
exit:
if (proxy != NULL) {
fclose(proxy);
}
return result;
}
struct hostent *
gethostbyaddr(const void *addr,
socklen_t len, int af)
android_gethostbyaddrforiface_proxy(const void *addr,
socklen_t len, int af, const char* iface, int mark)
{
struct hostent *result = NULL;
FILE* proxy = android_open_proxy();
if (proxy == NULL) goto exit;
char buf[INET6_ADDRSTRLEN]; //big enough for IPv4 and IPv6
const char * addrStr = inet_ntop(af, addr, buf, sizeof(buf));
if (addrStr == NULL) goto exit;
if (fprintf(proxy, "gethostbyaddr %s %d %d %s",
addrStr, len, af, iface == NULL ? "^" : iface) < 0) {
goto exit;
}
if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
goto exit;
}
result = android_read_hostent(proxy);
exit:
if (proxy != NULL) {
fclose(proxy);
}
return result;
}
struct hostent *
android_gethostbyaddrforiface_real(const void *addr,
socklen_t len, int af, const char* iface, int mark)
{
const u_char *uaddr = (const u_char *)addr;
socklen_t size;
@@ -687,12 +859,31 @@ gethostbyaddr(const void *addr,
hp = NULL;
h_errno = NETDB_INTERNAL;
if (nsdispatch(&hp, dtab, NSDB_HOSTS, "gethostbyaddr",
default_dns_files, uaddr, len, af) != NS_SUCCESS)
default_dns_files, uaddr, len, af, iface, mark) != NS_SUCCESS)
return NULL;
h_errno = NETDB_SUCCESS;
return hp;
}
struct hostent *
android_gethostbyaddrforiface(const void *addr, socklen_t len, int af, const char* iface, int mark)
{
const char *cache_mode = getenv("ANDROID_DNS_MODE");
if (cache_mode == NULL || strcmp(cache_mode, "local") != 0) {
return android_gethostbyaddrforiface_proxy(addr, len, af, iface, mark);
} else {
return android_gethostbyaddrforiface_real(addr,len, af, iface, mark);
}
}
struct hostent *
gethostbyaddr(const void *addr, socklen_t len, int af)
{
return android_gethostbyaddrforiface(addr, len, af, NULL, 0);
}
static void
_sethtent(int f)
{
@@ -1124,6 +1315,8 @@ _dns_gethtbyaddr(void *rv, void *cb_data, va_list ap)
const unsigned char *uaddr;
int len, af, advance;
res_state res;
const char* iface;
int mark;
res_static rs = __res_get_static();
assert(rv != NULL);
@@ -1131,6 +1324,8 @@ _dns_gethtbyaddr(void *rv, void *cb_data, va_list ap)
uaddr = va_arg(ap, unsigned char *);
len = va_arg(ap, int);
af = va_arg(ap, int);
iface = va_arg(ap, char *);
mark = va_arg(ap, int);
switch (af) {
case AF_INET:
@@ -1172,6 +1367,8 @@ _dns_gethtbyaddr(void *rv, void *cb_data, va_list ap)
free(buf);
return NS_NOTFOUND;
}
res_setiface(res, iface);
res_setmark(res, mark);
n = res_nquery(res, qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf));
if (n < 0) {
free(buf);

View File

@@ -93,6 +93,7 @@
#include <errno.h>
#include <netdb.h>
#include "resolv_private.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
@@ -214,7 +215,7 @@ struct res_target {
static int str2number(const char *);
static int explore_fqdn(const struct addrinfo *, const char *,
const char *, struct addrinfo **);
const char *, struct addrinfo **, const char *iface, int mark);
static int explore_null(const struct addrinfo *,
const char *, struct addrinfo **);
static int explore_numeric(const struct addrinfo *, const char *,
@@ -402,17 +403,15 @@ _have_ipv4() {
return _test_connect(PF_INET, &addr.generic, sizeof(addr.in));
}
// Returns 0 on success, else returns non-zero on error (in which case
// getaddrinfo should continue as normal)
// Returns 0 on success, else returns on error.
static int
android_getaddrinfo_proxy(
const char *hostname, const char *servname,
const struct addrinfo *hints, struct addrinfo **res)
const struct addrinfo *hints, struct addrinfo **res, const char *iface)
{
int sock;
const int one = 1;
struct sockaddr_un proxy_addr;
const char* cache_mode = getenv("ANDROID_DNS_MODE");
FILE* proxy = NULL;
int success = 0;
@@ -421,33 +420,17 @@ android_getaddrinfo_proxy(
// allocated in the process (before failing).
*res = NULL;
if (cache_mode != NULL && strcmp(cache_mode, "local") == 0) {
// Don't use the proxy in local mode. This is used by the
// proxy itself.
return -1;
}
// Temporary cautious hack to disable the DNS proxy for processes
// requesting special treatment. Ideally the DNS proxy should
// accomodate these apps, though.
char propname[PROP_NAME_MAX];
char propvalue[PROP_VALUE_MAX];
snprintf(propname, sizeof(propname), "net.dns1.%d", getpid());
if (__system_property_get(propname, propvalue) > 0) {
return -1;
}
// Bogus things we can't serialize. Don't use the proxy.
// Bogus things we can't serialize. Don't use the proxy. These will fail - let them.
if ((hostname != NULL &&
strcspn(hostname, " \n\r\t^'\"") != strlen(hostname)) ||
(servname != NULL &&
strcspn(servname, " \n\r\t^'\"") != strlen(servname))) {
return -1;
return EAI_NODATA;
}
sock = socket(AF_UNIX, SOCK_STREAM, 0);
if (sock < 0) {
return -1;
return EAI_NODATA;
}
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
@@ -459,18 +442,19 @@ android_getaddrinfo_proxy(
(const struct sockaddr*) &proxy_addr,
sizeof(proxy_addr))) != 0) {
close(sock);
return -1;
return EAI_NODATA;
}
// Send the request.
proxy = fdopen(sock, "r+");
if (fprintf(proxy, "getaddrinfo %s %s %d %d %d %d",
if (fprintf(proxy, "getaddrinfo %s %s %d %d %d %d %s",
hostname == NULL ? "^" : hostname,
servname == NULL ? "^" : servname,
hints == NULL ? -1 : hints->ai_flags,
hints == NULL ? -1 : hints->ai_family,
hints == NULL ? -1 : hints->ai_socktype,
hints == NULL ? -1 : hints->ai_protocol) < 0) {
hints == NULL ? -1 : hints->ai_protocol,
iface == NULL ? "^" : iface) < 0) {
goto exit;
}
// literal NULL byte at end, required by FrameworkListener
@@ -488,6 +472,7 @@ android_getaddrinfo_proxy(
int result_code = (int)strtol(buf, NULL, 10);
// verify the code itself
if (result_code != DnsProxyQueryResult ) {
fread(buf, 1, sizeof(buf), proxy);
goto exit;
}
@@ -580,19 +565,25 @@ exit:
return 0;
}
// Proxy failed; fall through to local
// resolver case. But first clean up any
// memory we might've allocated.
// Proxy failed;
// clean up memory we might've allocated.
if (*res) {
freeaddrinfo(*res);
*res = NULL;
}
return -1;
return EAI_NODATA;
}
int
getaddrinfo(const char *hostname, const char *servname,
const struct addrinfo *hints, struct addrinfo **res)
{
return android_getaddrinfoforiface(hostname, servname, hints, NULL, 0, res);
}
int
android_getaddrinfoforiface(const char *hostname, const char *servname,
const struct addrinfo *hints, const char *iface, int mark, struct addrinfo **res)
{
struct addrinfo sentinel;
struct addrinfo *cur;
@@ -601,12 +592,12 @@ getaddrinfo(const char *hostname, const char *servname,
struct addrinfo ai0;
struct addrinfo *pai;
const struct explore *ex;
const char* cache_mode = getenv("ANDROID_DNS_MODE");
/* hostname is allowed to be NULL */
/* servname is allowed to be NULL */
/* hints is allowed to be NULL */
assert(res != NULL);
memset(&sentinel, 0, sizeof(sentinel));
cur = &sentinel;
pai = &ai;
@@ -739,9 +730,10 @@ getaddrinfo(const char *hostname, const char *servname,
/*
* BEGIN ANDROID CHANGES; proxying to the cache
*/
if (android_getaddrinfo_proxy(hostname, servname, hints, res) == 0) {
return 0;
}
if (cache_mode == NULL || strcmp(cache_mode, "local") != 0) {
// we're not the proxy - pass the request to them
return android_getaddrinfo_proxy(hostname, servname, hints, res, iface);
}
/*
* hostname as alphabetical name.
@@ -770,7 +762,7 @@ getaddrinfo(const char *hostname, const char *servname,
pai->ai_protocol = ex->e_protocol;
error = explore_fqdn(pai, hostname, servname,
&cur->ai_next);
&cur->ai_next, iface, mark);
while (cur && cur->ai_next)
cur = cur->ai_next;
@@ -803,7 +795,7 @@ getaddrinfo(const char *hostname, const char *servname,
*/
static int
explore_fqdn(const struct addrinfo *pai, const char *hostname,
const char *servname, struct addrinfo **res)
const char *servname, struct addrinfo **res, const char *iface, int mark)
{
struct addrinfo *result;
struct addrinfo *cur;
@@ -829,7 +821,7 @@ explore_fqdn(const struct addrinfo *pai, const char *hostname,
return 0;
switch (nsdispatch(&result, dtab, NSDB_HOSTS, "getaddrinfo",
default_dns_files, hostname, pai)) {
default_dns_files, hostname, pai, iface, mark)) {
case NS_TRYAGAIN:
error = EAI_AGAIN;
goto free;
@@ -1873,17 +1865,19 @@ error:
free(elems);
}
static int _using_alt_dns()
static bool _using_default_dns(const char *iface)
{
char propname[PROP_NAME_MAX];
char propvalue[PROP_VALUE_MAX];
char buf[IF_NAMESIZE+1];
size_t if_len;
propvalue[0] = 0;
snprintf(propname, sizeof(propname), "net.dns1.%d", getpid());
if (__system_property_get(propname, propvalue) > 0 ) {
return 1;
// common case
if (iface == NULL || *iface == '\0') return true;
if_len = _resolv_get_default_iface(buf, sizeof(buf));
if (if_len != 0 && if_len + 1 <= sizeof(buf)) {
if (strcmp(buf, iface) == 0) return true;
}
return 0;
return false;
}
/*ARGSUSED*/
@@ -1897,9 +1891,13 @@ _dns_getaddrinfo(void *rv, void *cb_data, va_list ap)
struct addrinfo sentinel, *cur;
struct res_target q, q2;
res_state res;
const char* iface;
int mark;
name = va_arg(ap, char *);
pai = va_arg(ap, const struct addrinfo *);
iface = va_arg(ap, char *);
mark = va_arg(ap, int);
//fprintf(stderr, "_dns_getaddrinfo() name = '%s'\n", name);
memset(&q, 0, sizeof(q));
@@ -1931,7 +1929,7 @@ _dns_getaddrinfo(void *rv, void *cb_data, va_list ap)
// Only implement AI_ADDRCONFIG if the application is not
// using its own DNS servers, since our implementation
// only works on the default connection.
if (!_using_alt_dns()) {
if (_using_default_dns(iface)) {
query_ipv6 = _have_ipv6();
query_ipv4 = _have_ipv4();
}
@@ -1981,6 +1979,13 @@ _dns_getaddrinfo(void *rv, void *cb_data, va_list ap)
return NS_NOTFOUND;
}
/* this just sets our iface val in the thread private data so we don't have to
* modify the api's all the way down to res_send.c's res_nsend. We could
* fully populate the thread private data here, but if we get down there
* and have a cache hit that would be wasted, so we do the rest there on miss
*/
res_setiface(res, iface);
res_setmark(res, mark);
if (res_searchN(name, &q, res) < 0) {
__res_put_state(res);
free(buf);
@@ -2311,6 +2316,12 @@ res_searchN(const char *name, struct res_target *target, res_state res)
(dots && !trailing_dot && (res->options & RES_DNSRCH))) {
int done = 0;
/* Unfortunately we need to set stuff up before
* the domain stuff is tried. Will have a better
* fix after thread pools are used.
*/
_resolv_populate_res_for_iface(res);
for (domain = (const char * const *)res->dnsrch;
*domain && !done;
domain++) {

View File

@@ -61,7 +61,6 @@ __RCSID("$NetBSD: getnameinfo.c,v 1.53 2012/09/26 23:13:00 christos Exp $");
#include <assert.h>
#include <limits.h>
#include <netdb.h>
#ifdef ANDROID_CHANGES
#include "arpa_nameser.h"
#include "resolv_private.h"
#include <sys/system_properties.h>
@@ -69,9 +68,6 @@ __RCSID("$NetBSD: getnameinfo.c,v 1.53 2012/09/26 23:13:00 christos Exp $");
#include <unistd.h>
#include <errno.h>
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#else
#include <resolv.h>
#endif
#include <stddef.h>
#include <string.h>
@@ -97,7 +93,7 @@ struct sockinet {
};
static int getnameinfo_inet(const struct sockaddr *, socklen_t, char *,
socklen_t, char *, socklen_t, int);
socklen_t, char *, socklen_t, int, const char*, int);
#ifdef INET6
static int ip6_parsenumeric(const struct sockaddr *, const char *, char *,
socklen_t, int);
@@ -111,12 +107,17 @@ static int getnameinfo_local(const struct sockaddr *, socklen_t, char *,
* appropriate function to call.
*/
int getnameinfo(const struct sockaddr* sa, socklen_t salen, char* host, size_t hostlen, char* serv, size_t servlen, int flags)
{
return android_getnameinfoforiface(sa, salen, host, hostlen, serv, servlen, flags, NULL, 0);
}
int android_getnameinfoforiface(const struct sockaddr* sa, socklen_t salen, char* host, size_t hostlen, char* serv, size_t servlen, int flags, const char* iface, int mark)
{
switch (sa->sa_family) {
case AF_INET:
case AF_INET6:
return getnameinfo_inet(sa, salen, host, hostlen,
serv, servlen, flags);
serv, servlen, flags, iface, mark);
case AF_LOCAL:
return getnameinfo_local(sa, salen, host, hostlen,
serv, servlen, flags);
@@ -152,112 +153,23 @@ getnameinfo_local(const struct sockaddr *sa, socklen_t salen,
return 0;
}
#ifdef ANDROID_CHANGES
/* On success length of the host name is returned. A return
* value of 0 means there's no host name associated with
* the address. On failure -1 is returned in which case
* normal execution flow shall continue. */
static int
android_gethostbyaddr_proxy(char* nameBuf, size_t nameBufLen, const void *addr, socklen_t addrLen, int addrFamily) {
android_gethostbyaddr_proxy(char* nameBuf, size_t nameBufLen, const void *addr, socklen_t addrLen, int addrFamily, const char* iface, int mark)
{
struct hostent *hostResult =
android_gethostbyaddrforiface_proxy(addr, addrLen, addrFamily, iface, mark);
int sock;
const int one = 1;
struct sockaddr_un proxy_addr;
const char* cache_mode = getenv("ANDROID_DNS_MODE");
FILE* proxy = NULL;
int result = -1;
if (hostResult == NULL) return 0;
if (cache_mode != NULL && strcmp(cache_mode, "local") == 0) {
// Don't use the proxy in local mode. This is used by the
// proxy itself.
return -1;
}
int lengthResult = strlen(hostResult->h_name);
// Temporary cautious hack to disable the DNS proxy for processes
// requesting special treatment. Ideally the DNS proxy should
// accomodate these apps, though.
char propname[PROP_NAME_MAX];
char propvalue[PROP_VALUE_MAX];
snprintf(propname, sizeof(propname), "net.dns1.%d", getpid());
if (__system_property_get(propname, propvalue) > 0) {
return -1;
}
// create socket
sock = socket(AF_UNIX, SOCK_STREAM, 0);
if (sock < 0) {
return -1;
}
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
memset(&proxy_addr, 0, sizeof(proxy_addr));
proxy_addr.sun_family = AF_UNIX;
strlcpy(proxy_addr.sun_path, "/dev/socket/dnsproxyd",
sizeof(proxy_addr.sun_path));
if (TEMP_FAILURE_RETRY(connect(sock, (const struct sockaddr*) (void*) &proxy_addr,
sizeof(proxy_addr))) != 0) {
close(sock);
return -1;
}
// send request to DnsProxyListener
proxy = fdopen(sock,"r+");
if (proxy == NULL) {
goto exit;
}
char buf[INET6_ADDRSTRLEN]; // big enough for IPv4 and IPv6
const char* addrStr = inet_ntop(addrFamily, addr, buf, sizeof(buf));
if (addrStr == NULL) {
goto exit;
}
if (fprintf(proxy, "gethostbyaddr %s %d %d", addrStr, addrLen, addrFamily) < 0) {
goto exit;
}
// literal NULL byte at end, required by FrameworkListener
if (fputc(0, proxy) == EOF || fflush(proxy) != 0) {
goto exit;
}
result = 0;
char msg_buf[4];
// read result code for gethostbyaddr
if (fread(msg_buf, 1, sizeof(msg_buf), proxy) != sizeof(msg_buf)) {
goto exit;
}
int result_code = (int)strtol(msg_buf, NULL, 10);
// verify the code itself
// This should be synchronized to ResponseCode.h
static const int DnsProxyQueryResult = 222;
if (result_code != DnsProxyQueryResult) {
goto exit;
}
uint32_t name_len;
if (fread(&name_len, sizeof(name_len), 1, proxy) != 1) {
goto exit;
}
name_len = ntohl(name_len);
if (name_len <= 0 || name_len >= nameBufLen) {
goto exit;
}
if (fread(nameBuf, name_len, 1, proxy) != 1) {
goto exit;
}
result = name_len;
exit:
if (proxy != NULL) {
fclose(proxy);
}
return result;
if (nameBuf) strncpy(nameBuf, hostResult->h_name, nameBufLen);
return lengthResult;
}
#endif
/*
* getnameinfo_inet():
@@ -267,7 +179,7 @@ static int
getnameinfo_inet(const struct sockaddr* sa, socklen_t salen,
char *host, socklen_t hostlen,
char *serv, socklen_t servlen,
int flags)
int flags, const char* iface, int mark)
{
const struct afd *afd;
struct servent *sp;
@@ -405,23 +317,20 @@ getnameinfo_inet(const struct sockaddr* sa, socklen_t salen,
break;
}
} else {
#ifdef ANDROID_CHANGES
struct hostent android_proxy_hostent;
char android_proxy_buf[MAXDNAME];
int hostnamelen = android_gethostbyaddr_proxy(android_proxy_buf,
MAXDNAME, addr, afd->a_addrlen, afd->a_af);
MAXDNAME, addr, afd->a_addrlen, afd->a_af, iface, mark);
if (hostnamelen > 0) {
hp = &android_proxy_hostent;
hp->h_name = android_proxy_buf;
} else if (!hostnamelen) {
hp = NULL;
} else {
hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af);
hp = android_gethostbyaddrforiface(addr, afd->a_addrlen, afd->a_af,
iface, mark);
}
#else
hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af);
#endif
if (hp) {
#if 0

View File

@@ -43,6 +43,7 @@
#include <arpa/inet.h>
#include "resolv_private.h"
#include "resolv_iface.h"
#include "res_private.h"
/* This code implements a small and *simple* DNS resolver cache.
*
@@ -571,8 +572,6 @@ _dnsPacket_checkQName( DnsPacket* packet )
static int
_dnsPacket_checkQR( DnsPacket* packet )
{
int len;
if (!_dnsPacket_checkQName(packet))
return 0;
@@ -831,8 +830,6 @@ _dnsPacket_hashQName( DnsPacket* packet, unsigned hash )
static unsigned
_dnsPacket_hashQR( DnsPacket* packet, unsigned hash )
{
int len;
hash = _dnsPacket_hashQName(packet, hash);
hash = _dnsPacket_hashBytes(packet, 4, hash); /* TYPE and CLASS */
return hash;
@@ -1019,8 +1016,58 @@ typedef struct Entry {
} Entry;
/**
* Parse the answer records and find the smallest
* TTL among the answer records.
* Find the TTL for a negative DNS result. This is defined as the minimum
* of the SOA records TTL and the MINIMUM-TTL field (RFC-2308).
*
* Return 0 if not found.
*/
static u_long
answer_getNegativeTTL(ns_msg handle) {
int n, nscount;
u_long result = 0;
ns_rr rr;
nscount = ns_msg_count(handle, ns_s_ns);
for (n = 0; n < nscount; n++) {
if ((ns_parserr(&handle, ns_s_ns, n, &rr) == 0) && (ns_rr_type(rr) == ns_t_soa)) {
const u_char *rdata = ns_rr_rdata(rr); // find the data
const u_char *edata = rdata + ns_rr_rdlen(rr); // add the len to find the end
int len;
u_long ttl, rec_result = ns_rr_ttl(rr);
// find the MINIMUM-TTL field from the blob of binary data for this record
// skip the server name
len = dn_skipname(rdata, edata);
if (len == -1) continue; // error skipping
rdata += len;
// skip the admin name
len = dn_skipname(rdata, edata);
if (len == -1) continue; // error skipping
rdata += len;
if (edata - rdata != 5*NS_INT32SZ) continue;
// skip: serial number + refresh interval + retry interval + expiry
rdata += NS_INT32SZ * 4;
// finally read the MINIMUM TTL
ttl = ns_get32(rdata);
if (ttl < rec_result) {
rec_result = ttl;
}
// Now that the record is read successfully, apply the new min TTL
if (n == 0 || rec_result < result) {
result = rec_result;
}
}
}
return result;
}
/**
* Parse the answer records and find the appropriate
* smallest TTL among the records. This might be from
* the answer records if found or from the SOA record
* if it's a negative result.
*
* The returned TTL is the number of seconds to
* keep the answer in the cache.
@@ -1040,14 +1087,20 @@ answer_getTTL(const void* answer, int answerlen)
if (ns_initparse(answer, answerlen, &handle) >= 0) {
// get number of answer records
ancount = ns_msg_count(handle, ns_s_an);
for (n = 0; n < ancount; n++) {
if (ns_parserr(&handle, ns_s_an, n, &rr) == 0) {
ttl = ns_rr_ttl(rr);
if (n == 0 || ttl < result) {
result = ttl;
if (ancount == 0) {
// a response with no answers? Cache this negative result.
result = answer_getNegativeTTL(handle);
} else {
for (n = 0; n < ancount; n++) {
if (ns_parserr(&handle, ns_s_an, n, &rr) == 0) {
ttl = ns_rr_ttl(rr);
if (n == 0 || ttl < result) {
result = ttl;
}
} else {
XLOG("ns_parserr failed ancount no = %d. errno = %s\n", n, strerror(errno));
}
} else {
XLOG("ns_parserr failed ancount no = %d. errno = %s\n", n, strerror(errno));
}
}
} else {
@@ -1196,8 +1249,22 @@ typedef struct resolv_cache_info {
struct resolv_cache_info* next;
char* nameservers[MAXNS +1];
struct addrinfo* nsaddrinfo[MAXNS + 1];
char defdname[256];
int dnsrch_offset[MAXDNSRCH+1]; // offsets into defdname
} CacheInfo;
typedef struct resolv_pidiface_info {
int pid;
char ifname[IF_NAMESIZE + 1];
struct resolv_pidiface_info* next;
} PidIfaceInfo;
typedef struct resolv_uidiface_info {
int uid_start;
int uid_end;
char ifname[IF_NAMESIZE + 1];
struct resolv_uidiface_info* next;
} UidIfaceInfo;
#define HTABLE_VALID(x) ((x) != NULL && (x) != HTABLE_DELETED)
static void
@@ -1250,8 +1317,9 @@ _cache_check_pending_request_locked( struct resolv_cache* cache, Entry* key )
}
} else {
struct timespec ts = {0,0};
XLOG("Waiting for previous request");
ts.tv_sec = _time_now() + PENDING_REQUEST_TIMEOUT;
int rv = pthread_cond_timedwait(&ri->cond, &cache->lock, &ts);
pthread_cond_timedwait(&ri->cond, &cache->lock, &ts);
}
}
@@ -1305,7 +1373,6 @@ static void
_cache_flush_locked( Cache* cache )
{
int nn;
time_t now = _time_now();
for (nn = 0; nn < cache->max_entries; nn++)
{
@@ -1346,9 +1413,8 @@ _res_cache_get_max_entries( void )
if (cache_mode == NULL || strcmp(cache_mode, "local") != 0) {
// Don't use the cache in local mode. This is used by the
// proxy itself.
// TODO - change this to 0 when all dns stuff uses proxy (5918973)
XLOG("setup cache for non-cache process. size=1");
return 1;
XLOG("setup cache for non-cache process. size=0, %s", cache_mode);
return 0;
}
if (__system_property_get(DNS_CACHE_SIZE_PROP_NAME, cache_size) > 0) {
@@ -1441,6 +1507,7 @@ _dump_answer(const void* answer, int answerlen)
remove("/data/reslog.txt");
}
else {
errno = 0; // else debug is introducing error signals
XLOG("_dump_answer: can't open file\n");
}
}
@@ -1576,9 +1643,7 @@ _resolv_cache_lookup( struct resolv_cache* cache,
int answersize,
int *answerlen )
{
DnsPacket pack[1];
Entry key[1];
int index;
Entry** lookup;
Entry* e;
time_t now;
@@ -1729,20 +1794,34 @@ Exit:
/****************************************************************************/
/****************************************************************************/
static pthread_once_t _res_cache_once;
static pthread_once_t _res_cache_once = PTHREAD_ONCE_INIT;
// Head of the list of caches. Protected by _res_cache_list_lock.
static struct resolv_cache_info _res_cache_list;
// List of pid iface pairs
static struct resolv_pidiface_info _res_pidiface_list;
// List of uid iface pairs
static struct resolv_uidiface_info _res_uidiface_list;
// name of the current default inteface
static char _res_default_ifname[IF_NAMESIZE + 1];
// lock protecting everything in the _resolve_cache_info structs (next ptr, etc)
static pthread_mutex_t _res_cache_list_lock;
// lock protecting the _res_pid_iface_list
static pthread_mutex_t _res_pidiface_list_lock;
// lock protecting the _res_uidiface_list
static pthread_mutex_t _res_uidiface_list_lock;
/* lookup the default interface name */
static char *_get_default_iface_locked();
/* find the first cache that has an associated interface and return the name of the interface */
static char* _find_any_iface_name_locked( void );
/* insert resolv_cache_info into the list of resolv_cache_infos */
static void _insert_cache_info_locked(struct resolv_cache_info* cache_info);
/* creates a resolv_cache_info */
@@ -1751,8 +1830,6 @@ static struct resolv_cache_info* _create_cache_info( void );
static struct resolv_cache* _find_named_cache_locked(const char* ifname);
/* gets a resolv_cache_info associated with an interface name, or NULL if not found */
static struct resolv_cache_info* _find_cache_info_locked(const char* ifname);
/* free dns name server list of a resolv_cache_info structure */
static void _free_nameservers(struct resolv_cache_info* cache_info);
/* look up the named cache, and creates one if needed */
static struct resolv_cache* _get_res_cache_for_iface_locked(const char* ifname);
/* empty the named cache */
@@ -1765,8 +1842,19 @@ static int _get_nameserver_locked(const char* ifname, int n, char* addr, int add
static struct addrinfo* _get_nameserver_addr_locked(const char* ifname, int n);
/* lookup the inteface's address */
static struct in_addr* _get_addr_locked(const char * ifname);
/* return 1 if the provided list of name servers differs from the list of name servers
* currently attached to the provided cache_info */
static int _resolv_is_nameservers_equal_locked(struct resolv_cache_info* cache_info,
const char** servers, int numservers);
/* remove a resolv_pidiface_info structure from _res_pidiface_list */
static void _remove_pidiface_info_locked(int pid);
/* get a resolv_pidiface_info structure from _res_pidiface_list with a certain pid */
static struct resolv_pidiface_info* _get_pid_iface_info_locked(int pid);
/* remove a resolv_pidiface_info structure from _res_uidiface_list */
static int _remove_uidiface_info_locked(const char* iface, int uid_start, int uid_end);
/* get a resolv_uidiface_info structure from _res_uidiface_list with a certain uid */
static struct resolv_uidiface_info* _get_uid_iface_info_locked(int uid);
static void
_res_cache_init(void)
@@ -1780,37 +1868,38 @@ _res_cache_init(void)
memset(&_res_default_ifname, 0, sizeof(_res_default_ifname));
memset(&_res_cache_list, 0, sizeof(_res_cache_list));
memset(&_res_pidiface_list, 0, sizeof(_res_pidiface_list));
memset(&_res_uidiface_list, 0, sizeof(_res_uidiface_list));
pthread_mutex_init(&_res_cache_list_lock, NULL);
pthread_mutex_init(&_res_pidiface_list_lock, NULL);
pthread_mutex_init(&_res_uidiface_list_lock, NULL);
}
struct resolv_cache*
__get_res_cache(void)
__get_res_cache(const char* ifname)
{
struct resolv_cache *cache;
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_cache_list_lock);
char* ifname = _get_default_iface_locked();
// if default interface not set then use the first cache
// associated with an interface as the default one.
if (ifname[0] == '\0') {
struct resolv_cache_info* cache_info = _res_cache_list.next;
while (cache_info) {
if (cache_info->ifname[0] != '\0') {
ifname = cache_info->ifname;
break;
char* iface;
if (ifname == NULL || ifname[0] == '\0') {
iface = _get_default_iface_locked();
if (iface[0] == '\0') {
char* tmp = _find_any_iface_name_locked();
if (tmp) {
iface = tmp;
}
cache_info = cache_info->next;
}
} else {
iface = (char *) ifname;
}
cache = _get_res_cache_for_iface_locked(ifname);
cache = _get_res_cache_for_iface_locked(iface);
pthread_mutex_unlock(&_res_cache_list_lock);
XLOG("_get_res_cache. default_ifname = %s\n", ifname);
XLOG("_get_res_cache: iface = %s, cache=%p\n", iface, cache);
return cache;
}
@@ -1966,11 +2055,29 @@ _find_cache_info_locked(const char* ifname)
static char*
_get_default_iface_locked(void)
{
char* iface = _res_default_ifname;
return iface;
}
static char*
_find_any_iface_name_locked( void ) {
char* ifname = NULL;
struct resolv_cache_info* cache_info = _res_cache_list.next;
while (cache_info) {
if (cache_info->ifname[0] != '\0') {
ifname = cache_info->ifname;
break;
}
cache_info = cache_info->next;
}
return ifname;
}
void
_resolv_set_default_iface(const char* ifname)
{
@@ -1988,21 +2095,25 @@ _resolv_set_default_iface(const char* ifname)
}
void
_resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numservers)
_resolv_set_nameservers_for_iface(const char* ifname, const char** servers, int numservers,
const char *domains)
{
int i, rt, index;
struct addrinfo hints;
char sbuf[NI_MAXSERV];
register char *cp;
int *offset;
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_cache_list_lock);
// creates the cache if not created
_get_res_cache_for_iface_locked(ifname);
struct resolv_cache_info* cache_info = _find_cache_info_locked(ifname);
if (cache_info != NULL) {
if (cache_info != NULL &&
!_resolv_is_nameservers_equal_locked(cache_info, servers, numservers)) {
// free current before adding new
_free_nameservers_locked(cache_info);
@@ -2018,14 +2129,68 @@ _resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numser
if (rt == 0) {
cache_info->nameservers[index] = strdup(servers[i]);
index++;
XLOG("_resolv_set_nameservers_for_iface: iface = %s, addr = %s\n",
ifname, servers[i]);
} else {
cache_info->nsaddrinfo[index] = NULL;
}
}
// code moved from res_init.c, load_domain_search_list
strlcpy(cache_info->defdname, domains, sizeof(cache_info->defdname));
if ((cp = strchr(cache_info->defdname, '\n')) != NULL)
*cp = '\0';
cp = cache_info->defdname;
offset = cache_info->dnsrch_offset;
while (offset < cache_info->dnsrch_offset + MAXDNSRCH) {
while (*cp == ' ' || *cp == '\t') /* skip leading white space */
cp++;
if (*cp == '\0') /* stop if nothing more to do */
break;
*offset++ = cp - cache_info->defdname; /* record this search domain */
while (*cp) { /* zero-terminate it */
if (*cp == ' '|| *cp == '\t') {
*cp++ = '\0';
break;
}
cp++;
}
}
*offset = -1; /* cache_info->dnsrch_offset has MAXDNSRCH+1 items */
// flush cache since new settings
_flush_cache_for_iface_locked(ifname);
}
pthread_mutex_unlock(&_res_cache_list_lock);
}
static int
_resolv_is_nameservers_equal_locked(struct resolv_cache_info* cache_info,
const char** servers, int numservers)
{
int i;
char** ns;
int equal = 1;
// compare each name server against current name servers
if (numservers > MAXNS) numservers = MAXNS;
for (i = 0; i < numservers && equal; i++) {
ns = cache_info->nameservers;
equal = 0;
while(*ns) {
if (strcmp(*ns, servers[i]) == 0) {
equal = 1;
break;
}
ns++;
}
}
return equal;
}
static void
_free_nameservers_locked(struct resolv_cache_info* cache_info)
{
@@ -2125,8 +2290,8 @@ _resolv_set_addr_of_iface(const char* ifname, struct in_addr* addr)
memcpy(&cache_info->ifaddr, addr, sizeof(*addr));
if (DEBUG) {
char* addr_s = inet_ntoa(cache_info->ifaddr);
XLOG("address of interface %s is %s\n", ifname, addr_s);
XLOG("address of interface %s is %s\n",
ifname, inet_ntoa(cache_info->ifaddr));
}
}
pthread_mutex_unlock(&_res_cache_list_lock);
@@ -2168,3 +2333,333 @@ _get_addr_locked(const char * ifname)
}
return NULL;
}
static void
_remove_pidiface_info_locked(int pid) {
struct resolv_pidiface_info* result = &_res_pidiface_list;
struct resolv_pidiface_info* prev = NULL;
while (result != NULL && result->pid != pid) {
prev = result;
result = result->next;
}
if (prev != NULL && result != NULL) {
prev->next = result->next;
free(result);
}
}
static struct resolv_pidiface_info*
_get_pid_iface_info_locked(int pid)
{
struct resolv_pidiface_info* result = &_res_pidiface_list;
while (result != NULL && result->pid != pid) {
result = result->next;
}
return result;
}
void
_resolv_set_iface_for_pid(const char* ifname, int pid)
{
// make sure the pid iface list is created
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_pidiface_list_lock);
struct resolv_pidiface_info* pidiface_info = _get_pid_iface_info_locked(pid);
if (!pidiface_info) {
pidiface_info = calloc(sizeof(*pidiface_info), 1);
if (pidiface_info) {
pidiface_info->pid = pid;
int len = sizeof(pidiface_info->ifname);
strncpy(pidiface_info->ifname, ifname, len - 1);
pidiface_info->ifname[len - 1] = '\0';
pidiface_info->next = _res_pidiface_list.next;
_res_pidiface_list.next = pidiface_info;
XLOG("_resolv_set_iface_for_pid: pid %d , iface %s\n", pid, ifname);
} else {
XLOG("_resolv_set_iface_for_pid failing calloc");
}
}
pthread_mutex_unlock(&_res_pidiface_list_lock);
}
void
_resolv_clear_iface_for_pid(int pid)
{
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_pidiface_list_lock);
_remove_pidiface_info_locked(pid);
XLOG("_resolv_clear_iface_for_pid: pid %d\n", pid);
pthread_mutex_unlock(&_res_pidiface_list_lock);
}
int
_resolv_get_pids_associated_interface(int pid, char* buff, int buffLen)
{
int len = 0;
if (!buff) {
return -1;
}
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_pidiface_list_lock);
struct resolv_pidiface_info* pidiface_info = _get_pid_iface_info_locked(pid);
buff[0] = '\0';
if (pidiface_info) {
len = strlen(pidiface_info->ifname);
if (len < buffLen) {
strncpy(buff, pidiface_info->ifname, len);
buff[len] = '\0';
}
}
XLOG("_resolv_get_pids_associated_interface buff: %s\n", buff);
pthread_mutex_unlock(&_res_pidiface_list_lock);
return len;
}
static int
_remove_uidiface_info_locked(const char* ifname, int uid_start, int uid_end) {
struct resolv_uidiface_info* result = _res_uidiface_list.next;
struct resolv_uidiface_info* prev = &_res_uidiface_list;
while (result != NULL && !(result->uid_start == uid_start && result->uid_end == uid_end &&
!strcmp(result->ifname, ifname))) {
prev = result;
result = result->next;
}
if (prev != NULL && result != NULL) {
prev->next = result->next;
free(result);
return 0;
}
errno = EINVAL;
return -1;
}
static struct resolv_uidiface_info*
_get_uid_iface_info_locked(int uid)
{
struct resolv_uidiface_info* result = _res_uidiface_list.next;
while (result != NULL && !(result->uid_start <= uid && result->uid_end >= uid)) {
result = result->next;
}
return result;
}
void
_resolv_clear_iface_uid_range_mapping()
{
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_uidiface_list_lock);
struct resolv_uidiface_info *current = _res_uidiface_list.next;
struct resolv_uidiface_info *next;
while (current != NULL) {
next = current->next;
free(current);
current = next;
}
_res_uidiface_list.next = NULL;
pthread_mutex_unlock(&_res_uidiface_list_lock);
}
void
_resolv_clear_iface_pid_mapping()
{
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_pidiface_list_lock);
struct resolv_pidiface_info *current = _res_pidiface_list.next;
struct resolv_pidiface_info *next;
while (current != NULL) {
next = current->next;
free(current);
current = next;
}
_res_pidiface_list.next = NULL;
pthread_mutex_unlock(&_res_pidiface_list_lock);
}
int
_resolv_set_iface_for_uid_range(const char* ifname, int uid_start, int uid_end)
{
int rv = 0;
struct resolv_uidiface_info* uidiface_info;
// make sure the uid iface list is created
pthread_once(&_res_cache_once, _res_cache_init);
if (uid_start > uid_end) {
errno = EINVAL;
return -1;
}
pthread_mutex_lock(&_res_uidiface_list_lock);
uidiface_info = calloc(sizeof(*uidiface_info), 1);
if (uidiface_info) {
uidiface_info->uid_start = uid_start;
uidiface_info->uid_end = uid_end;
int len = sizeof(uidiface_info->ifname);
strncpy(uidiface_info->ifname, ifname, len - 1);
uidiface_info->ifname[len - 1] = '\0';
uidiface_info->next = _res_uidiface_list.next;
_res_uidiface_list.next = uidiface_info;
XLOG("_resolv_set_iface_for_uid_range: [%d,%d], iface %s\n", uid_start, uid_end,
ifname);
} else {
XLOG("_resolv_set_iface_for_uid_range failing calloc\n");
rv = -1;
errno = EINVAL;
}
pthread_mutex_unlock(&_res_uidiface_list_lock);
return rv;
}
int
_resolv_clear_iface_for_uid_range(const char* ifname, int uid_start, int uid_end)
{
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_uidiface_list_lock);
int rv = _remove_uidiface_info_locked(ifname, uid_start, uid_end);
XLOG("_resolv_clear_iface_for_uid_range: [%d,%d] iface %s\n", uid_start, uid_end, ifname);
pthread_mutex_unlock(&_res_uidiface_list_lock);
return rv;
}
int
_resolv_get_uids_associated_interface(int uid, char* buff, int buffLen)
{
int len = 0;
if (!buff) {
return -1;
}
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_uidiface_list_lock);
struct resolv_uidiface_info* uidiface_info = _get_uid_iface_info_locked(uid);
buff[0] = '\0';
if (uidiface_info) {
len = strlen(uidiface_info->ifname);
if (len < buffLen) {
strncpy(buff, uidiface_info->ifname, len);
buff[len] = '\0';
}
}
XLOG("_resolv_get_uids_associated_interface buff: %s\n", buff);
pthread_mutex_unlock(&_res_uidiface_list_lock);
return len;
}
size_t
_resolv_get_default_iface(char* buff, size_t buffLen)
{
if (!buff || buffLen == 0) {
return 0;
}
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_cache_list_lock);
char* ifname = _get_default_iface_locked(); // never null, but may be empty
// if default interface not set give up.
if (ifname[0] == '\0') {
pthread_mutex_unlock(&_res_cache_list_lock);
return 0;
}
size_t len = strlen(ifname);
if (len < buffLen) {
strncpy(buff, ifname, len);
buff[len] = '\0';
} else {
buff[0] = '\0';
}
pthread_mutex_unlock(&_res_cache_list_lock);
return len;
}
void
_resolv_populate_res_for_iface(res_state statp)
{
if (statp == NULL) {
return;
}
if (statp->iface[0] == '\0') { // no interface set assign default
size_t if_len = _resolv_get_default_iface(statp->iface, sizeof(statp->iface));
if (if_len + 1 > sizeof(statp->iface)) {
XLOG("%s: INTERNAL_ERROR: can't fit interface name into statp->iface.\n", __FUNCTION__);
return;
}
if (if_len == 0) {
XLOG("%s: INTERNAL_ERROR: can't find any suitable interfaces.\n", __FUNCTION__);
return;
}
}
pthread_once(&_res_cache_once, _res_cache_init);
pthread_mutex_lock(&_res_cache_list_lock);
struct resolv_cache_info* info = _find_cache_info_locked(statp->iface);
if (info != NULL) {
int nserv;
struct addrinfo* ai;
XLOG("_resolv_populate_res_for_iface: %s\n", statp->iface);
for (nserv = 0; nserv < MAXNS; nserv++) {
ai = info->nsaddrinfo[nserv];
if (ai == NULL) {
break;
}
if ((size_t) ai->ai_addrlen <= sizeof(statp->_u._ext.ext->nsaddrs[0])) {
if (statp->_u._ext.ext != NULL) {
memcpy(&statp->_u._ext.ext->nsaddrs[nserv], ai->ai_addr, ai->ai_addrlen);
statp->nsaddr_list[nserv].sin_family = AF_UNSPEC;
} else {
if ((size_t) ai->ai_addrlen
<= sizeof(statp->nsaddr_list[0])) {
memcpy(&statp->nsaddr_list[nserv], ai->ai_addr,
ai->ai_addrlen);
} else {
statp->nsaddr_list[nserv].sin_family = AF_UNSPEC;
}
}
} else {
XLOG("_resolv_populate_res_for_iface found too long addrlen");
}
}
statp->nscount = nserv;
// now do search domains. Note that we cache the offsets as this code runs alot
// but the setting/offset-computer only runs when set/changed
strlcpy(statp->defdname, info->defdname, sizeof(statp->defdname));
register char **pp = statp->dnsrch;
register int *p = info->dnsrch_offset;
while (pp < statp->dnsrch + MAXDNSRCH && *p != -1) {
*pp++ = &statp->defdname + *p++;
}
}
pthread_mutex_unlock(&_res_cache_list_lock);
}

View File

@@ -82,13 +82,7 @@ extern struct __res_state _nres;
int res_ourserver_p(const res_state, const struct sockaddr *);
#ifdef ANDROID_CHANGES
static int res_need_init() {
return ((_nres.options & RES_INIT) == 0U) || res_get_dns_changed();
}
#else
#define res_need_init() ((_nres.options & RES_INIT) == 0U)
#endif
int
res_init(void) {

View File

@@ -111,13 +111,6 @@ __RCSID("$NetBSD: res_init.c,v 1.8 2006/03/19 03:10:08 christos Exp $");
/* ensure that sockaddr_in6 and IN6ADDR_ANY_INIT are declared / defined */
#ifdef ANDROID_CHANGES
#include "resolv_private.h"
#define MAX_DNS_PROPERTIES 8
#define DNS_PROP_NAME_PREFIX "net.dns"
#define DNS_CHANGE_PROP_NAME "net.dnschange"
#define DNS_SEARCH_PROP_NAME "net.dns.search"
static const prop_info *dns_change_prop;
static int dns_last_change_counter;
static int _get_dns_change_count();
#else
#include <resolv.h>
#endif
@@ -171,41 +164,6 @@ res_ninit(res_state statp) {
return (__res_vinit(statp, 0));
}
#ifdef ANDROID_CHANGES
static int load_domain_search_list(res_state statp) {
char propvalue[PROP_VALUE_MAX];
register char *cp, **pp;
if(__system_property_get(DNS_SEARCH_PROP_NAME, propvalue) >= 1) {
strlcpy(statp->defdname, propvalue, sizeof(statp->defdname));
if ((cp = strchr(statp->defdname, '\n')) != NULL)
*cp = '\0';
cp = statp->defdname;
pp = statp->dnsrch;
while ( pp < statp->dnsrch + MAXDNSRCH ) {
while (*cp == ' ' || *cp == '\t') /* skip leading white space */
cp++;
if (*cp == '\0') /* stop if nothing more */
break;
*pp++ = cp; /* record this search domain */
while (*cp) { /* zero-terminate it */
if (*cp == ' ' || *cp == '\t') {
*cp++ = '\0';
break;
}
cp++;
}
}
*pp = NULL; /* statp->dnsrch has MAXDNSRCH+1 items */
if (pp > statp->dnsrch)
return 1;
}
statp->defdname[0] = '\0'; /* no default domain name on Android */
statp->dnsrch[0] = NULL;
return 0;
}
#endif
/* This function has to be reachable by res_data.c but not publicly. */
int
__res_vinit(res_state statp, int preinit) {
@@ -220,12 +178,6 @@ __res_vinit(res_state statp, int preinit) {
char *net;
int dots;
union res_sockaddr_union u[2];
#ifdef ANDROID_CHANGES
pid_t mypid = getpid();
int use_proc_props = 0;
int found_prop;
char dnsProperty[PROP_VALUE_MAX];
#endif
if ((statp->options & RES_INIT) != 0U)
res_ndestroy(statp);
@@ -318,74 +270,8 @@ __res_vinit(res_state statp, int preinit) {
if (nserv > 0)
statp->nscount = nserv;
#endif
#ifdef ANDROID_CHANGES /* READ FROM SYSTEM PROPERTIES */
dns_last_change_counter = _get_dns_change_count();
nserv = 0;
for(n = 1; n <= MAX_DNS_PROPERTIES && nserv < MAXNS; n++) {
char propname[PROP_NAME_MAX];
char propvalue[PROP_VALUE_MAX];
struct addrinfo hints, *ai;
char sbuf[NI_MAXSERV];
const size_t minsiz = sizeof(statp->_u._ext.ext->nsaddrs[0]);
/*
* Check first for process-specific properties, and if those don't
* exist, try the generic properties.
*/
found_prop = 0;
if (n == 1 || use_proc_props) {
snprintf(propname, sizeof(propname), "%s%d.%d", DNS_PROP_NAME_PREFIX, n, mypid);
if(__system_property_get(propname, propvalue) < 1) {
if (use_proc_props) {
break;
}
} else {
found_prop = 1;
use_proc_props = 1;
}
}
if (!found_prop) {
snprintf(propname, sizeof(propname), "%s%d", DNS_PROP_NAME_PREFIX, n);
if(__system_property_get(propname, propvalue) < 1) {
break;
}
}
cp = propvalue;
while (*cp == ' ' || *cp == '\t')
cp++;
cp[strcspn(cp, ";# \t\n")] = '\0';
if ((*cp != '\0') && (*cp != '\n')) {
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM; /*dummy*/
hints.ai_flags = AI_NUMERICHOST;
sprintf(sbuf, "%u", NAMESERVER_PORT);
if (getaddrinfo(cp, sbuf, &hints, &ai) == 0 &&
(size_t)ai->ai_addrlen <= minsiz) {
if (statp->_u._ext.ext != NULL) {
memcpy(&statp->_u._ext.ext->nsaddrs[nserv],
ai->ai_addr, ai->ai_addrlen);
}
if ((size_t)ai->ai_addrlen <=
sizeof(statp->nsaddr_list[nserv])) {
memcpy(&statp->nsaddr_list[nserv],
ai->ai_addr, ai->ai_addrlen);
} else {
statp->nsaddr_list[nserv].sin_family = 0;
}
freeaddrinfo(ai);
nserv++;
}
}
}
/* Add the domain search list */
havesearch = load_domain_search_list(statp);
#else /* !ANDROID_CHANGES - IGNORE resolv.conf in Android */
#ifndef ANDROID_CHANGES /* !ANDROID_CHANGES - IGNORE resolv.conf in Android */
#define MATCH(line, name) \
(!strncmp(line, name, sizeof(name) - 1) && \
(line[sizeof(name) - 1] == ' ' || \
@@ -907,32 +793,24 @@ res_getservers(res_state statp, union res_sockaddr_union *set, int cnt) {
}
#ifdef ANDROID_CHANGES
static int _get_dns_change_count()
void res_setiface(res_state statp, const char* iface)
{
if (dns_change_prop == NULL) {
dns_change_prop = __system_property_find(DNS_CHANGE_PROP_NAME);
}
if (dns_change_prop != NULL) {
char propvalue[PROP_VALUE_MAX];
if (__system_property_read(dns_change_prop, NULL, propvalue) >= 1) {
return atoi(propvalue);
if (statp != NULL) {
// set interface
if (iface && iface[0] != '\0') {
int len = sizeof(statp->iface);
strncpy(statp->iface, iface, len - 1);
statp->iface[len - 1] = '\0';
} else {
statp->iface[0] = '\0';
}
}
return -1;
}
int res_get_dns_changed()
void res_setmark(res_state statp, int mark)
{
int change_count;
change_count = _get_dns_change_count();
if (change_count != dns_last_change_counter) {
if (change_count != -1) {
dns_last_change_counter = change_count;
}
return 1;
} else {
return 0;
if (statp != NULL) {
statp->_mark = mark;
}
}
#endif /* ANDROID_CHANGES */

View File

@@ -272,6 +272,15 @@ res_nsearch(res_state statp,
(dots && !trailing_dot && (statp->options & RES_DNSRCH) != 0U)) {
int done = 0;
/* Unfortunately we need to load interface info
* (dns servers, search domains) before
* the domain stuff is tried. Will have a better
* fix after thread pools are used as this will
* be loaded once for the thread instead of each
* time a query is tried.
*/
_resolv_populate_res_for_iface(statp);
for (domain = (const char * const *)statp->dnsrch;
*domain && !done;
domain++) {

View File

@@ -370,10 +370,13 @@ res_nsend(res_state statp,
ResolvCacheStatus cache_status = RESOLV_CACHE_UNSUPPORTED;
#endif
#if !USE_RESOLV_CACHE
if (statp->nscount == 0) {
errno = ESRCH;
return (-1);
}
#endif
if (anssiz < HFIXEDSZ) {
errno = EINVAL;
return (-1);
@@ -385,17 +388,27 @@ res_nsend(res_state statp,
terrno = ETIMEDOUT;
#if USE_RESOLV_CACHE
cache = __get_res_cache();
if (cache != NULL) {
int anslen = 0;
cache_status = _resolv_cache_lookup(
cache, buf, buflen,
ans, anssiz, &anslen);
// get the cache associated with the interface
cache = __get_res_cache(statp->iface);
if (cache != NULL) {
int anslen = 0;
cache_status = _resolv_cache_lookup(
cache, buf, buflen,
ans, anssiz, &anslen);
if (cache_status == RESOLV_CACHE_FOUND) {
return anslen;
}
}
if (cache_status == RESOLV_CACHE_FOUND) {
return anslen;
} else {
// had a cache miss for a known interface, so populate the thread private
// data so the normal resolve path can do its thing
_resolv_populate_res_for_iface(statp);
}
}
if (statp->nscount == 0) {
errno = ESRCH;
return (-1);
}
#endif
/*
@@ -749,10 +762,13 @@ send_vc(res_state statp,
if (statp->_vcsock >= 0 && (statp->_flags & RES_F_VC) != 0) {
struct sockaddr_storage peer;
socklen_t size = sizeof peer;
int old_mark;
int mark_size = sizeof(old_mark);
if (getpeername(statp->_vcsock,
(struct sockaddr *)(void *)&peer, &size) < 0 ||
!sock_eq((struct sockaddr *)(void *)&peer, nsap)) {
!sock_eq((struct sockaddr *)(void *)&peer, nsap) ||
getsockopt(statp->_vcsock, SOL_SOCKET, SO_MARK, &old_mark, &mark_size) < 0 ||
old_mark != statp->_mark) {
res_nclose(statp);
statp->_flags &= ~RES_F_VC;
}
@@ -782,6 +798,14 @@ send_vc(res_state statp,
return (-1);
}
}
if (statp->_mark != 0) {
if (setsockopt(statp->_vcsock, SOL_SOCKET,
SO_MARK, &statp->_mark, sizeof(statp->_mark)) < 0) {
*terrno = errno;
Perror(statp, stderr, "setsockopt", errno);
return -1;
}
}
errno = 0;
if (random_bind(statp->_vcsock,nsap->sa_family) < 0) {
*terrno = errno;
@@ -1057,6 +1081,14 @@ send_dg(res_state statp,
return (-1);
}
}
if (statp->_mark != 0) {
if (setsockopt(EXT(statp).nssocks[ns], SOL_SOCKET,
SO_MARK, &(statp->_mark), sizeof(statp->_mark)) < 0) {
res_nclose(statp);
return -1;
}
}
#ifndef CANNOT_CONNECT_DGRAM
/*
* On a 4.3BSD+ machine (client and server,
@@ -1084,6 +1116,7 @@ send_dg(res_state statp,
#endif /* !CANNOT_CONNECT_DGRAM */
Dprint(statp->options & RES_DEBUG,
(stdout, ";; new DG socket\n"))
}
s = EXT(statp).nssocks[ns];
#ifndef CANNOT_CONNECT_DGRAM

View File

@@ -50,7 +50,7 @@
#endif
static pthread_key_t _res_key;
static pthread_once_t _res_once;
static pthread_once_t _res_once = PTHREAD_ONCE_INIT;
typedef struct {
int _h_errno;

View File

@@ -0,0 +1,40 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _BIONIC_NAME_MEM_H
#define _BIONIC_NAME_MEM_H
#include <sys/cdefs.h>
#include <stddef.h>
__BEGIN_DECLS
int __bionic_name_mem(void *addr, size_t len, const char *name);
__END_DECLS
#endif

View File

@@ -76,7 +76,12 @@ enum {
* maintain that second number, but pthread_test will fail if we forget.
*/
#define GLOBAL_INIT_THREAD_LOCAL_BUFFER_COUNT 4
#define BIONIC_TLS_SLOTS 64
/*
* This is PTHREAD_KEYS_MAX + TLS_SLOT_FIRST_USER_SLOT + GLOBAL_INIT_THREAD_LOCAL_BUFFER_COUNT
* rounded up to maintain stack alignment.
*/
#define BIONIC_ALIGN(x, a) (((x) + (a - 1)) & ~(a - 1))
#define BIONIC_TLS_SLOTS BIONIC_ALIGN(128 + TLS_SLOT_FIRST_USER_SLOT + GLOBAL_INIT_THREAD_LOCAL_BUFFER_COUNT, 4)
/* syscall only, do not call directly */
extern int __set_tls(void* ptr);

View File

@@ -0,0 +1,48 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _LIBC_EVENTS_H
#define _LIBC_EVENTS_H
// This is going to be included in assembler code so only allow #define
// values instead of defining an enum.
#define BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW 80100
#define BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW 80105
#define BIONIC_EVENT_MEMMOVE_BUFFER_OVERFLOW 80110
#define BIONIC_EVENT_STRNCAT_BUFFER_OVERFLOW 80115
#define BIONIC_EVENT_STRNCPY_BUFFER_OVERFLOW 80120
#define BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW 80125
#define BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW 80130
#define BIONIC_EVENT_RESOLVER_OLD_RESPONSE 80300
#define BIONIC_EVENT_RESOLVER_WRONG_SERVER 80305
#define BIONIC_EVENT_RESOLVER_WRONG_QUERY 80310
#endif // _LIBC_EVENTS_H

View File

@@ -36,19 +36,7 @@
__BEGIN_DECLS
enum {
BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW = 80100,
BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW = 80105,
BIONIC_EVENT_MEMMOVE_BUFFER_OVERFLOW = 80110,
BIONIC_EVENT_STRNCAT_BUFFER_OVERFLOW = 80115,
BIONIC_EVENT_STRNCPY_BUFFER_OVERFLOW = 80120,
BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW = 80125,
BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW = 80130,
BIONIC_EVENT_RESOLVER_OLD_RESPONSE = 80300,
BIONIC_EVENT_RESOLVER_WRONG_SERVER = 80305,
BIONIC_EVENT_RESOLVER_WRONG_QUERY = 80310,
};
#include "libc_events.h"
enum {
ANDROID_LOG_UNKNOWN = 0,

View File

@@ -28,47 +28,67 @@
#ifndef _RESOLV_CACHE_H_
#define _RESOLV_CACHE_H_
#include <stddef.h>
#include <sys/cdefs.h>
struct __res_state;
struct resolv_cache; /* forward */
/* gets the cache for the default interface. Might be NULL*/
extern struct resolv_cache* __get_res_cache(void);
/* get the cache for a specified interface. Can be NULL*/
extern struct resolv_cache* __get_res_cache_for_iface(const char* ifname);
/* gets the cache for an interface. Set ifname argument to NULL or
* empty buffer ('\0') to get cache for default interface.
* returned cache might be NULL*/
__LIBC_HIDDEN__
extern struct resolv_cache* __get_res_cache(const char* ifname);
/* this gets called everytime we detect some changes in the DNS configuration
* and will flush the cache */
__LIBC_HIDDEN__
extern void _resolv_cache_reset( unsigned generation );
/* Gets the address of the n:th name server for the default interface
* Return length of address on success else 0.
* Note: The first name server is at n = 1 */
__LIBC_HIDDEN__
extern int _resolv_cache_get_nameserver(int n, char* addr, int addrLen);
/* Gets the address of the n:th name server for a certain interface
* Return length of address on success else 0.
* Note: The first name server is at n = 1 */
__LIBC_HIDDEN__
extern int _resolv_cache_get_nameserver_for_iface(const char* ifname, int n,
char* addr, int addrLen);
/* Gets addrinfo of the n:th name server associated with an interface.
* NULL is returned if no address if found.
* Note: The first name server is at n = 1. */
__LIBC_HIDDEN__
extern struct addrinfo* _resolv_cache_get_nameserver_addr_for_iface(const char* ifname, int n);
/* Gets addrinfo of the n:th name server associated with the default interface
* NULL is returned if no address if found.
* Note: The first name server is at n = 1. */
__LIBC_HIDDEN__
extern struct addrinfo* _resolv_cache_get_nameserver_addr(int n);
/* gets the address associated with the default interface */
__LIBC_HIDDEN__
extern struct in_addr* _resolv_get_addr_of_default_iface();
/* gets the address associated with the specified interface */
__LIBC_HIDDEN__
extern struct in_addr* _resolv_get_addr_of_iface(const char* ifname);
/* Get name of default interface */
extern char* _resolv_get_default_iface();
/* Copy the name of the default interface to the provided buffer.
* Returns the string length of the default interface,
* be that less or more than the buffLen, or 0 if nothing had been written */
__LIBC_HIDDEN__
extern size_t _resolv_get_default_iface(char* buff, size_t buffLen);
/* sets the name server addresses to the provided res_state structure. The
* name servers are retrieved from the cache which is associated
* with the interface to which the res_state structure is associated */
__LIBC_HIDDEN__
extern void _resolv_populate_res_for_iface(struct __res_state* statp);
typedef enum {
RESOLV_CACHE_UNSUPPORTED, /* the cache can't handle that kind of queries */
@@ -77,6 +97,7 @@ typedef enum {
RESOLV_CACHE_FOUND /* the cache found the answer */
} ResolvCacheStatus;
__LIBC_HIDDEN__
extern ResolvCacheStatus
_resolv_cache_lookup( struct resolv_cache* cache,
const void* query,
@@ -88,6 +109,7 @@ _resolv_cache_lookup( struct resolv_cache* cache,
/* add a (query,answer) to the cache, only call if _resolv_cache_lookup
* did return RESOLV_CACHE_NOTFOUND
*/
__LIBC_HIDDEN__
extern void
_resolv_cache_add( struct resolv_cache* cache,
const void* query,
@@ -96,6 +118,7 @@ _resolv_cache_add( struct resolv_cache* cache,
int answerlen );
/* Notify the cache a request failed */
__LIBC_HIDDEN__
extern void
_resolv_cache_query_failed( struct resolv_cache* cache,
const void* query,

View File

@@ -48,7 +48,8 @@ __BEGIN_DECLS
extern void _resolv_set_default_iface(const char* ifname);
/* set name servers for an interface */
extern void _resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numservers);
extern void _resolv_set_nameservers_for_iface(const char* ifname, const char** servers, int numservers,
const char *domains);
/* tell resolver of the address of an interface */
extern void _resolv_set_addr_of_iface(const char* ifname, struct in_addr* addr);
@@ -59,6 +60,45 @@ extern void _resolv_flush_cache_for_default_iface();
/* flush the cache associated with a certain interface */
extern void _resolv_flush_cache_for_iface(const char* ifname);
/* set a pid to use the name servers of the specified interface */
extern void _resolv_set_iface_for_pid(const char* ifname, int pid);
/* clear pid from being associated with an interface */
extern void _resolv_clear_iface_for_pid(int pid);
/* clear the entire mapping of pids to interfaces. */
extern void _resolv_clear_iface_pid_mapping();
/** Gets the name of the interface to which the pid is attached.
* On error, -1 is returned.
* If no interface is found, 0 is returned and buff is set to empty ('\0').
* If an interface is found, the name is copied to buff and the length of the name is returned.
* Arguments: pid The pid to find an interface for
* buff A buffer to copy the result to
* buffLen Length of buff. An interface is at most IF_NAMESIZE in length */
extern int _resolv_get_pids_associated_interface(int pid, char* buff, int buffLen);
/** set a uid range to use the name servers of the specified interface */
extern int _resolv_set_iface_for_uid_range(const char* ifname, int uid_start, int uid_end);
/** Remove a mapping added by _resolv_set_iface_for_uid_range.
* If no such rule exists -1 is returned. */
extern int _resolv_clear_iface_for_uid_range(const char* ifname, int uid_start, int uid_end);
/* clear the entire mapping of uid ranges to interfaces. */
extern void _resolv_clear_iface_uid_range_mapping();
/** Gets the name of the interface to which the uid is attached.
* On error, -1 is returned.
* If no interface is found, 0 is returned and buff is set to empty ('\0').
* If an interface is found, the name is copied to buff and the length of the name is returned.
* If there are multiple rules covering uid the most recently added rule will be returned.
* Arguments: uid The uid to find an interface for
* buff A buffer to copy the result to
* buffLen Length of buff. An interface is at most IF_NAMESIZE in length */
extern int _resolv_get_uids_associated_interface(int uid, char* buff, int buffLen);
#endif /* _BIONIC_RESOLV_IFACE_FUNCTIONS_DECLARED */
__END_DECLS

View File

@@ -58,6 +58,7 @@
#include <resolv.h>
#include "resolv_static.h"
#include <net/if.h>
/*
* Revision information. This is the release date in YYYYMMDD format.
@@ -141,6 +142,7 @@ struct res_sym {
struct __res_state_ext;
struct __res_state {
char iface[IF_NAMESIZE+1];
int retrans; /* retransmission time interval */
int retry; /* number of times to retransmit */
#ifdef sun
@@ -173,6 +175,7 @@ struct __res_state {
res_send_qhook qhook; /* query hook */
res_send_rhook rhook; /* response hook */
int res_h_errno; /* last one set for this context */
int _mark; /* If non-0 SET_MARK to _mark on all request sockets */
int _vcsock; /* PRIVATE: for res_send VC i/o */
u_int _flags; /* PRIVATE: see below */
u_int _pad; /* make _u 64 bit aligned */
@@ -487,7 +490,8 @@ void res_setservers(res_state,
int res_getservers(res_state,
union res_sockaddr_union *, int);
int res_get_dns_changed();
void res_setiface();
void res_setmark();
u_int res_randomid(void);
__END_DECLS

View File

@@ -36,6 +36,15 @@
#include <ctype.h>
#include "ctype_private.h"
#define _U _CTYPE_U
#define _L _CTYPE_L
#define _N _CTYPE_N
#define _S _CTYPE_S
#define _P _CTYPE_P
#define _C _CTYPE_C
#define _X _CTYPE_X
#define _B _CTYPE_B
const char _C_ctype_[1 + CTYPE_NUM_CHARS] = {
0,
_C, _C, _C, _C, _C, _C, _C, _C,
@@ -77,6 +86,8 @@ const char _C_ctype_[1 + CTYPE_NUM_CHARS] = {
const char *_ctype_ = _C_ctype_;
// TODO: fix the header file so we don't have to duplicate all this inlined stuff.
#if 1 /* ndef NDEBUG */
int isalnum(int c)
{
@@ -155,4 +166,3 @@ int toascii(int c)
#endif /* __BSD_VISIBLE || __XPG_VISIBLE */
#endif /* !NDBEUG */

45
libc/string/memcmp16.c Normal file
View File

@@ -0,0 +1,45 @@
/*
Copyright (c) 2013 Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stddef.h>
/* Unoptimised version of __memcmp16 */
int __memcmp16(const unsigned short *ptr1, const unsigned short *ptr2, size_t n)
{
size_t i;
for (i = 0; i < n; i++) {
if (*ptr1 != *ptr2)
return *ptr1 - *ptr2;
ptr1++;
ptr2++;
}
return 0;
}

Some files were not shown because too many files have changed in this diff Show More