diff options
author | Dan Willemsen <dwillemsen@google.com> | 2016-02-03 23:29:32 -0800 |
---|---|---|
committer | Dan Willemsen <dwillemsen@google.com> | 2016-02-05 16:10:10 -0800 |
commit | 86cf941c480de8d5693a24d3feb45574f5c89a86 (patch) | |
tree | ab2a1ea9396da91aab8b15ac37784c328527eede | |
parent | 9c551a1bece6624bdbdfca40badc07b40b28ec1c (diff) | |
download | system_core-86cf941c480de8d5693a24d3feb45574f5c89a86.tar.gz system_core-86cf941c480de8d5693a24d3feb45574f5c89a86.tar.bz2 system_core-86cf941c480de8d5693a24d3feb45574f5c89a86.zip |
Fix windows 64-bit builds
pid_t is 64-bit in 64-bit mingw, but the windows process/thread
functions return a DWORD(uint32_t). Instead of promoting to a pid_t and
fixing the format strings, just use a uint32_t to store the values.
android_thread_id also cannot be a 64-bit pointer, so for windows just
force it to be a uint32_t.
libutils/ProcessCallStack only works under Linux, since it makes heavy
use of /proc. Don't compile it under Windows or Darwin.
Bug: 26957718
Change-Id: I4e43e7cf18a96f22b3a9a08dbab8c3e960c12930
-rw-r--r-- | base/logging.cpp | 8 | ||||
-rw-r--r-- | include/utils/ThreadDefs.h | 4 | ||||
-rw-r--r-- | liblog/fake_log_device.c | 4 | ||||
-rw-r--r-- | libutils/Android.mk | 4 | ||||
-rw-r--r-- | libutils/ProcessCallStack.cpp | 2 |
5 files changed, 17 insertions, 5 deletions
diff --git a/base/logging.cpp b/base/logging.cpp index a385902e8..174187149 100644 --- a/base/logging.cpp +++ b/base/logging.cpp @@ -68,7 +68,13 @@ #include <windows.h> #endif -static pid_t GetThreadId() { +#if defined(_WIN32) +typedef uint32_t thread_id; +#else +typedef pid_t thread_id; +#endif + +static thread_id GetThreadId() { #if defined(__BIONIC__) return gettid(); #elif defined(__APPLE__) diff --git a/include/utils/ThreadDefs.h b/include/utils/ThreadDefs.h index 9711c1379..ae091e40f 100644 --- a/include/utils/ThreadDefs.h +++ b/include/utils/ThreadDefs.h @@ -29,7 +29,11 @@ extern "C" { #endif +#ifdef _WIN32 +typedef uint32_t android_thread_id_t; +#else typedef void* android_thread_id_t; +#endif typedef int (*android_thread_func_t)(void*); diff --git a/liblog/fake_log_device.c b/liblog/fake_log_device.c index cb80ee63c..5f7a078c7 100644 --- a/liblog/fake_log_device.c +++ b/liblog/fake_log_device.c @@ -367,7 +367,11 @@ static void showLog(LogState *state, char prefixBuf[128], suffixBuf[128]; char priChar; time_t when; +#if !defined(_WIN32) pid_t pid, tid; +#else + uint32_t pid, tid; +#endif TRACE("LOG %d: %s %s", logPrio, tag, msg); diff --git a/libutils/Android.mk b/libutils/Android.mk index 631b5a3b4..3663c52b7 100644 --- a/libutils/Android.mk +++ b/libutils/Android.mk @@ -22,7 +22,6 @@ commonSources:= \ Log.cpp \ NativeHandle.cpp \ Printer.cpp \ - ProcessCallStack.cpp \ PropertyMap.cpp \ RefBase.cpp \ SharedBuffer.cpp \ @@ -44,7 +43,7 @@ host_commonCflags := -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -Werror # ===================================================== include $(CLEAR_VARS) LOCAL_SRC_FILES:= $(commonSources) -LOCAL_SRC_FILES_linux := Looper.cpp +LOCAL_SRC_FILES_linux := Looper.cpp ProcessCallStack.cpp LOCAL_CFLAGS_darwin := -Wno-unused-parameter LOCAL_MODULE:= libutils LOCAL_STATIC_LIBRARIES := liblog @@ -67,6 +66,7 @@ LOCAL_SRC_FILES:= \ $(commonSources) \ BlobCache.cpp \ Looper.cpp \ + ProcessCallStack.cpp \ Trace.cpp ifeq ($(TARGET_ARCH),mips) diff --git a/libutils/ProcessCallStack.cpp b/libutils/ProcessCallStack.cpp index 011c30291..cdb586d98 100644 --- a/libutils/ProcessCallStack.cpp +++ b/libutils/ProcessCallStack.cpp @@ -146,7 +146,6 @@ void ProcessCallStack::update() { clear(); // Get current time. -#ifndef USE_MINGW { time_t t = time(NULL); struct tm tm; @@ -199,7 +198,6 @@ void ProcessCallStack::update() { ALOGE("%s: Failed to readdir from %s: %s", __FUNCTION__, PATH_SELF_TASK, strerror(code)); } -#endif closedir(dp); } |