128 Commits

Author SHA1 Message Date
Andy McFadden
4ce737f5df Added _memmove_words
Added a memmove() variant for Dalvik's System.arraycopy()
implementation.  It guarantees 16-bit or 32-bit atomicity depending
on the alignment of the arguments.

Bug 3398352

Change-Id: Ie7bd246305ef0ff8290513663327c5b81680368d
2011-02-04 14:49:49 -08:00
Glenn Kasten
a37cf34ede Bug 3330205 Reentrant MD5
Change-Id: I4c8e4a8f3ef4cdaac50f32d9e55accb16133ab35
2011-01-09 12:37:26 -08:00
David 'Digit' Turner
5c8c00a95a libc: Fix the definition of SIGRTMAX
After this change, SIGRTMAX will be set to 64 (instead of 32 currently).
Note that this doesn't change the fact that our sigset_t is still defined
as a 32-bit unsigned integer, so most functions that deal with this type
won't support real-time signals though.

Change-Id: Ie1e2f97d646f1664f05a0ac9cac4a43278c3cfa8
2010-12-20 15:58:06 +01:00
David 'Digit' Turner
72e6fd4242 <sched.h>: Add sched_getcpu() and cpu_set_t
This adds the cpu_set_t type definition and related functions
and macros used to handle CPU thread affinity.

  sched_getcpu()
  sched_setaffinity()
  sched_getaffinity()

Change-Id: If382ecafde8926341a88478062b275553645065b
2010-12-06 13:42:54 +01:00
David 'Digit' Turner
6481b91520 <time.h>: Add timegm(), timelocal() and others.
Add timegm(), timelocal(), time2posix() and posix2time() to the
C library.

Change-Id: I34d5771ed83dd994870a5ca58a511d01898b1ffb
2010-12-06 12:25:52 +01:00
Elliott Hughes
ff590cadc2 Use a modern chdir(2)-free realpath(3) implementation.
(This is the current OpenBSD implementation.)

Bug: 3055824, 2281992
Change-Id: Iafa8f78e8d6e44c036a547c7210a13d559b7483a
2010-11-04 17:53:06 -07:00
Jean-Baptiste Queru
fa8fef9506 am f2c05baa: am 96c03c7d: Merge "Remove duplicated _rand48 implementation. Use stdlib version instead"
Merge commit 'f2c05baac40bceb754ac69a38b83250c3a5aaddd'

* commit 'f2c05baac40bceb754ac69a38b83250c3a5aaddd':
  Remove duplicated _rand48 implementation. Use stdlib version instead
2010-10-25 18:00:00 -07:00
Jean-Baptiste Queru
f2c05baac4 am 96c03c7d: Merge "Remove duplicated _rand48 implementation. Use stdlib version instead"
Merge commit '96c03c7dcc8cad59f2b8f3e6fef6a77a43750756' into gingerbread-plus-aosp

* commit '96c03c7dcc8cad59f2b8f3e6fef6a77a43750756':
  Remove duplicated _rand48 implementation. Use stdlib version instead
2010-10-25 17:32:13 -07:00
Jim Huang
70478100d5 Remove duplicated _rand48 implementation. Use stdlib version instead
Originally, there are _rand48 (in libc/bionic/_rand48.c) and __rand48
(in libc/stdlib/_rand48.c) implemented in bionic.  Besides the naming,
the functionality is identical.  This patch removes the duplicated
_rand48.  Also, drand48 and erand48 are modified accordingly.

Change-Id: Ie5761a0a97f45df8538222a77edacb7c3e0125d7
2010-10-25 16:27:47 -07:00
David 'Digit' Turner
209cf82593 am f7ad13b0: am 1df986c2: libc: fix executable destruction support.
Merge commit 'f7ad13b0ce5ad2d2f0340c066b09eb8174877739'

* commit 'f7ad13b0ce5ad2d2f0340c066b09eb8174877739':
  libc: fix executable destruction support.
2010-10-21 13:50:42 -07:00
Jean-Baptiste Queru
51a4f7872a am 001a3218: am 4afe0f47: Merge "time64: make helper functions static"
Merge commit '001a321897d0f053b87799dafe17a39036b72470'

* commit '001a321897d0f053b87799dafe17a39036b72470':
  time64: make helper functions static
2010-10-21 13:48:17 -07:00
Jean-Baptiste Queru
f97ce8cb7b am 6ac5660e: am ade2a929: Merge "bionic: stubs: Make internal symbol static"
Merge commit '6ac5660e1c8fc9934d11ed675771063624ac1b4b'

* commit '6ac5660e1c8fc9934d11ed675771063624ac1b4b':
  bionic: stubs: Make internal symbol static
