replicant-frameworks_native/libs/utils
Kenny Root 61ef747e0e Use pread() in ZipFileRO for Linux
AssetManager instances are created by zygote and passed to all its
children so that they don't have to individually open
frameworks-res.apk. This creates a problem for determining the current
file offset when using lseek() on those files, because you can't
guarantee the cross-process locking of a mutex. Luckily, Linux
implements pread() to get around this suckiness.

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

Change-Id: Ibe9f11499a53fe345f50fbaea438815ec0fd363e
2010-10-04 15:17:19 -07:00
..
tests Replace epoll() with poll() and rename PollLoop to Looper. 2010-09-14 01:59:45 -07:00
Android.mk Replace epoll() with poll() and rename PollLoop to Looper. 2010-09-14 01:59:45 -07:00
Asset.cpp
AssetDir.cpp
AssetManager.cpp More native work. 2010-08-11 00:29:59 -07:00
BackupData.cpp
BackupHelpers.cpp
BufferedTextOutput.cpp
CallStack.cpp
Debug.cpp
FileMap.cpp
Flattenable.cpp
Looper.cpp Looper: use pthread_once for TLS key initialization. 2010-09-21 15:26:51 -07:00
misc.cpp
MODULE_LICENSE_APACHE2
NOTICE
ObbFile.cpp Add OBB flags to support overlays 2010-08-18 09:34:58 -07:00
Pool.cpp
README
RefBase.cpp
ResourceTypes.cpp Add better debug output for ResourceType errors 2010-09-02 14:58:47 -07:00
SharedBuffer.cpp
Static.cpp
StopWatch.cpp
StreamingZipInflater.cpp Attempt to fix the SDK build 2010-07-29 13:42:45 -07:00
String8.cpp
String16.cpp
StringArray.cpp
SystemClock.cpp
TextOutput.cpp
Threads.cpp Always set the scheduling group when starting a new thread. 2010-09-09 22:12:25 -07:00
Timers.cpp
VectorImpl.cpp
ZipFileCRO.cpp
ZipFileRO.cpp Use pread() in ZipFileRO for Linux 2010-10-04 15:17:19 -07:00
ZipUtils.cpp

Android Utility Function Library

If you need a feature that is native to Linux but not present on other
platforms, construct a platform-dependent implementation that shares
the Linux interface.  That way the actual device runs as "light" as
possible.

If that isn't feasible, create a system-independent interface and hide
the details.

The ultimate goal is *not* to create a super-duper platform abstraction
layer.  The goal is to provide an optimized solution for Linux with
reasonable implementations for other platforms.