diff options
Diffstat (limited to 'libutils')
-rw-r--r-- | libutils/Android.mk | 15 | ||||
-rw-r--r-- | libutils/BlobCache.cpp | 31 | ||||
-rw-r--r-- | libutils/FileMap.cpp | 86 | ||||
-rw-r--r-- | libutils/LinearAllocator.cpp | 4 | ||||
-rw-r--r-- | libutils/Printer.cpp | 6 | ||||
-rw-r--r-- | libutils/RefBase.cpp | 32 | ||||
-rw-r--r-- | libutils/StopWatch.cpp | 2 | ||||
-rw-r--r-- | libutils/String16.cpp | 3 | ||||
-rw-r--r-- | libutils/String8.cpp | 14 | ||||
-rw-r--r-- | libutils/SystemClock.cpp | 16 | ||||
-rw-r--r-- | libutils/Threads.cpp | 30 | ||||
-rw-r--r-- | libutils/Timers.cpp | 11 | ||||
-rw-r--r-- | libutils/Unicode.cpp | 2 | ||||
-rw-r--r-- | libutils/tests/BasicHashtable_test.cpp | 2 | ||||
-rw-r--r-- | libutils/tests/BlobCache_test.cpp | 28 | ||||
-rw-r--r-- | libutils/tests/LruCache_test.cpp | 2 |
16 files changed, 148 insertions, 136 deletions
diff --git a/libutils/Android.mk b/libutils/Android.mk index 1710d36..9a50147 100644 --- a/libutils/Android.mk +++ b/libutils/Android.mk @@ -43,7 +43,7 @@ commonSources:= \ VectorImpl.cpp \ misc.cpp -host_commonCflags := -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) +host_commonCflags := -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -Werror ifeq ($(HOST_OS),windows) ifeq ($(strip $(USE_CYGWIN),),) @@ -69,7 +69,7 @@ endif LOCAL_MODULE:= libutils LOCAL_STATIC_LIBRARIES := liblog LOCAL_CFLAGS += $(host_commonCflags) -LOCAL_LDLIBS += $(host_commonLdlibs) +LOCAL_MULTILIB := both include $(BUILD_HOST_STATIC_LIBRARY) @@ -83,7 +83,6 @@ endif LOCAL_MODULE:= lib64utils LOCAL_STATIC_LIBRARIES := liblog LOCAL_CFLAGS += $(host_commonCflags) -m64 -LOCAL_LDLIBS += $(host_commonLdlibs) include $(BUILD_HOST_STATIC_LIBRARY) @@ -98,20 +97,15 @@ LOCAL_SRC_FILES:= \ Looper.cpp \ Trace.cpp -ifeq ($(TARGET_OS),linux) -LOCAL_LDLIBS += -lrt -ldl -endif - ifeq ($(TARGET_ARCH),mips) LOCAL_CFLAGS += -DALIGN_DOUBLE endif +LOCAL_CFLAGS += -Werror LOCAL_C_INCLUDES += \ bionic/libc/private \ external/zlib -LOCAL_LDLIBS += -lpthread - LOCAL_STATIC_LIBRARIES := \ libcutils @@ -134,7 +128,8 @@ LOCAL_SHARED_LIBRARIES := \ libbacktrace \ libcutils \ libdl \ - liblog \ + liblog +LOCAL_CFLAGS := -Werror include external/stlport/libstlport.mk diff --git a/libutils/BlobCache.cpp b/libutils/BlobCache.cpp index 0fb1d8e..f00bf14 100644 --- a/libutils/BlobCache.cpp +++ b/libutils/BlobCache.cpp @@ -17,6 +17,7 @@ #define LOG_TAG "BlobCache" //#define LOG_NDEBUG 0 +#include <inttypes.h> #include <stdlib.h> #include <string.h> @@ -27,7 +28,7 @@ namespace android { // BlobCache::Header::mMagicNumber value -static const uint32_t blobCacheMagic = '_Bb$'; +static const uint32_t blobCacheMagic = ('_' << 24) + ('B' << 16) + ('b' << 8) + '$'; // BlobCache::Header::mBlobCacheVersion value static const uint32_t blobCacheVersion = 1; @@ -48,24 +49,24 @@ BlobCache::BlobCache(size_t maxKeySize, size_t maxValueSize, size_t maxTotalSize mRandState[1] = (now >> 16) & 0xFFFF; mRandState[2] = (now >> 32) & 0xFFFF; #endif - ALOGV("initializing random seed using %lld", now); + ALOGV("initializing random seed using %lld", (unsigned long long)now); } void BlobCache::set(const void* key, size_t keySize, const void* value, size_t valueSize) { if (mMaxKeySize < keySize) { - ALOGV("set: not caching because the key is too large: %d (limit: %d)", + ALOGV("set: not caching because the key is too large: %zu (limit: %zu)", keySize, mMaxKeySize); return; } if (mMaxValueSize < valueSize) { - ALOGV("set: not caching because the value is too large: %d (limit: %d)", + ALOGV("set: not caching because the value is too large: %zu (limit: %zu)", valueSize, mMaxValueSize); return; } if (mMaxTotalSize < keySize + valueSize) { ALOGV("set: not caching because the combined key/value size is too " - "large: %d (limit: %d)", keySize + valueSize, mMaxTotalSize); + "large: %zu (limit: %zu)", keySize + valueSize, mMaxTotalSize); return; } if (keySize == 0) { @@ -94,15 +95,15 @@ void BlobCache::set(const void* key, size_t keySize, const void* value, continue; } else { ALOGV("set: not caching new key/value pair because the " - "total cache size limit would be exceeded: %d " - "(limit: %d)", + "total cache size limit would be exceeded: %zu " + "(limit: %zu)", keySize + valueSize, mMaxTotalSize); break; } } mCacheEntries.add(CacheEntry(keyBlob, valueBlob)); mTotalSize = newTotalSize; - ALOGV("set: created new cache entry with %d byte key and %d byte value", + ALOGV("set: created new cache entry with %zu byte key and %zu byte value", keySize, valueSize); } else { // Update the existing cache entry. @@ -116,14 +117,14 @@ void BlobCache::set(const void* key, size_t keySize, const void* value, continue; } else { ALOGV("set: not caching new value because the total cache " - "size limit would be exceeded: %d (limit: %d)", + "size limit would be exceeded: %zu (limit: %zu)", keySize + valueSize, mMaxTotalSize); break; } } mCacheEntries.editItemAt(index).setValue(valueBlob); mTotalSize = newTotalSize; - ALOGV("set: updated existing cache entry with %d byte key and %d byte " + ALOGV("set: updated existing cache entry with %zu byte key and %zu byte " "value", keySize, valueSize); } break; @@ -133,7 +134,7 @@ void BlobCache::set(const void* key, size_t keySize, const void* value, size_t BlobCache::get(const void* key, size_t keySize, void* value, size_t valueSize) { if (mMaxKeySize < keySize) { - ALOGV("get: not searching because the key is too large: %d (limit %d)", + ALOGV("get: not searching because the key is too large: %zu (limit %zu)", keySize, mMaxKeySize); return 0; } @@ -141,7 +142,7 @@ size_t BlobCache::get(const void* key, size_t keySize, void* value, CacheEntry dummyEntry(dummyKey, NULL); ssize_t index = mCacheEntries.indexOf(dummyEntry); if (index < 0) { - ALOGV("get: no cache entry found for key of size %d", keySize); + ALOGV("get: no cache entry found for key of size %zu", keySize); return 0; } @@ -150,10 +151,10 @@ size_t BlobCache::get(const void* key, size_t keySize, void* value, sp<Blob> valueBlob(mCacheEntries[index].getValue()); size_t valueBlobSize = valueBlob->getSize(); if (valueBlobSize <= valueSize) { - ALOGV("get: copying %d bytes to caller's buffer", valueBlobSize); + ALOGV("get: copying %zu bytes to caller's buffer", valueBlobSize); memcpy(value, valueBlob->getData(), valueBlobSize); } else { - ALOGV("get: caller's buffer is too small for value: %d (needs %d)", + ALOGV("get: caller's buffer is too small for value: %zu (needs %zu)", valueSize, valueBlobSize); } return valueBlobSize; @@ -229,7 +230,7 @@ status_t BlobCache::unflatten(void const* buffer, size_t size) { } const Header* header = reinterpret_cast<const Header*>(buffer); if (header->mMagicNumber != blobCacheMagic) { - ALOGE("unflatten: bad magic number: %d", header->mMagicNumber); + ALOGE("unflatten: bad magic number: %" PRIu32, header->mMagicNumber); return BAD_VALUE; } if (header->mBlobCacheVersion != blobCacheVersion || diff --git a/libutils/FileMap.cpp b/libutils/FileMap.cpp index 9ce370e..be4b14f 100644 --- a/libutils/FileMap.cpp +++ b/libutils/FileMap.cpp @@ -23,6 +23,13 @@ #include <utils/FileMap.h> #include <utils/Log.h> +#if defined(HAVE_WIN32_FILEMAP) && !defined(__USE_MINGW_ANSI_STDIO) +# define PRId32 "I32d" +# define PRIx32 "I32x" +# define PRId64 "I64d" +#else +#include <inttypes.h> +#endif #include <stdio.h> #include <stdlib.h> @@ -39,37 +46,32 @@ using namespace android; /*static*/ long FileMap::mPageSize = -1; - -/* - * Constructor. Create an empty object. - */ +// Constructor. Create an empty object. FileMap::FileMap(void) : mRefCount(1), mFileName(NULL), mBasePtr(NULL), mBaseLength(0), mDataPtr(NULL), mDataLength(0) { } -/* - * Destructor. - */ +// Destructor. FileMap::~FileMap(void) { assert(mRefCount == 0); - //printf("+++ removing FileMap %p %u\n", mDataPtr, mDataLength); + //printf("+++ removing FileMap %p %zu\n", mDataPtr, mDataLength); mRefCount = -100; // help catch double-free if (mFileName != NULL) { free(mFileName); } -#ifdef HAVE_POSIX_FILEMAP +#ifdef HAVE_POSIX_FILEMAP if (mBasePtr && munmap(mBasePtr, mBaseLength) != 0) { - ALOGD("munmap(%p, %d) failed\n", mBasePtr, (int) mBaseLength); + ALOGD("munmap(%p, %zu) failed\n", mBasePtr, mBaseLength); } #endif #ifdef HAVE_WIN32_FILEMAP if (mBasePtr && UnmapViewOfFile(mBasePtr) == 0) { - ALOGD("UnmapViewOfFile(%p) failed, error = %ld\n", mBasePtr, + ALOGD("UnmapViewOfFile(%p) failed, error = %" PRId32 "\n", mBasePtr, GetLastError() ); } if (mFileMapping != INVALID_HANDLE_VALUE) { @@ -80,14 +82,12 @@ FileMap::~FileMap(void) } -/* - * Create a new mapping on an open file. - * - * Closing the file descriptor does not unmap the pages, so we don't - * claim ownership of the fd. - * - * Returns "false" on failure. - */ +// Create a new mapping on an open file. +// +// Closing the file descriptor does not unmap the pages, so we don't +// claim ownership of the fd. +// +// Returns "false" on failure. bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t length, bool readOnly) { @@ -98,32 +98,32 @@ bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t le if (mPageSize == -1) { SYSTEM_INFO si; - + GetSystemInfo( &si ); mPageSize = si.dwAllocationGranularity; } DWORD protect = readOnly ? PAGE_READONLY : PAGE_READWRITE; - + mFileHandle = (HANDLE) _get_osfhandle(fd); mFileMapping = CreateFileMapping( mFileHandle, NULL, protect, 0, 0, NULL); if (mFileMapping == NULL) { - ALOGE("CreateFileMapping(%p, %lx) failed with error %ld\n", + ALOGE("CreateFileMapping(%p, %" PRIx32 ") failed with error %" PRId32 "\n", mFileHandle, protect, GetLastError() ); return false; } - + adjust = offset % mPageSize; adjOffset = offset - adjust; adjLength = length + adjust; - - mBasePtr = MapViewOfFile( mFileMapping, + + mBasePtr = MapViewOfFile( mFileMapping, readOnly ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS, 0, (DWORD)(adjOffset), adjLength ); if (mBasePtr == NULL) { - ALOGE("MapViewOfFile(%ld, %ld) failed with error %ld\n", + ALOGE("MapViewOfFile(%" PRId64 ", %zu) failed with error %" PRId32 "\n", adjOffset, adjLength, GetLastError() ); CloseHandle(mFileMapping); mFileMapping = INVALID_HANDLE_VALUE; @@ -142,7 +142,7 @@ bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t le assert(offset >= 0); assert(length > 0); - /* init on first use */ + // init on first use if (mPageSize == -1) { #if NOT_USING_KLIBC mPageSize = sysconf(_SC_PAGESIZE); @@ -151,7 +151,7 @@ bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t le return false; } #else - /* this holds for Linux, Darwin, Cygwin, and doesn't pain the ARM */ + // this holds for Linux, Darwin, Cygwin, and doesn't pain the ARM mPageSize = 4096; #endif } @@ -168,19 +168,19 @@ try_again: ptr = mmap(NULL, adjLength, prot, flags, fd, adjOffset); if (ptr == MAP_FAILED) { - // Cygwin does not seem to like file mapping files from an offset. - // So if we fail, try again with offset zero - if (adjOffset > 0) { - adjust = offset; - goto try_again; - } - - ALOGE("mmap(%ld,%ld) failed: %s\n", - (long) adjOffset, (long) adjLength, strerror(errno)); + // Cygwin does not seem to like file mapping files from an offset. + // So if we fail, try again with offset zero + if (adjOffset > 0) { + adjust = offset; + goto try_again; + } + + ALOGE("mmap(%lld,%zu) failed: %s\n", + (long long)adjOffset, adjLength, strerror(errno)); return false; } mBasePtr = ptr; -#endif /* HAVE_POSIX_FILEMAP */ +#endif // HAVE_POSIX_FILEMAP mFileName = origFileName != NULL ? strdup(origFileName) : NULL; mBaseLength = adjLength; @@ -190,15 +190,13 @@ try_again: assert(mBasePtr != NULL); - ALOGV("MAP: base %p/%d data %p/%d\n", - mBasePtr, (int) mBaseLength, mDataPtr, (int) mDataLength); + ALOGV("MAP: base %p/%zu data %p/%zu\n", + mBasePtr, mBaseLength, mDataPtr, mDataLength); return true; } -/* - * Provide guidance to the system. - */ +// Provide guidance to the system. int FileMap::advise(MapAdvice advice) { #if HAVE_MADVISE @@ -220,6 +218,6 @@ int FileMap::advise(MapAdvice advice) ALOGW("madvise(%d) failed: %s\n", sysAdvice, strerror(errno)); return cc; #else - return -1; + return -1; #endif // HAVE_MADVISE } diff --git a/libutils/LinearAllocator.cpp b/libutils/LinearAllocator.cpp index a07a291..8b90696 100644 --- a/libutils/LinearAllocator.cpp +++ b/libutils/LinearAllocator.cpp @@ -92,7 +92,7 @@ public: : mNextPage(0) {} - void* operator new(size_t size, void* buf) { return buf; } + void* operator new(size_t /*size*/, void* buf) { return buf; } void* start() { return (void*) (((size_t)this) + sizeof(Page)); @@ -103,7 +103,7 @@ public: } private: - Page(const Page& other) {} + Page(const Page& /*other*/) {} Page* mNextPage; }; diff --git a/libutils/Printer.cpp b/libutils/Printer.cpp index 263e740..1dc8632 100644 --- a/libutils/Printer.cpp +++ b/libutils/Printer.cpp @@ -25,10 +25,6 @@ #include <stdio.h> #include <stdlib.h> -#ifndef __BIONIC__ -#define fdprintf dprintf -#endif - namespace android { /* @@ -120,7 +116,7 @@ void FdPrinter::printLine(const char* string) { } #ifndef USE_MINGW - fdprintf(mFd, mFormatString, mPrefix, string); + dprintf(mFd, mFormatString, mPrefix, string); #endif } diff --git a/libutils/RefBase.cpp b/libutils/RefBase.cpp index f398a82..02907ad 100644 --- a/libutils/RefBase.cpp +++ b/libutils/RefBase.cpp @@ -17,6 +17,14 @@ #define LOG_TAG "RefBase" // #define LOG_NDEBUG 0 +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <typeinfo> +#include <unistd.h> + #include <utils/RefBase.h> #include <utils/Atomic.h> @@ -24,13 +32,9 @@ #include <utils/Log.h> #include <utils/threads.h> -#include <stdlib.h> -#include <stdio.h> -#include <typeinfo> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> +#ifndef __unused +#define __unused __attribute__((__unused__)) +#endif // compile with refcounting debugging enabled #define DEBUG_REFS 0 @@ -109,7 +113,7 @@ public: char inc = refs->ref >= 0 ? '+' : '-'; ALOGD("\t%c ID %p (ref %d):", inc, refs->id, refs->ref); #if DEBUG_REFS_CALLSTACK_ENABLED - refs->stack.dump(LOG_TAG); + refs->stack.log(LOG_TAG); #endif refs = refs->next; } @@ -123,7 +127,7 @@ public: char inc = refs->ref >= 0 ? '+' : '-'; ALOGD("\t%c ID %p (ref %d):", inc, refs->id, refs->ref); #if DEBUG_REFS_CALLSTACK_ENABLED - refs->stack.dump(LOG_TAG); + refs->stack.log(LOG_TAG); #endif refs = refs->next; } @@ -388,7 +392,7 @@ void RefBase::weakref_type::incWeak(const void* id) { weakref_impl* const impl = static_cast<weakref_impl*>(this); impl->addWeakRef(id); - const int32_t c = android_atomic_inc(&impl->mWeak); + const int32_t c __unused = android_atomic_inc(&impl->mWeak); ALOG_ASSERT(c >= 0, "incWeak called on %p after last weak ref", this); } @@ -615,7 +619,7 @@ void RefBase::onLastStrongRef(const void* /*id*/) { } -bool RefBase::onIncStrongAttempted(uint32_t flags, const void* id) +bool RefBase::onIncStrongAttempted(uint32_t flags, const void* /*id*/) { return (flags&FIRST_INC_STRONG) ? true : false; } @@ -626,13 +630,15 @@ void RefBase::onLastWeakRef(const void* /*id*/) // --------------------------------------------------------------------------- -void RefBase::renameRefs(size_t n, const ReferenceRenamer& renamer) { #if DEBUG_REFS +void RefBase::renameRefs(size_t n, const ReferenceRenamer& renamer) { for (size_t i=0 ; i<n ; i++) { renamer(i); } -#endif } +#else +void RefBase::renameRefs(size_t /*n*/, const ReferenceRenamer& /*renamer*/) { } +#endif void RefBase::renameRefId(weakref_type* ref, const void* old_id, const void* new_id) { diff --git a/libutils/StopWatch.cpp b/libutils/StopWatch.cpp index b1708d6..8c7b596 100644 --- a/libutils/StopWatch.cpp +++ b/libutils/StopWatch.cpp @@ -21,7 +21,9 @@ #include <stdio.h> /* for PRId64 */ +#ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS 1 +#endif #include <inttypes.h> #include <utils/Log.h> diff --git a/libutils/String16.cpp b/libutils/String16.cpp index b09b728..91efdaa 100644 --- a/libutils/String16.cpp +++ b/libutils/String16.cpp @@ -16,7 +16,6 @@ #include <utils/String16.h> -#include <utils/Debug.h> #include <utils/Log.h> #include <utils/Unicode.h> #include <utils/String8.h> @@ -67,8 +66,6 @@ static char16_t* allocFromUTF8(const char* u8str, size_t u8len) return getEmptyString(); } - const uint8_t* const u8end = u8cur + u8len; - SharedBuffer* buf = SharedBuffer::alloc(sizeof(char16_t)*(u16len+1)); if (buf) { u8cur = (const uint8_t*) u8str; diff --git a/libutils/String8.cpp b/libutils/String8.cpp index e852d77..49340bb 100644 --- a/libutils/String8.cpp +++ b/libutils/String8.cpp @@ -323,8 +323,17 @@ status_t String8::appendFormat(const char* fmt, ...) status_t String8::appendFormatV(const char* fmt, va_list args) { - int result = NO_ERROR; - int n = vsnprintf(NULL, 0, fmt, args); + int n, result = NO_ERROR; + va_list tmp_args; + + /* args is undefined after vsnprintf. + * So we need a copy here to avoid the + * second vsnprintf access undefined args. + */ + va_copy(tmp_args, args); + n = vsnprintf(NULL, 0, fmt, tmp_args); + va_end(tmp_args); + if (n != 0) { size_t oldLength = length(); char* buf = lockBuffer(oldLength + n); @@ -542,7 +551,6 @@ char* String8::find_extension(void) const { const char* lastSlash; const char* lastDot; - int extLen; const char* const str = mString; // only look at the filename diff --git a/libutils/SystemClock.cpp b/libutils/SystemClock.cpp index 413250f..dbad581 100644 --- a/libutils/SystemClock.cpp +++ b/libutils/SystemClock.cpp @@ -68,13 +68,7 @@ int64_t elapsedRealtime() */ #define DEBUG_TIMESTAMP 0 -static const char *gettime_method_names[] = { - "clock_gettime", - "ioctl", - "systemTime", -}; - -#if DEBUG_TIMESTAMP +#if DEBUG_TIMESTAMP && defined(ARCH_ARM) static inline void checkTimeStamps(int64_t timestamp, int64_t volatile *prevTimestampPtr, int volatile *prevMethodPtr, @@ -85,11 +79,16 @@ static inline void checkTimeStamps(int64_t timestamp, * gettid, and int64_t is different on the ARM platform * (ie long vs long long). */ -#ifdef ARCH_ARM int64_t prevTimestamp = *prevTimestampPtr; int prevMethod = *prevMethodPtr; if (timestamp < prevTimestamp) { + static const char *gettime_method_names[] = { + "clock_gettime", + "ioctl", + "systemTime", + }; + ALOGW("time going backwards: prev %lld(%s) vs now %lld(%s), tid=%d", prevTimestamp, gettime_method_names[prevMethod], timestamp, gettime_method_names[curMethod], @@ -99,7 +98,6 @@ static inline void checkTimeStamps(int64_t timestamp, // write is interrupted or not observed as a whole. *prevTimestampPtr = timestamp; *prevMethodPtr = curMethod; -#endif } #else #define checkTimeStamps(timestamp, prevTimestampPtr, prevMethodPtr, curMethod) diff --git a/libutils/Threads.cpp b/libutils/Threads.cpp index ff74914..cc7fe89 100644 --- a/libutils/Threads.cpp +++ b/libutils/Threads.cpp @@ -17,16 +17,11 @@ // #define LOG_NDEBUG 0 #define LOG_TAG "libutils.threads" -#include <utils/threads.h> -#include <utils/Log.h> - -#include <cutils/sched_policy.h> - +#include <assert.h> +#include <errno.h> +#include <memory.h> #include <stdio.h> #include <stdlib.h> -#include <memory.h> -#include <errno.h> -#include <assert.h> #include <unistd.h> #if defined(HAVE_PTHREADS) @@ -47,6 +42,17 @@ #include <sys/prctl.h> #endif +#include <utils/threads.h> +#include <utils/Log.h> + +#include <cutils/sched_policy.h> + +#ifdef HAVE_ANDROID_OS +# define __android_unused +#else +# define __android_unused __attribute__((__unused__)) +#endif + /* * =========================================================================== * Thread wrappers @@ -119,7 +125,7 @@ void androidSetThreadName(const char* name) { int androidCreateRawThreadEtc(android_thread_func_t entryFunction, void *userData, - const char* threadName, + const char* threadName __android_unused, int32_t threadPriority, size_t threadStackSize, android_thread_id_t *threadId) @@ -251,9 +257,9 @@ static bool doCreateThread(android_thread_func_t fn, void* arg, android_thread_i int androidCreateRawThreadEtc(android_thread_func_t fn, void *userData, - const char* threadName, - int32_t threadPriority, - size_t threadStackSize, + const char* /*threadName*/, + int32_t /*threadPriority*/, + size_t /*threadStackSize*/, android_thread_id_t *threadId) { return doCreateThread( fn, userData, threadId); diff --git a/libutils/Timers.cpp b/libutils/Timers.cpp index 5293cd2..4687d4d 100644 --- a/libutils/Timers.cpp +++ b/libutils/Timers.cpp @@ -32,9 +32,9 @@ #include <windows.h> #endif +#if defined(HAVE_ANDROID_OS) nsecs_t systemTime(int clock) { -#if defined(HAVE_POSIX_CLOCKS) static const clockid_t clocks[] = { CLOCK_REALTIME, CLOCK_MONOTONIC, @@ -46,14 +46,19 @@ nsecs_t systemTime(int clock) t.tv_sec = t.tv_nsec = 0; clock_gettime(clocks[clock], &t); return nsecs_t(t.tv_sec)*1000000000LL + t.tv_nsec; +} #else - // we don't support the clocks here. +nsecs_t systemTime(int /*clock*/) +{ + // Clock support varies widely across hosts. Mac OS doesn't support + // posix clocks, older glibcs don't support CLOCK_BOOTTIME and Windows + // is windows. struct timeval t; t.tv_sec = t.tv_usec = 0; gettimeofday(&t, NULL); return nsecs_t(t.tv_sec)*1000000000LL + nsecs_t(t.tv_usec)*1000LL; -#endif } +#endif int toMillisecondTimeoutDelay(nsecs_t referenceTime, nsecs_t timeoutTime) { diff --git a/libutils/Unicode.cpp b/libutils/Unicode.cpp index a66e3bb..fe8887d 100644 --- a/libutils/Unicode.cpp +++ b/libutils/Unicode.cpp @@ -576,7 +576,7 @@ void utf8_to_utf16(const uint8_t* u8str, size_t u8len, char16_t* u16str) { char16_t* utf8_to_utf16_n(const uint8_t* src, size_t srcLen, char16_t* dst, size_t dstLen) { const uint8_t* const u8end = src + srcLen; const uint8_t* u8cur = src; - const uint16_t* const u16end = dst + dstLen; + const char16_t* const u16end = dst + dstLen; char16_t* u16cur = dst; while (u8cur < u8end && u16cur < u16end) { diff --git a/libutils/tests/BasicHashtable_test.cpp b/libutils/tests/BasicHashtable_test.cpp index 7dcf750..a61b1e1 100644 --- a/libutils/tests/BasicHashtable_test.cpp +++ b/libutils/tests/BasicHashtable_test.cpp @@ -397,7 +397,7 @@ TEST_F(BasicHashtableTest, Next_WhenNonEmpty_IteratesOverAllEntries) { const SimpleEntry& entry = h.entryAt(index); ASSERT_GE(entry.key, 0); ASSERT_LT(entry.key, N); - ASSERT_EQ(false, set[entry.key]); + ASSERT_FALSE(set[entry.key]); ASSERT_EQ(entry.key * 10, entry.value); set[entry.key] = true; diff --git a/libutils/tests/BlobCache_test.cpp b/libutils/tests/BlobCache_test.cpp index 7202123..dac4e2c 100644 --- a/libutils/tests/BlobCache_test.cpp +++ b/libutils/tests/BlobCache_test.cpp @@ -44,7 +44,7 @@ protected: }; TEST_F(BlobCacheTest, CacheSingleValueSucceeds) { - char buf[4] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[4] = { 0xee, 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); ASSERT_EQ(size_t(4), mBC->get("abcd", 4, buf, 4)); ASSERT_EQ('e', buf[0]); @@ -54,7 +54,7 @@ TEST_F(BlobCacheTest, CacheSingleValueSucceeds) { } TEST_F(BlobCacheTest, CacheTwoValuesSucceeds) { - char buf[2] = { 0xee, 0xee }; + unsigned char buf[2] = { 0xee, 0xee }; mBC->set("ab", 2, "cd", 2); mBC->set("ef", 2, "gh", 2); ASSERT_EQ(size_t(2), mBC->get("ab", 2, buf, 2)); @@ -66,7 +66,7 @@ TEST_F(BlobCacheTest, CacheTwoValuesSucceeds) { } TEST_F(BlobCacheTest, GetOnlyWritesInsideBounds) { - char buf[6] = { 0xee, 0xee, 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[6] = { 0xee, 0xee, 0xee, 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); ASSERT_EQ(size_t(4), mBC->get("abcd", 4, buf+1, 4)); ASSERT_EQ(0xee, buf[0]); @@ -78,7 +78,7 @@ TEST_F(BlobCacheTest, GetOnlyWritesInsideBounds) { } TEST_F(BlobCacheTest, GetOnlyWritesIfBufferIsLargeEnough) { - char buf[3] = { 0xee, 0xee, 0xee }; + unsigned char buf[3] = { 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); ASSERT_EQ(size_t(4), mBC->get("abcd", 4, buf, 3)); ASSERT_EQ(0xee, buf[0]); @@ -92,7 +92,7 @@ TEST_F(BlobCacheTest, GetDoesntAccessNullBuffer) { } TEST_F(BlobCacheTest, MultipleSetsCacheLatestValue) { - char buf[4] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[4] = { 0xee, 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); mBC->set("abcd", 4, "ijkl", 4); ASSERT_EQ(size_t(4), mBC->get("abcd", 4, buf, 4)); @@ -103,7 +103,7 @@ TEST_F(BlobCacheTest, MultipleSetsCacheLatestValue) { } TEST_F(BlobCacheTest, SecondSetKeepsFirstValueIfTooLarge) { - char buf[MAX_VALUE_SIZE+1] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[MAX_VALUE_SIZE+1] = { 0xee, 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); mBC->set("abcd", 4, buf, MAX_VALUE_SIZE+1); ASSERT_EQ(size_t(4), mBC->get("abcd", 4, buf, 4)); @@ -115,7 +115,7 @@ TEST_F(BlobCacheTest, SecondSetKeepsFirstValueIfTooLarge) { TEST_F(BlobCacheTest, DoesntCacheIfKeyIsTooBig) { char key[MAX_KEY_SIZE+1]; - char buf[4] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[4] = { 0xee, 0xee, 0xee, 0xee }; for (int i = 0; i < MAX_KEY_SIZE+1; i++) { key[i] = 'a'; } @@ -165,7 +165,7 @@ TEST_F(BlobCacheTest, DoesntCacheIfKeyValuePairIsTooBig) { TEST_F(BlobCacheTest, CacheMaxKeySizeSucceeds) { char key[MAX_KEY_SIZE]; - char buf[4] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[4] = { 0xee, 0xee, 0xee, 0xee }; for (int i = 0; i < MAX_KEY_SIZE; i++) { key[i] = 'a'; } @@ -214,7 +214,7 @@ TEST_F(BlobCacheTest, CacheMaxKeyValuePairSizeSucceeds) { } TEST_F(BlobCacheTest, CacheMinKeyAndValueSizeSucceeds) { - char buf[1] = { 0xee }; + unsigned char buf[1] = { 0xee }; mBC->set("x", 1, "y", 1); ASSERT_EQ(size_t(1), mBC->get("x", 1, buf, 1)); ASSERT_EQ('y', buf[0]); @@ -282,7 +282,7 @@ protected: }; TEST_F(BlobCacheFlattenTest, FlattenOneValue) { - char buf[4] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[4] = { 0xee, 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); roundTrip(); ASSERT_EQ(size_t(4), mBC2->get("abcd", 4, buf, 4)); @@ -348,7 +348,7 @@ TEST_F(BlobCacheFlattenTest, FlattenCatchesBufferTooSmall) { } TEST_F(BlobCacheFlattenTest, UnflattenCatchesBadMagic) { - char buf[4] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[4] = { 0xee, 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); size_t size = mBC->getFlattenedSize(); @@ -365,7 +365,7 @@ TEST_F(BlobCacheFlattenTest, UnflattenCatchesBadMagic) { } TEST_F(BlobCacheFlattenTest, UnflattenCatchesBadBlobCacheVersion) { - char buf[4] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[4] = { 0xee, 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); size_t size = mBC->getFlattenedSize(); @@ -384,7 +384,7 @@ TEST_F(BlobCacheFlattenTest, UnflattenCatchesBadBlobCacheVersion) { } TEST_F(BlobCacheFlattenTest, UnflattenCatchesBadBlobCacheDeviceVersion) { - char buf[4] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[4] = { 0xee, 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); size_t size = mBC->getFlattenedSize(); @@ -403,7 +403,7 @@ TEST_F(BlobCacheFlattenTest, UnflattenCatchesBadBlobCacheDeviceVersion) { } TEST_F(BlobCacheFlattenTest, UnflattenCatchesBufferTooSmall) { - char buf[4] = { 0xee, 0xee, 0xee, 0xee }; + unsigned char buf[4] = { 0xee, 0xee, 0xee, 0xee }; mBC->set("abcd", 4, "efgh", 4); size_t size = mBC->getFlattenedSize(); diff --git a/libutils/tests/LruCache_test.cpp b/libutils/tests/LruCache_test.cpp index e573952..bcbea32 100644 --- a/libutils/tests/LruCache_test.cpp +++ b/libutils/tests/LruCache_test.cpp @@ -184,7 +184,7 @@ TEST_F(LruCacheTest, StressTest) { for (size_t i = 0; i < kNumKeys; i++) { strings[i] = (char *)malloc(16); - sprintf(strings[i], "%d", i); + sprintf(strings[i], "%zu", i); } srandom(12345); |