2010-10-21 13:48:14 -07:00
Jean-Baptiste Queru
d3ecb3cd05 am 1203671b: am 2215c113: Merge "pthread-timers: Hide internal symbol __timer_table_start_stop"
Merge commit '1203671b47246efd20279a39ab9bd7ea934ae8dc'

* commit '1203671b47246efd20279a39ab9bd7ea934ae8dc':
  pthread-timers: Hide internal symbol __timer_table_start_stop
2010-10-21 13:48:11 -07:00
Jean-Baptiste Queru
d445a2b275 am bcd94044: am 847223de: Merge "__set_errno: Hide internal symbol __set_syscall_errno"
Merge commit 'bcd940444513a24268d5f9c9a6186274cf09c8dd'

* commit 'bcd940444513a24268d5f9c9a6186274cf09c8dd':
  __set_errno: Hide internal symbol __set_syscall_errno
2010-10-21 09:54:38 -07:00
David 'Digit' Turner
f7ad13b0ce am 1df986c2: libc: fix executable destruction support.
Merge commit '1df986c21ee52c6756846b4a5e45cb316f772112' into gingerbread-plus-aosp

* commit '1df986c21ee52c6756846b4a5e45cb316f772112':
  libc: fix executable destruction support.
2010-10-21 09:43:19 -07:00
David 'Digit' Turner
1df986c21e libc: fix executable destruction support.
This change allows an executable to call its destructor functions
(declared with __attribute__((destructor))) to be properly called
when it normally exits.

Note that this is different from calling the destructors of a shared
library when it is unloaded with dlclose() or through program exit,
which are already supported.

Bug: 3106500
Change-Id: I1412ef5407f13b613fc6cb6103e0a691dbee4b1a
2010-10-21 04:16:50 +02:00
Jean-Baptiste Queru
001a321897 am 4afe0f47: Merge "time64: make helper functions static"
Merge commit '4afe0f4724b3d7180d67eae29bfdad5f815857cb' into gingerbread-plus-aosp

* commit '4afe0f4724b3d7180d67eae29bfdad5f815857cb':
  time64: make helper functions static
2010-10-20 18:57:55 -07:00
Jean-Baptiste Queru
6ac5660e1c am ade2a929: Merge "bionic: stubs: Make internal symbol static"
Merge commit 'ade2a92991d1c7edc32c4a300bd83d622fa1567d' into gingerbread-plus-aosp

* commit 'ade2a92991d1c7edc32c4a300bd83d622fa1567d':
  bionic: stubs: Make internal symbol static
2010-10-20 18:57:53 -07:00
Jean-Baptiste Queru
1203671b47 am 2215c113: Merge "pthread-timers: Hide internal symbol __timer_table_start_stop"
Merge commit '2215c11325d0af07cde67bfee7bafa09ee5556a7' into gingerbread-plus-aosp

* commit '2215c11325d0af07cde67bfee7bafa09ee5556a7':
  pthread-timers: Hide internal symbol __timer_table_start_stop
2010-10-20 18:57:51 -07:00
Jean-Baptiste Queru
4afe0f4724 Merge "time64: make helper functions static" 2010-10-20 18:54:17 -07:00
Jean-Baptiste Queru
ade2a92991 Merge "bionic: stubs: Make internal symbol static" 2010-10-20 18:52:10 -07:00
Jean-Baptiste Queru
2215c11325 Merge "pthread-timers: Hide internal symbol __timer_table_start_stop" 2010-10-20 18:49:51 -07:00
Jean-Baptiste Queru
bcd9404445 am 847223de: Merge "__set_errno: Hide internal symbol __set_syscall_errno"
Merge commit '847223de9ceff6db468a8246792542517a12d39f' into gingerbread-plus-aosp

* commit '847223de9ceff6db468a8246792542517a12d39f':
  __set_errno: Hide internal symbol __set_syscall_errno
2010-10-19 15:22:17 -07:00
Jim Huang
cd9c98dfda __set_errno: Hide internal symbol __set_syscall_errno
Change-Id: I21e7ef6bf0bca288069275add43bd53294c0760d
2010-10-15 03:07:22 +08:00
Jim Huang
c9a41a6997 pthread-timers: Hide internal symbol __timer_table_start_stop
Change-Id: If99c5816fe6fa9107aa6bef4697048fabf92283f
2010-10-15 02:28:22 +08:00
Jim Huang
c940945155 bionic: stubs: Make internal symbol static
Thread-specific state for the stubs functions should not be exposed to
applications.

