AArch64: Use long for pointers in hardware classes
For storing pointers, long is used in hardware classes,
as native pointers can be 64-bit.
In addition, some minor changes have been done
to conform with standard JNI practice (e.g. use
of jint instead of int in JNI function prototypes)
Change-Id: Icdeb67f9273fb2d8f6d88ca68d7f7d0950796fc1
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
diff --git a/core/jni/android_hardware_UsbRequest.cpp b/core/jni/android_hardware_UsbRequest.cpp
index 32d5135..01eaec4 100644
--- a/core/jni/android_hardware_UsbRequest.cpp
+++ b/core/jni/android_hardware_UsbRequest.cpp
@@ -32,7 +32,7 @@
struct usb_request* get_request_from_object(JNIEnv* env, jobject java_request)
{
- return (struct usb_request*)env->GetIntField(java_request, field_context);
+ return (struct usb_request*)env->GetLongField(java_request, field_context);
}
// in android_hardware_UsbDeviceConnection.cpp
@@ -61,7 +61,7 @@
struct usb_request* request = usb_request_new(device, &desc);
if (request)
- env->SetIntField(thiz, field_context, (int)request);
+ env->SetLongField(thiz, field_context, (jlong)request);
return (request != NULL);
}
@@ -72,7 +72,7 @@
struct usb_request* request = get_request_from_object(env, thiz);
if (request) {
usb_request_free(request);
- env->SetIntField(thiz, field_context, 0);
+ env->SetLongField(thiz, field_context, 0);
}
}
@@ -114,14 +114,14 @@
}
}
-static int
+static jint
android_hardware_UsbRequest_dequeue_array(JNIEnv *env, jobject thiz,
jbyteArray buffer, jint length, jboolean out)
{
struct usb_request* request = get_request_from_object(env, thiz);
if (!request) {
ALOGE("request is closed in native_dequeue");
- return -1;
+ return (jint) -1;
}
if (buffer && length && request->buffer && !out) {
@@ -130,7 +130,7 @@
}
free(request->buffer);
env->DeleteGlobalRef((jobject)request->client_data);
- return request->actual_length;
+ return (jint) request->actual_length;
}
static jboolean
@@ -164,17 +164,17 @@
}
}
-static int
+static jint
android_hardware_UsbRequest_dequeue_direct(JNIEnv *env, jobject thiz)
{
struct usb_request* request = get_request_from_object(env, thiz);
if (!request) {
ALOGE("request is closed in native_dequeue");
- return -1;
+ return (jint) -1;
}
// all we need to do is delete our global ref
env->DeleteGlobalRef((jobject)request->client_data);
- return request->actual_length;
+ return (jint) request->actual_length;
}
static jboolean
@@ -207,7 +207,7 @@
ALOGE("Can't find android/hardware/usb/UsbRequest");
return -1;
}
- field_context = env->GetFieldID(clazz, "mNativeContext", "I");
+ field_context = env->GetFieldID(clazz, "mNativeContext", "J");
if (field_context == NULL) {
ALOGE("Can't find UsbRequest.mNativeContext");
return -1;