am cfe99e79: merge in master-release history after reset to 102a072d900d56c54ced6144666d35e373fe84b1
* commit 'cfe99e79a6ae4d9fd08d09ecd66cee5da8a5fb95':
frameworks/native: Rename persist.sys.dalvik.vm.lib to allow new default
releax wait timeout on start of dumpstate service
diff --git a/cmds/servicemanager/service_manager.c b/cmds/servicemanager/service_manager.c
index cacbea0..b5d52dd 100644
--- a/cmds/servicemanager/service_manager.c
+++ b/cmds/servicemanager/service_manager.c
@@ -50,6 +50,7 @@
{ AID_MEDIA, "common_time.clock" },
{ AID_MEDIA, "common_time.config" },
{ AID_KEYSTORE, "android.security.keystore" },
+ { AID_RADIO, "telecomm" },
};
uint32_t svcmgr_handle;
diff --git a/include/android/sensor.h b/include/android/sensor.h
index 86de930..878f8ff 100644
--- a/include/android/sensor.h
+++ b/include/android/sensor.h
@@ -66,6 +66,7 @@
* Sensor accuracy measure
*/
enum {
+ ASENSOR_STATUS_NO_CONTACT = -1,
ASENSOR_STATUS_UNRELIABLE = 0,
ASENSOR_STATUS_ACCURACY_LOW = 1,
ASENSOR_STATUS_ACCURACY_MEDIUM = 2,
@@ -130,6 +131,11 @@
};
} AUncalibratedEvent;
+typedef struct AHeartRateEvent {
+ float bpm;
+ int8_t status;
+} AHeartRateEvent;
+
/* NOTE: Must match hardware/sensors.h */
typedef struct ASensorEvent {
int32_t version; /* sizeof(struct ASensorEvent) */
@@ -151,6 +157,7 @@
AUncalibratedEvent uncalibrated_gyro;
AUncalibratedEvent uncalibrated_magnetic;
AMetaDataEvent meta_data;
+ AHeartRateEvent heart_rate;
};
union {
uint64_t data[8];
@@ -299,13 +306,6 @@
*/
const char* ASensor_getStringType(ASensor const* sensor);
-/*
- * Returns the permission required to see or access this sensor, or the
- * empty string if none is required.
- */
-const char* ASensor_getRequiredPermission(ASensor const* sensor);
-
-
#ifdef __cplusplus
};
#endif
diff --git a/include/gui/Sensor.h b/include/gui/Sensor.h
index 41a6cc6..c1c98b9 100644
--- a/include/gui/Sensor.h
+++ b/include/gui/Sensor.h
@@ -71,6 +71,7 @@
int32_t getFifoMaxEventCount() const;
const String8& getStringType() const;
const String8& getRequiredPermission() const;
+ int32_t getMaxDelay() const;
bool isWakeUpSensor() const;
// LightFlattenable protocol
@@ -94,7 +95,7 @@
int32_t mFifoMaxEventCount;
String8 mStringType;
String8 mRequiredPermission;
- // Todo: Surface this in java SDK.
+ int32_t mMaxDelay;
bool mWakeUpSensor;
static void flattenString8(void*& buffer, size_t& size, const String8& string8);
static bool unflattenString8(void const*& buffer, size_t& size, String8& outputString8);
diff --git a/libs/gui/Sensor.cpp b/libs/gui/Sensor.cpp
index 6d12225..70180f8 100644
--- a/libs/gui/Sensor.cpp
+++ b/libs/gui/Sensor.cpp
@@ -16,6 +16,7 @@
#include <stdint.h>
#include <sys/types.h>
+#include <sys/limits.h>
#include <utils/Errors.h>
#include <utils/String8.h>
@@ -24,6 +25,7 @@
#include <hardware/sensors.h>
#include <gui/Sensor.h>
+#include <log/log.h>
// ----------------------------------------------------------------------------
namespace android {
@@ -33,7 +35,7 @@
: mHandle(0), mType(0),
mMinValue(0), mMaxValue(0), mResolution(0),
mPower(0), mMinDelay(0), mFifoReservedEventCount(0), mFifoMaxEventCount(0),
- mWakeUpSensor(false)
+ mMaxDelay(0), mWakeUpSensor(false)
{
}
@@ -61,6 +63,20 @@
mFifoMaxEventCount = 0;
}
+ if (halVersion >= SENSORS_DEVICE_API_VERSION_1_3) {
+ if (hwSensor->maxDelay > INT_MAX) {
+ // Max delay is declared as a 64 bit integer for 64 bit architectures. But it should
+ // always fit in a 32 bit integer, log error and cap it to INT_MAX.
+ ALOGE("Sensor maxDelay overflow error %s %lld", mName.string(), hwSensor->maxDelay);
+ mMaxDelay = INT_MAX;
+ } else {
+ mMaxDelay = (int32_t) hwSensor->maxDelay;
+ }
+ } else {
+ // For older hals set maxDelay to 0.
+ mMaxDelay = 0;
+ }
+
// Ensure existing sensors have correct string type and required
// permissions.
switch (mType) {
@@ -289,6 +305,10 @@
return mRequiredPermission;
}
+int32_t Sensor::getMaxDelay() const {
+ return mMaxDelay;
+}
+
bool Sensor::isWakeUpSensor() const {
return mWakeUpSensor;
}
@@ -298,7 +318,8 @@
size_t fixedSize =
sizeof(int32_t) * 3 +
sizeof(float) * 4 +
- sizeof(int32_t) * 3;
+ sizeof(int32_t) * 4 +
+ sizeof(bool) * 1;
size_t variableSize =
sizeof(uint32_t) + FlattenableUtils::align<4>(mName.length()) +
@@ -328,6 +349,8 @@
FlattenableUtils::write(buffer, size, mFifoMaxEventCount);
flattenString8(buffer, size, mStringType);
flattenString8(buffer, size, mRequiredPermission);
+ FlattenableUtils::write(buffer, size, mMaxDelay);
+ FlattenableUtils::write(buffer, size, mWakeUpSensor);
return NO_ERROR;
}
@@ -342,7 +365,8 @@
size_t fixedSize =
sizeof(int32_t) * 3 +
sizeof(float) * 4 +
- sizeof(int32_t) * 3;
+ sizeof(int32_t) * 4 +
+ sizeof(bool) * 1;
if (size < fixedSize) {
return NO_MEMORY;
}
@@ -364,6 +388,8 @@
if (!unflattenString8(buffer, size, mRequiredPermission)) {
return NO_MEMORY;
}
+ FlattenableUtils::read(buffer, size, mMaxDelay);
+ FlattenableUtils::read(buffer, size, mWakeUpSensor);
return NO_ERROR;
}
diff --git a/opengl/libs/EGL/getProcAddress.cpp b/opengl/libs/EGL/getProcAddress.cpp
index add2a79..5470d81 100644
--- a/opengl/libs/EGL/getProcAddress.cpp
+++ b/opengl/libs/EGL/getProcAddress.cpp
@@ -56,6 +56,50 @@
: \
);
+#elif defined(__i386__)
+
+ #define API_ENTRY(_api) __attribute__((noinline)) _api
+
+ #define CALL_GL_EXTENSION_API(_api) \
+ register void** fn; \
+ __asm__ volatile( \
+ "mov %%gs:0, %[fn]\n" \
+ "mov %P[tls](%[fn]), %[fn]\n" \
+ "test %[fn], %[fn]\n" \
+ "cmovne %P[api](%[fn]), %[fn]\n" \
+ "test %[fn], %[fn]\n" \
+ "je 1f\n" \
+ "jmp *%[fn]\n" \
+ "1:\n" \
+ : [fn] "=r" (fn) \
+ : [tls] "i" (TLS_SLOT_OPENGL_API*sizeof(void*)), \
+ [api] "i" (__builtin_offsetof(gl_hooks_t, \
+ ext.extensions[_api])) \
+ : "cc" \
+ );
+
+#elif defined(__x86_64__)
+
+ #define API_ENTRY(_api) __attribute__((noinline)) _api
+
+ #define CALL_GL_EXTENSION_API(_api) \
+ register void** fn; \
+ __asm__ volatile( \
+ "mov %%fs:0, %[fn]\n" \
+ "mov %P[tls](%[fn]), %[fn]\n" \
+ "test %[fn], %[fn]\n" \
+ "cmovne %P[api](%[fn]), %[fn]\n" \
+ "test %[fn], %[fn]\n" \
+ "je 1f\n" \
+ "jmp *%[fn]\n" \
+ "1:\n" \
+ : [fn] "=r" (fn) \
+ : [tls] "i" (TLS_SLOT_OPENGL_API*sizeof(void*)), \
+ [api] "i" (__builtin_offsetof(gl_hooks_t, \
+ ext.extensions[_api])) \
+ : "cc" \
+ );
+
#elif defined(__mips__)
#define API_ENTRY(_api) __attribute__((noinline)) _api
@@ -86,6 +130,7 @@
ext.extensions[_api])) \
: \
);
+
#endif
#if defined(CALL_GL_EXTENSION_API)
diff --git a/opengl/libs/GLES2/gl2.cpp b/opengl/libs/GLES2/gl2.cpp
index 75fc95c..1aef9f3 100644
--- a/opengl/libs/GLES2/gl2.cpp
+++ b/opengl/libs/GLES2/gl2.cpp
@@ -54,6 +54,44 @@
: \
);
+#elif defined(__i386__) && !USE_SLOW_BINDING
+
+ #define API_ENTRY(_api) __attribute__((noinline)) _api
+
+ #define CALL_GL_API(_api, ...) \
+ register void** fn; \
+ __asm__ volatile( \
+ "mov %%gs:0, %[fn]\n" \
+ "mov %P[tls](%[fn]), %[fn]\n" \
+ "test %[fn], %[fn]\n" \
+ "je 1f\n" \
+ "jmp *%P[api](%[fn])\n" \
+ "1:\n" \
+ : [fn] "=r" (fn) \
+ : [tls] "i" (TLS_SLOT_OPENGL_API*sizeof(void*)), \
+ [api] "i" (__builtin_offsetof(gl_hooks_t, gl._api)) \
+ : "cc" \
+ );
+
+#elif defined(__x86_64__) && !USE_SLOW_BINDING
+
+ #define API_ENTRY(_api) __attribute__((noinline)) _api
+
+ #define CALL_GL_API(_api, ...) \
+ register void** fn; \
+ __asm__ volatile( \
+ "mov %%fs:0, %[fn]\n" \
+ "mov %P[tls](%[fn]), %[fn]\n" \
+ "test %[fn], %[fn]\n" \
+ "je 1f\n" \
+ "jmp *%P[api](%[fn])\n" \
+ "1:\n" \
+ : [fn] "=r" (fn) \
+ : [tls] "i" (TLS_SLOT_OPENGL_API*sizeof(void*)), \
+ [api] "i" (__builtin_offsetof(gl_hooks_t, gl._api)) \
+ : "cc" \
+ );
+
#elif defined(__mips__) && !USE_SLOW_BINDING
#define API_ENTRY(_api) __attribute__((noinline)) _api
diff --git a/opengl/libs/GLES_CM/gl.cpp b/opengl/libs/GLES_CM/gl.cpp
index e5de4a7..b18c95c 100644
--- a/opengl/libs/GLES_CM/gl.cpp
+++ b/opengl/libs/GLES_CM/gl.cpp
@@ -110,6 +110,44 @@
: \
);
+#elif defined(__i386__) && !USE_SLOW_BINDING
+
+ #define API_ENTRY(_api) __attribute__((noinline)) _api
+
+ #define CALL_GL_API(_api, ...) \
+ register void* fn; \
+ __asm__ volatile( \
+ "mov %%gs:0, %[fn]\n" \
+ "mov %P[tls](%[fn]), %[fn]\n" \
+ "test %[fn], %[fn]\n" \
+ "je 1f\n" \
+ "jmp *%P[api](%[fn])\n" \
+ "1:\n" \
+ : [fn] "=r" (fn) \
+ : [tls] "i" (TLS_SLOT_OPENGL_API*sizeof(void*)), \
+ [api] "i" (__builtin_offsetof(gl_hooks_t, gl._api)) \
+ : "cc" \
+ );
+
+#elif defined(__x86_64__) && !USE_SLOW_BINDING
+
+ #define API_ENTRY(_api) __attribute__((noinline)) _api
+
+ #define CALL_GL_API(_api, ...) \
+ register void** fn; \
+ __asm__ volatile( \
+ "mov %%fs:0, %[fn]\n" \
+ "mov %P[tls](%[fn]), %[fn]\n" \
+ "test %[fn], %[fn]\n" \
+ "je 1f\n" \
+ "jmp *%P[api](%[fn])\n" \
+ "1:\n" \
+ : [fn] "=r" (fn) \
+ : [tls] "i" (TLS_SLOT_OPENGL_API*sizeof(void*)), \
+ [api] "i" (__builtin_offsetof(gl_hooks_t, gl._api)) \
+ : "cc" \
+ );
+
#elif defined(__mips__) && !USE_SLOW_BINDING
#define API_ENTRY(_api) __attribute__((noinline)) _api
diff --git a/services/sensorservice/SensorInterface.cpp b/services/sensorservice/SensorInterface.cpp
index 2bf5e72..970220b 100644
--- a/services/sensorservice/SensorInterface.cpp
+++ b/services/sensorservice/SensorInterface.cpp
@@ -17,8 +17,6 @@
#include <stdint.h>
#include <sys/types.h>
-#include <cutils/log.h>
-
#include "SensorInterface.h"
namespace android {
@@ -34,7 +32,6 @@
: mSensorDevice(SensorDevice::getInstance()),
mSensor(&sensor, mSensorDevice.getHalDeviceVersion())
{
- ALOGI("%s", sensor.name);
}
HardwareSensor::~HardwareSensor() {
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
index aff4e9a..1bee04f 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -159,7 +159,6 @@
mSocketBufferSize = MAX_SOCKET_BUFFER_SIZE_BATCHED;
}
}
- ALOGD("Max socket buffer size %u", mSocketBufferSize);
if (fp) {
fclose(fp);
}