Change-Id: I4d35dab6009dab8db7781671ac5cc9b5f6904e84
2010-10-15 02:23:00 +08:00
Jim Huang
8b2707a6a0 time64: make helper functions static
Change-Id: I98d9a5f736482e52904228c171a1bdefd2f5b213
2010-10-15 02:16:16 +08:00
tedbo
9d8be5485c get_malloc_leak_info: Fix assumption that totalMemory out parameter was initialized to zero.
The get_malloc_leak_info() currently asssumes that the totalMemory out parameter
was pre-initialized to zero before the routine is called. If it is not then the
accumulated totalMemory value will be incorrect. It is likely that many callers
will simply allocate totalMemory on the stack with no initialization and assume
that get_malloc_leak_info will set the proper value.

As an example, the caller in frameworks/base/core/jni/android_os_Debug.cpp
calls get_malloc_leak_info() with the address uninitiazed stack variable
for totalMemory. It is probably best to fix this in get_malloc_leak_info.

Change-Id: I84c927c3781419585794726115b7d34d8fdd24ae
2010-10-05 13:23:28 -07:00
Andy McFadden
b1c9cc2f2d Add memory barriers to pthread_once.
The implementation was using a double-checked locking approach that
could break on SMP.

In addition to the barriers I also switched to a volatile pointer.  I
don't think this will matter unless gcc can conclude that _normal_lock
can't affect *once_control, but I figured it was better to be safe.
(It seems to have no impact whatsoever on the generated code.)

Bug 3022795.

Change-Id: Ib91da25d57ff5bee4288526e39d457153ef6aacd
2010-09-23 12:30:12 -07:00
Wink Saville
6dbfddfe4e am b9e49ad5: Use a recursive lock for pthread_once. DO NOT MERGE.
Merge commit 'b9e49ad56e5776ace7c6eab2e997d5b7acb16792' into gingerbread-plus-aosp

* commit 'b9e49ad56e5776ace7c6eab2e997d5b7acb16792':
  Use a recursive lock for pthread_once. DO NOT MERGE.
2010-09-23 01:43:43 -07:00
Wink Saville
b9e49ad56e Use a recursive lock for pthread_once. DO NOT MERGE.
Backport change I9fc8b790 from Master to Gingerbread

Change-Id: I5cf48fcd4efb7991ed82f87d9365c19655dc9b7f
2010-09-22 14:51:53 -07:00
Andy McFadden
e2ac89869f Add a memory barrier to cond var signaling.
This adds an explicit memory barrier to condition variable signaling.
It's a little murky as to whether it's strictly required, but it seems
like a wise thing to do.

Change-Id: Id0faa542d61e4b8ffa775e4adf68e4d7471f4fb7
2010-09-02 13:34:53 -07:00
Christopher Tate
caaf7ecd1c am 1ff91085: am 52e7d3d9: Bulletproof leak dump against null hash entries
Merge commit '1ff910858c8ae5863761101c673a196a6a16bca3'

* commit '1ff910858c8ae5863761101c673a196a6a16bca3':
  Bulletproof leak dump against null hash entries
2010-08-09 19:57:25 -07:00
Christopher Tate
1ff910858c am 52e7d3d9: Bulletproof leak dump against null hash entries
Merge commit '52e7d3d91ab6a5bab77c5dfb1ed47381fd52f9ba' into gingerbread-plus-aosp

* commit '52e7d3d91ab6a5bab77c5dfb1ed47381fd52f9ba':
  Bulletproof leak dump against null hash entries
2010-08-09 19:53:32 -07:00
Christopher Tate
52e7d3d91a Bulletproof leak dump against null hash entries
Previously, the malloc leak checking code would crash in qsort()
if null entries existed in its bookkeeping table.  This change
makes the comparison function detect null entries and sort them
to the end safely.

Change-Id: I88244a7df1e289dd9d7992ce29606d505bd63079
2010-08-09 13:43:46 -07:00
Jean-Baptiste Queru
6b9d2d6839 am 6d4d8cb7: resolved conflicts for merge of 4f086aeb to gingerbread-plus-aosp
Merge commit '6d4d8cb79c5578d33ab17806d67b1e53a730fbc3'

* commit '6d4d8cb79c5578d33ab17806d67b1e53a730fbc3':
  Implemented pthread_atfork()
2010-07-23 15:04:24 -07:00
Jean-Baptiste Queru
6d4d8cb79c resolved conflicts for merge of 4f086aeb to gingerbread-plus-aosp
Change-Id: Ice2a6d41a7e9d04eca02e15ed189d648d61b5801
2010-07-23 13:53:19 -07:00
Matt Fischer
4f086aeb4a Implemented pthread_atfork()
Change-Id: Ie6c0bf593315d3507b3c4a6c8903a74a1fa053db
2010-07-23 13:10:16 -07:00
The Android Open Source Project
fb6907d39c am 0e78f786: merge from open-source master
Merge commit '0e78f786777a04af498b43564a8d6ed8e15e8940'

