| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Change-Id: I832901604b487c6a50304c311b5ba135e153530d
|
|
|
|
|
|
|
| |
Now that the system properly uses shared condvars when needed, we
can enable the use of private futexes for them too.
Change-Id: Icf8351fc0a2309f764cba45c65bc3af047720cdf
|
|\
| |
| |
| | |
Change-Id: I70266ee8c520b216773f267e46c8273d2334c31d
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
... by using similar logic as used in pthread_detach().
Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>
|
| |\ \ |
|
| | |/
| | |
| | |
| | | |
Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>
|
| |\ \ |
|
| | |/
| | |
| | |
| | |
| | |
| | | |
... and simplify the generated code.
Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>
|
| |/
| |
| |
| |
| |
| | |
... for the consistency sake.
Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>
|
| |\ |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This does not change the implementation of conditional variables
since we're waiting for other system components to properly use
pthread_condattr_init/setpshared before that.
Also remove an obsolete x86 source file.
Change-Id: Ia3e3fbac35b87a534fb04d4381c3c66b975bc8f7
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Note that this does not change the implementation of conditional variables
which still use shared futexes, independent on the flags being selected.
This will be fixed in a later patch, once our system is modified to use
pthread_condattr_setpshared(attr, PTHREAD_PROCESS_SHARED) properly.
Change-Id: I935de50964cd41f97a13dbfd6626d3407b0406c3
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is preliminary work to simplify later changes to support
private futexes.
Change-Id: I06750936a93747a5e3f5a10228cbdc29e39c528c
|
| | |
| | |
| | |
| | |
| | |
| | | |
condvars"
This reverts commit ba9c6f0989ae94778ba2b9f597adc827c9dc81e8.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Private futexes are a recent kernel addition: faster futexes that cannot be
shared between processes. This patch uses them by default, unless the PROCESS_SHARED
attribute flag is used when creating a mutex and/or conditional variable.
Also introduces pthread_condattr_init/destroy/setpshared/getpshared.
Change-Id: I3a0e2116f467072b046524cb5babc00e41057a53
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Any of the setuid functions now updates /acct/uid/ with its own tid
before changing users. This is so we can properly account for cpu time
per uid.
Change-Id: I34186cf4d5228cac8439e582a9e26c01ef3011e4
Signed-off-by: Mike Chan <mike@android.com>
|
| | |
| | |
| | |
| | |
| | | |
Before that, it returned -1 on error and set errno (not Posix)
After the patch, it returns the error code and leaves errno untouched.
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | | |
Change-Id: I304c789a752c9f4af4944ca14b9bf1e7644da15a
|
| | | | |
|
| | | | |
|
|/ / /
| | |
| | |
| | |
| | | |
This fixes getpwnam and getpwgrp which returned NULL for "app_0".
"app_0" corresponds to uid/gid 10000 and is perfectly valid.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Only provide an implementation for ARM at the moment, since
it requires specific assembly fragments (the standard syscall
stubs cannot be used because the child returns in a different
stack).
|
| | |
| | |
| | |
| | | |
Change-Id: I5fe7e8b6ee5edbb49e707c3b6737a58563781fa3
|
| | |
| | |
| | |
| | | |
Change-Id: Id47514a1812d828e95efa2fab0e9c15c5b682b58
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The file descriptor wasn't getting set, so the writev() call was
silently failing.
There's a parallel implementation over in system/core/liblog, but it's
still using the old approach and didn't have this problem.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Merge commit '362b2aabee2dd04e04a3ad9c09f0ad0212569be4' into eclair-mr2-plus-aosp
* commit '362b2aabee2dd04e04a3ad9c09f0ad0212569be4':
Split libc_debug.so into two .so modules loaded on demand from libc.so
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This change is intended to eliminate need to replace libc.so with libc_debug.so in order to enablememory allocation debugging.
This is also the first step towards implementing extended memoryallocation debugging using emulator's capabilities in monitoring memory access.
|
|\ \ \ \
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
Merge commit 'bc10cd2900cdb7fed077163b6a33e0f8572b2b19' into eclair-plus-aosp
* commit 'bc10cd2900cdb7fed077163b6a33e0f8572b2b19':
Fix a typo that resulted in a crash in the boot sequence
|
| | | | |
|
|\ \ \ \
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
Merge commit 'd154954f02691618fdf73a5a97336e64cad37af0' into eclair-plus-aosp
* commit 'd154954f02691618fdf73a5a97336e64cad37af0':
Add pthread_mutex_lock_timeout_np
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is used to perform a mutex lock for a given amount of
milliseconds before giving up. Using the _np prefix since this
is absolutely not portable.
Also remove a compiler warning in pthread_attr_getstackaddr
|
|\ \ \ \
| | |/ /
| |/| | |
|
| | | |
| | | |
| | | |
| | | | |
__pthread_cond_timedwait_relative helper
|
|\ \ \ \
| |/ / /
| | / /
| |/ /
|/| | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Main differences from original code:
1. now log channel for LOG_ID_MAIN may exist even if LOG_ID_RADIO
facility failed.
2. __write_to_log_null() now acts as always successful function.
3. it's more simplier to add new logging channels now
ammended commit fixes my typo on line 130
|
|\ \ \
| |/ / |
|
| |\ \
| | |/
| |/|
| | |
| | | |
* changes:
Add mspace_merge_objects
|
| | | |
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | | |
Merge commit '39f3745cf30efe38482ffead1c32f4e62f6fe32e'
* commit '39f3745cf30efe38482ffead1c32f4e62f6fe32e':
Restore malloc debug.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Some libc changes were preventing the initialization call from being made.
The basic problem appears to be that libc_init_common.c is only built once,
and it's only built for the non-debug libc.
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | | |
Merge commit 'b56b5659b3996e98c2060f168d1cff1474e77d2a'
* commit 'b56b5659b3996e98c2060f168d1cff1474e77d2a':
Fix the C library runtime initialization order.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This allows libc.so to run the C runtime initializer as soon as the
dynamic linker loads the shared library, i.e. before any other initializers
(e.g. static C++ constructors in other shared libraries the executable depends
on).
This also removes the bug where the initializers from the executable itself
were run twice: once by the dynamic linker, and another time by __libc_init
as defined by libc_init_dynamic.c
|
| | |
| | |
| | |
| | | |
current impl actually uses shared mutexes
|
|/ / |
|
| |
| |
| |
| |
| |
| | |
Simplify the code a little, removing un-necessary mutex locks/unlocks.
Provide slightly better diagnostic message in case of corruption.
Use snprintf/strlcat instead of sprintf/strcat
|
| |
| |
| |
| |
| |
| | |
constructors twice."
This reverts commit 03eabfe65e1e2c36f4d26c78a730fa19a3bdada3.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The problem was due to the fact that, in the case of dynamic executables,
the dynamic linker calls the DT_PREINIT_ARRAY, DT_INIT and DT_INIT_ARRAY
constructors when loading shared libraries and dynamic executables,
*before* calling the executable's entry point (i.e. arch-$ARCH/bionic/crtbegin_dynamic.c)
which in turns call __libc_init() in libc.so, as defined by bionic/libc_init_dynamic.c
The latter did call these constructors array again, mistakenly.
The patch also updates the documentation of many related functions.
Also adds a new section to linker/README.TXT explaining restrictions on
C library usage.
The patch has been tested on a Dream for stability issues with
proprietary blobs:
- H264 decoding works
- Camera + Video recording works
- GPS works
- Sensors work
The tests in system/extra/tests/bionic/libc/common/test_static_cpp_mutex.cpp has been
run and shows the static C++ constructor being called only once.
|