summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Cailean <mcailean@codeaurora.org>2018-12-13 10:08:18 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2019-02-07 11:13:58 -0800
commitdc0efb480067db854d27ef439c1fb598769ba361 (patch)
treeb7d82b3aed9615d95e9abf4c16795e4b06c0dc5f
parent9d6d95d09650ea9ada4771f00f1991b7a5f2cc91 (diff)
downloadgps-dc0efb480067db854d27ef439c1fb598769ba361.tar.gz
Enable support for External AP build
Enable support for build on External AP without libcutils or any Android library support. CRs-fixed: 2368435 Change-Id: I978127348fd6b8d90ed5ef0a714c02437dc59ee0
-rw-r--r--pla/oe/loc_pla.h17
-rw-r--r--utils/LocSharedLock.h20
-rw-r--r--utils/MsgTask.cpp2
-rw-r--r--utils/configure.ac18
4 files changed, 52 insertions, 5 deletions
diff --git a/pla/oe/loc_pla.h b/pla/oe/loc_pla.h
index 9446888..e795a23 100644
--- a/pla/oe/loc_pla.h
+++ b/pla/oe/loc_pla.h
@@ -30,7 +30,10 @@
#define __LOC_PLA__
#ifdef __cplusplus
+#ifndef FEATURE_EXTERNAL_AP
#include <utils/SystemClock.h>
+#endif /* FEATURE_EXTERNAL_AP */
+#include <inttypes.h>
#include <sys/time.h>
#include <time.h>
@@ -47,10 +50,14 @@ inline int64_t uptimeMillis()
extern "C" {
#endif
+#ifndef FEATURE_EXTERNAL_AP
#include <cutils/properties.h>
#include <cutils/threads.h>
#include <cutils/sched_policy.h>
+#endif /* FEATURE_EXTERNAL_AP */
+#include <pthread.h>
#include <sys/time.h>
+#include <sys/types.h>
#include <string.h>
#include <stdlib.h>
#ifndef OFF_TARGET
@@ -76,6 +83,16 @@ extern "C" {
#define LOC_PATH_XTWIFI_CONF_STR "/etc/xtwifi.conf"
#define LOC_PATH_QUIPC_CONF_STR "/etc/quipc.conf"
+#ifdef FEATURE_EXTERNAL_AP
+#define PROPERTY_VALUE_MAX 92
+
+inline int property_get(const char* key, char* value, const char* default_value)
+{
+ strlcpy(value, default_value, PROPERTY_VALUE_MAX - 1);
+ return strlen(value);
+}
+#endif /* FEATURE_EXTERNAL_AP */
+
#ifdef __cplusplus
}
#endif /*__cplusplus */
diff --git a/utils/LocSharedLock.h b/utils/LocSharedLock.h
index 7fe6237..a7af35e 100644
--- a/utils/LocSharedLock.h
+++ b/utils/LocSharedLock.h
@@ -30,10 +30,28 @@
#define __LOC_SHARED_LOCK__
#include <stddef.h>
+#ifndef FEATURE_EXTERNAL_AP
#include <cutils/atomic.h>
+#endif /* FEATURE_EXTERNAL_AP */
#include <pthread.h>
-// This is a utility created for use cases such that there are more than
+#ifdef FEATURE_EXTERNAL_AP
+#include <atomic>
+
+inline int32_t android_atomic_inc(volatile int32_t *addr)
+{
+ volatile std::atomic_int_least32_t* a = (volatile std::atomic_int_least32_t*)addr;
+ return std::atomic_fetch_add_explicit(a, 1, std::memory_order_release);
+}
+
+inline int32_t android_atomic_dec(volatile int32_t *addr)
+{
+ volatile std::atomic_int_least32_t* a = (volatile std::atomic_int_least32_t*)addr;
+ return std::atomic_fetch_sub_explicit(a, 1, std::memory_order_release);
+}
+
+#endif /* FEATURE_EXTERNAL_AP */
+ // This is a utility created for use cases such that there are more than
// one client who need to share the same lock, but it is not predictable
// which of these clients is to last to go away. This shared lock deletes
// itself when the last client calls its drop() method. To add a cient,
diff --git a/utils/MsgTask.cpp b/utils/MsgTask.cpp
index ad95a83..73a77fd 100644
--- a/utils/MsgTask.cpp
+++ b/utils/MsgTask.cpp
@@ -83,8 +83,10 @@ void MsgTask::sendMsg(const LocMsg* msg) const {
}
void MsgTask::prerun() {
+#ifndef FEATURE_EXTERNAL_AP
// make sure we do not run in background scheduling group
set_sched_policy(gettid(), SP_FOREGROUND);
+#endif /* FEATURE_EXTERNAL_AP */
}
bool MsgTask::run() {
diff --git a/utils/configure.ac b/utils/configure.ac
index 639f8c4..fd16494 100644
--- a/utils/configure.ac
+++ b/utils/configure.ac
@@ -28,10 +28,20 @@ AC_PROG_LN_S
AC_PROG_MAKE_SET
PKG_PROG_PKG_CONFIG
-# Checks for libraries.
-PKG_CHECK_MODULES([CUTILS], [libcutils])
-AC_SUBST([CUTILS_CFLAGS])
-AC_SUBST([CUTILS_LIBS])
+AC_ARG_WITH([external_ap],
+ AC_HELP_STRING([--with-external_ap=@<:@dir@:>@],
+ [Using External Application Processor]),
+ [],
+ with_external_ap=no)
+
+if test "x$with_external_ap" != "xno"; then
+ CPPFLAGS="${CPPFLAGS} -DFEATURE_EXTERNAL_AP"
+else
+ # Checks for libraries.
+ PKG_CHECK_MODULES([CUTILS], [libcutils])
+ AC_SUBST([CUTILS_CFLAGS])
+ AC_SUBST([CUTILS_LIBS])
+fi
AC_ARG_WITH([core_includes],
AC_HELP_STRING([--with-core-includes=@<:@dir@:>@],