* commit '0e78f786777a04af498b43564a8d6ed8e15e8940':
  Change-Id: I68cc462aeb2460345a53bdb9941ce4bfc10456fb
2010-07-09 10:54:06 -07:00
The Android Open Source Project
0e78f78677 merge from open-source master
Change-Id: Id84ff747889d6f2c15c0510263e32fdfdd18dbed
2010-07-09 10:48:45 -07:00
Jean-Baptiste Queru
fc6d95b10e Merge "Change-Id: I68cc462aeb2460345a53bdb9941ce4bfc10456fb bionic: fix clearenv() compiler warning and related comment typos" 2010-07-08 15:38:13 -07:00
David 'Digit' Turner
cf38531741 resolved conflicts for merge of 2576abf0 to master
Change-Id: Ibd3ed11f3cc27ff12c0464b0f56d7057be6a7b85
2010-07-02 15:22:19 -07:00
David 'Digit' Turner
519763265e libc: Fix sem_post() implementation to wake up all waiting threads.
This also allows us to optimize the case where we increment an
uncontended semaphore (no need to call futex_wake() then).

Change-Id: Iad48efe8551dc66dc89d3e3f18c001e5a6c1939f
2010-07-02 15:09:57 -07:00
David 'Digit' Turner
3b43f87d29 Allow dlclose() to properly call static C++ destructors.
With this patch _and_ an upcoming build/ patch, the destruction
of static C++ objects contained in shared libraries will happen
properly when dlclose() is called.

Note that this change introduces crtbegin_so.S and crtend_so.S which
are currently ignored by the build system.

+ move definition of __dso_handle to the right place
(before that, all shared libraries used the __dso_handle
global variable from the C library).

Note that we keep a 'weak' __dso_handle in aeabi.c to avoid
breaking the build until the next patch to build/core/combo/
appears. We will be able to remove that later.

+ move bionic/aeabi.c to arch-arm/bionic/ (its proper location)

NOTE: The NDK will need to be modified to enable this feature in
         the shared libraries that are generated through it.

Change-Id: I99cd801375bbaef0581175893d1aa0943211b9bc
2010-07-01 23:09:28 -07:00
David 'Digit' Turner
4e6043a355 am 7d1d98b9: am a02b93bd: libc: add sanity checks to pthread_mutex_destroy()
Merge commit '7d1d98b97e947de22aff4c0b67eec7ae68c822ee'

* commit '7d1d98b97e947de22aff4c0b67eec7ae68c822ee':
  libc: add sanity checks to pthread_mutex_destroy()
2010-06-29 12:55:34 -07:00
David 'Digit' Turner
a02b93bd75 libc: add sanity checks to pthread_mutex_destroy()
Change-Id: Iddb2204fa792fa9aca5f19838926dddbb09b74a2
2010-06-28 14:20:22 -07:00
Wink Saville
ccc3d1eea1 Use a recursive lock for pthread_once.
bug: 2292366
Change-Id: I9fc8b790dcfcb30ca94a0beb340d43fe5cd6c22e
2010-06-28 11:41:16 -07:00
Chris Peterson
2bf607d599 Change-Id: I68cc462aeb2460345a53bdb9941ce4bfc10456fb
bionic: fix clearenv() compiler warning and related comment typos
2010-06-27 20:53:04 -07:00
David 'Digit' Turner
50ace4fec5 Remove compiler warnings when building Bionic.
Also add missing declarations to misc. functions.
Fix clearerr() implementation (previous was broken).
Handle feature test macros like _POSIX_C_SOURCE properly.

Change-Id: Icdc973a6b9d550a166fc2545f727ea837fe800c4
2010-06-22 17:51:41 -07:00
David 'Digit' Turner
6a9b888d7c Allow static C++ destructors to be properly called on dlclose().
With this patch, _and_ an upcoming build/ patch, the destruction
of static C++ objects contained in shared libraries will happen
properly when dlclose() is called.

Note that this change introduces crtbegin_so.S and crtend_so.S which
are currently ignored by the build system.

+ move definition of __dso_handle to the right place
  (before that, all shared libraries used the __dso_handle
   global variable from the C library).

  Note that we keep a 'weak' __dso_handle in aeabi.c to avoid
  breaking the build until the next patch to build/core/combo/
  appears. We will be able to remove that later.

+ move bionic/aeabi.c to arch-arm/bionic/ (its proper location)

Change-Id: Ie771aa204e3acbdf02fd30ebd4150373a1398f39
NOTE: The NDK will need to be modified to enable this feature in
      the shared libraries that are generated through it.
2010-06-18 16:07:10 -07:00