Merge "AArch64: Use long for pointers in App/Backup"

This commit is contained in:
Narayan Kamath
2014-01-08 11:54:29 +00:00
committed by Gerrit Code Review
10 changed files with 138 additions and 140 deletions

View File

@@ -76,7 +76,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
private NativeContentView mNativeContentView;
private InputMethodManager mIMM;
private int mNativeHandle;
private long mNativeHandle;
private InputQueue mCurInputQueue;
private SurfaceHolder mCurSurfaceHolder;
@@ -91,27 +91,26 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
private boolean mDestroyed;
private native int loadNativeCode(String path, String funcname, MessageQueue queue,
private native long loadNativeCode(String path, String funcname, MessageQueue queue,
String internalDataPath, String obbPath, String externalDataPath, int sdkVersion,
AssetManager assetMgr, byte[] savedState);
private native void unloadNativeCode(int handle);
private native void onStartNative(int handle);
private native void onResumeNative(int handle);
private native byte[] onSaveInstanceStateNative(int handle);
private native void onPauseNative(int handle);
private native void onStopNative(int handle);
private native void onConfigurationChangedNative(int handle);
private native void onLowMemoryNative(int handle);
private native void onWindowFocusChangedNative(int handle, boolean focused);
private native void onSurfaceCreatedNative(int handle, Surface surface);
private native void onSurfaceChangedNative(int handle, Surface surface,
private native void unloadNativeCode(long handle);
private native void onStartNative(long handle);
private native void onResumeNative(long handle);
private native byte[] onSaveInstanceStateNative(long handle);
private native void onPauseNative(long handle);
private native void onStopNative(long handle);
private native void onConfigurationChangedNative(long handle);
private native void onLowMemoryNative(long handle);
private native void onWindowFocusChangedNative(long handle, boolean focused);
private native void onSurfaceCreatedNative(long handle, Surface surface);
private native void onSurfaceChangedNative(long handle, Surface surface,
int format, int width, int height);
private native void onSurfaceRedrawNeededNative(int handle, Surface surface);
private native void onSurfaceDestroyedNative(int handle);
private native void onInputQueueCreatedNative(int handle, int queuePtr);
private native void onInputQueueDestroyedNative(int handle, int queuePtr);
private native void onContentRectChangedNative(int handle, int x, int y, int w, int h);
private native void onSurfaceRedrawNeededNative(long handle, Surface surface);
private native void onSurfaceDestroyedNative(long handle);
private native void onInputQueueCreatedNative(long handle, long queuePtr);
private native void onInputQueueDestroyedNative(long handle, long queuePtr);
private native void onContentRectChangedNative(long handle, int x, int y, int w, int h);
static class NativeContentView extends View {
NativeActivity mActivity;

View File

@@ -59,7 +59,7 @@ import java.io.IOException;
* }</pre>
*/
public class BackupDataInput {
int mBackupReader;
long mBackupReader;
private EntityHeader mHeader = new EntityHeader();
private boolean mHeaderReady;
@@ -185,10 +185,10 @@ public class BackupDataInput {
}
}
private native static int ctor(FileDescriptor fd);
private native static void dtor(int mBackupReader);
private native static long ctor(FileDescriptor fd);
private native static void dtor(long mBackupReader);
private native int readNextHeader_native(int mBackupReader, EntityHeader entity);
private native int readEntityData_native(int mBackupReader, byte[] data, int offset, int size);
private native int skipEntityData_native(int mBackupReader);
private native int readNextHeader_native(long mBackupReader, EntityHeader entity);
private native int readEntityData_native(long mBackupReader, byte[] data, int offset, int size);
private native int skipEntityData_native(long mBackupReader);
}

View File

@@ -62,7 +62,7 @@ import java.io.IOException;
* @see BackupAgent
*/
public class BackupDataOutput {
int mBackupWriter;
long mBackupWriter;
/** @hide */
public BackupDataOutput(FileDescriptor fd) {
@@ -121,11 +121,11 @@ public class BackupDataOutput {
}
}
private native static int ctor(FileDescriptor fd);
private native static void dtor(int mBackupWriter);
private native static long ctor(FileDescriptor fd);
private native static void dtor(long mBackupWriter);
private native static int writeEntityHeader_native(int mBackupWriter, String key, int dataSize);
private native static int writeEntityData_native(int mBackupWriter, byte[] data, int size);
private native static void setKeyPrefix_native(int mBackupWriter, String keyPrefix);
private native static int writeEntityHeader_native(long mBackupWriter, String key, int dataSize);
private native static int writeEntityData_native(long mBackupWriter, byte[] data, int size);
private native static void setKeyPrefix_native(long mBackupWriter, String keyPrefix);
}

View File

@@ -29,7 +29,7 @@ import java.io.FileDescriptor;
class FileBackupHelperBase {
private static final String TAG = "FileBackupHelperBase";
int mPtr;
long mPtr;
Context mContext;
boolean mExceptionLogged;
@@ -115,14 +115,13 @@ class FileBackupHelperBase {
return false;
}
private static native int ctor();
private static native void dtor(int ptr);
private static native long ctor();
private static native void dtor(long ptr);
native private static int performBackup_native(FileDescriptor oldState,
int data, FileDescriptor newState, String[] files, String[] keys);
private static native int writeFile_native(int ptr, String filename, int backupReader);
private static native int writeSnapshot_native(int ptr, FileDescriptor fd);
long data, FileDescriptor newState, String[] files, String[] keys);
private static native int writeFile_native(long ptr, String filename, long backupReader);
private static native int writeSnapshot_native(long ptr, FileDescriptor fd);
}

View File

@@ -241,10 +241,10 @@ static int mainWorkCallback(int fd, int events, void* data) {
// ------------------------------------------------------------------------
static jint
static jlong
loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName,
jobject messageQueue, jstring internalDataDir, jstring obbDir,
jstring externalDataDir, int sdkVersion,
jstring externalDataDir, jint sdkVersion,
jobject jAssetMgr, jbyteArray savedState)
{
LOG_TRACE("loadNativeCode_native");
@@ -338,11 +338,11 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName
}
}
return (jint)code;
return (jlong)code;
}
static void
unloadNativeCode_native(JNIEnv* env, jobject clazz, jint handle)
unloadNativeCode_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("unloadNativeCode_native");
if (handle != 0) {
@@ -352,7 +352,7 @@ unloadNativeCode_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
onStart_native(JNIEnv* env, jobject clazz, jint handle)
onStart_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onStart_native");
if (handle != 0) {
@@ -364,7 +364,7 @@ onStart_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
onResume_native(JNIEnv* env, jobject clazz, jint handle)
onResume_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onResume_native");
if (handle != 0) {
@@ -376,7 +376,7 @@ onResume_native(JNIEnv* env, jobject clazz, jint handle)
}
static jbyteArray
onSaveInstanceState_native(JNIEnv* env, jobject clazz, jint handle)
onSaveInstanceState_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onSaveInstanceState_native");
@@ -403,7 +403,7 @@ onSaveInstanceState_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
onPause_native(JNIEnv* env, jobject clazz, jint handle)
onPause_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onPause_native");
if (handle != 0) {
@@ -415,7 +415,7 @@ onPause_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
onStop_native(JNIEnv* env, jobject clazz, jint handle)
onStop_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onStop_native");
if (handle != 0) {
@@ -427,7 +427,7 @@ onStop_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
onConfigurationChanged_native(JNIEnv* env, jobject clazz, jint handle)
onConfigurationChanged_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onConfigurationChanged_native");
if (handle != 0) {
@@ -439,7 +439,7 @@ onConfigurationChanged_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
onLowMemory_native(JNIEnv* env, jobject clazz, jint handle)
onLowMemory_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onLowMemory_native");
if (handle != 0) {
@@ -451,7 +451,7 @@ onLowMemory_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jint handle, jboolean focused)
onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jlong handle, jboolean focused)
{
LOG_TRACE("onWindowFocusChanged_native");
if (handle != 0) {
@@ -463,7 +463,7 @@ onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jint handle, jboolean fo
}
static void
onSurfaceCreated_native(JNIEnv* env, jobject clazz, jint handle, jobject surface)
onSurfaceCreated_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface)
{
LOG_TRACE("onSurfaceCreated_native");
if (handle != 0) {
@@ -483,7 +483,7 @@ static int32_t getWindowProp(ANativeWindow* window, int what) {
}
static void
onSurfaceChanged_native(JNIEnv* env, jobject clazz, jint handle, jobject surface,
onSurfaceChanged_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface,
jint format, jint width, jint height)
{
LOG_TRACE("onSurfaceChanged_native");
@@ -524,7 +524,7 @@ onSurfaceChanged_native(JNIEnv* env, jobject clazz, jint handle, jobject surface
}
static void
onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jint handle)
onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jlong handle)
{
LOG_TRACE("onSurfaceRedrawNeeded_native");
if (handle != 0) {
@@ -536,7 +536,7 @@ onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jint handle)
}
static void
onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jobject surface)
onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface)
{
LOG_TRACE("onSurfaceDestroyed_native");
if (handle != 0) {
@@ -550,7 +550,7 @@ onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jobject surfa
}
static void
onInputQueueCreated_native(JNIEnv* env, jobject clazz, jint handle, jint queuePtr)
onInputQueueCreated_native(JNIEnv* env, jobject clazz, jlong handle, jlong queuePtr)
{
LOG_TRACE("onInputChannelCreated_native");
if (handle != 0) {
@@ -563,7 +563,7 @@ onInputQueueCreated_native(JNIEnv* env, jobject clazz, jint handle, jint queuePt
}
static void
onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jint queuePtr)
onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jlong handle, jlong queuePtr)
{
LOG_TRACE("onInputChannelDestroyed_native");
if (handle != 0) {
@@ -576,7 +576,7 @@ onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jint queue
}
static void
onContentRectChanged_native(JNIEnv* env, jobject clazz, jint handle,
onContentRectChanged_native(JNIEnv* env, jobject clazz, jlong handle,
jint x, jint y, jint w, jint h)
{
LOG_TRACE("onContentRectChanged_native");
@@ -594,26 +594,26 @@ onContentRectChanged_native(JNIEnv* env, jobject clazz, jint handle,
}
static const JNINativeMethod g_methods[] = {
{ "loadNativeCode", "(Ljava/lang/String;Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)I",
{ "loadNativeCode", "(Ljava/lang/String;Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)J",
(void*)loadNativeCode_native },
{ "unloadNativeCode", "(I)V", (void*)unloadNativeCode_native },
{ "onStartNative", "(I)V", (void*)onStart_native },
{ "onResumeNative", "(I)V", (void*)onResume_native },
{ "onSaveInstanceStateNative", "(I)[B", (void*)onSaveInstanceState_native },
{ "onPauseNative", "(I)V", (void*)onPause_native },
{ "onStopNative", "(I)V", (void*)onStop_native },
{ "onConfigurationChangedNative", "(I)V", (void*)onConfigurationChanged_native },
{ "onLowMemoryNative", "(I)V", (void*)onLowMemory_native },
{ "onWindowFocusChangedNative", "(IZ)V", (void*)onWindowFocusChanged_native },
{ "onSurfaceCreatedNative", "(ILandroid/view/Surface;)V", (void*)onSurfaceCreated_native },
{ "onSurfaceChangedNative", "(ILandroid/view/Surface;III)V", (void*)onSurfaceChanged_native },
{ "onSurfaceRedrawNeededNative", "(ILandroid/view/Surface;)V", (void*)onSurfaceRedrawNeeded_native },
{ "onSurfaceDestroyedNative", "(I)V", (void*)onSurfaceDestroyed_native },
{ "onInputQueueCreatedNative", "(II)V",
{ "unloadNativeCode", "(J)V", (void*)unloadNativeCode_native },
{ "onStartNative", "(J)V", (void*)onStart_native },
{ "onResumeNative", "(J)V", (void*)onResume_native },
{ "onSaveInstanceStateNative", "(J)[B", (void*)onSaveInstanceState_native },
{ "onPauseNative", "(J)V", (void*)onPause_native },
{ "onStopNative", "(J)V", (void*)onStop_native },
{ "onConfigurationChangedNative", "(J)V", (void*)onConfigurationChanged_native },
{ "onLowMemoryNative", "(J)V", (void*)onLowMemory_native },
{ "onWindowFocusChangedNative", "(JZ)V", (void*)onWindowFocusChanged_native },
{ "onSurfaceCreatedNative", "(JLandroid/view/Surface;)V", (void*)onSurfaceCreated_native },
{ "onSurfaceChangedNative", "(JLandroid/view/Surface;III)V", (void*)onSurfaceChanged_native },
{ "onSurfaceRedrawNeededNative", "(JLandroid/view/Surface;)V", (void*)onSurfaceRedrawNeeded_native },
{ "onSurfaceDestroyedNative", "(J)V", (void*)onSurfaceDestroyed_native },
{ "onInputQueueCreatedNative", "(JJ)V",
(void*)onInputQueueCreated_native },
{ "onInputQueueDestroyedNative", "(II)V",
{ "onInputQueueDestroyedNative", "(JJ)V",
(void*)onInputQueueDestroyed_native },
{ "onContentRectChangedNative", "(IIIII)V", (void*)onContentRectChanged_native },
{ "onContentRectChangedNative", "(JIIII)V", (void*)onContentRectChanged_native },
};
static const char* const kNativeActivityPathName = "android/app/NativeActivity";

View File

@@ -70,7 +70,7 @@ static struct {
* path: absolute path to the file to be saved
* dataOutput: the BackupDataOutput object that we're saving into
*/
static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
static jint backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
jstring domainObj, jstring linkdomain,
jstring rootpathObj, jstring pathObj, jobject dataOutputObj) {
int ret;
@@ -92,22 +92,22 @@ static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
if (packagenamechars) env->ReleaseStringUTFChars(packageNameObj, packagenamechars);
// Extract the data output fd
BackupDataWriter* writer = (BackupDataWriter*) env->GetIntField(dataOutputObj,
BackupDataWriter* writer = (BackupDataWriter*) env->GetLongField(dataOutputObj,
sBackupDataOutput.mBackupWriter);
// Validate
if (!writer) {
ALOGE("No output stream provided [%s]", path.string());
return -1;
return (jint) -1;
}
if (path.length() < rootpath.length()) {
ALOGE("file path [%s] shorter than root path [%s]",
path.string(), rootpath.string());
return -1;
return (jint) -1;
}
return write_tarfile(packageName, domain, rootpath, path, writer);
return (jint) write_tarfile(packageName, domain, rootpath, path, writer);
}
static const JNINativeMethod g_methods[] = {
@@ -121,7 +121,7 @@ int register_android_app_backup_FullBackup(JNIEnv* env)
jclass clazz = env->FindClass("android/app/backup/BackupDataOutput");
LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupDataOutput");
sBackupDataOutput.mBackupWriter = env->GetFieldID(clazz, "mBackupWriter", "I");
sBackupDataOutput.mBackupWriter = env->GetFieldID(clazz, "mBackupWriter", "J");
LOG_FATAL_IF(sBackupDataOutput.mBackupwriter == NULL,
"Unable to find mBackupWriter field in android.app.backup.BackupDataOutput");

View File

@@ -29,25 +29,25 @@ namespace android
static jfieldID s_keyField = 0;
static jfieldID s_dataSizeField = 0;
static int
static jlong
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
{
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (fd == -1) {
return NULL;
return (jlong)NULL;
}
return (int)new BackupDataReader(fd);
return (jlong)new BackupDataReader(fd);
}
static void
dtor_native(JNIEnv* env, jobject clazz, int r)
dtor_native(JNIEnv* env, jobject clazz, jlong r)
{
delete (BackupDataReader*)r;
}
static jint
readNextHeader_native(JNIEnv* env, jobject clazz, int r, jobject entity)
readNextHeader_native(JNIEnv* env, jobject clazz, jlong r, jobject entity)
{
int err;
bool done;
@@ -89,7 +89,7 @@ readNextHeader_native(JNIEnv* env, jobject clazz, int r, jobject entity)
}
static jint
readEntityData_native(JNIEnv* env, jobject clazz, int r, jbyteArray data, int offset, int size)
readEntityData_native(JNIEnv* env, jobject clazz, jlong r, jbyteArray data, jint offset, jint size)
{
int err;
BackupDataReader* reader = (BackupDataReader*)r;
@@ -112,7 +112,7 @@ readEntityData_native(JNIEnv* env, jobject clazz, int r, jbyteArray data, int of
}
static jint
skipEntityData_native(JNIEnv* env, jobject clazz, int r)
skipEntityData_native(JNIEnv* env, jobject clazz, jlong r)
{
int err;
BackupDataReader* reader = (BackupDataReader*)r;
@@ -123,12 +123,12 @@ skipEntityData_native(JNIEnv* env, jobject clazz, int r)
}
static const JNINativeMethod g_methods[] = {
{ "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native },
{ "dtor", "(I)V", (void*)dtor_native },
{ "readNextHeader_native", "(ILandroid/app/backup/BackupDataInput$EntityHeader;)I",
{ "ctor", "(Ljava/io/FileDescriptor;)J", (void*)ctor_native },
{ "dtor", "(J)V", (void*)dtor_native },
{ "readNextHeader_native", "(JLandroid/app/backup/BackupDataInput$EntityHeader;)I",
(void*)readNextHeader_native },
{ "readEntityData_native", "(I[BII)I", (void*)readEntityData_native },
{ "skipEntityData_native", "(I)I", (void*)skipEntityData_native },
{ "readEntityData_native", "(J[BII)I", (void*)readEntityData_native },
{ "skipEntityData_native", "(J)I", (void*)skipEntityData_native },
};
int register_android_backup_BackupDataInput(JNIEnv* env)

View File

@@ -25,25 +25,25 @@
namespace android
{
static int
static jlong
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
{
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (fd == -1) {
return NULL;
return (jlong)NULL;
}
return (int)new BackupDataWriter(fd);
return (jlong)new BackupDataWriter(fd);
}
static void
dtor_native(JNIEnv* env, jobject clazz, int w)
dtor_native(JNIEnv* env, jobject clazz, jlong w)
{
delete (BackupDataWriter*)w;
}
static jint
writeEntityHeader_native(JNIEnv* env, jobject clazz, int w, jstring key, int dataSize)
writeEntityHeader_native(JNIEnv* env, jobject clazz, jlong w, jstring key, jint dataSize)
{
int err;
BackupDataWriter* writer = (BackupDataWriter*)w;
@@ -56,11 +56,11 @@ writeEntityHeader_native(JNIEnv* env, jobject clazz, int w, jstring key, int dat
env->ReleaseStringUTFChars(key, keyUTF);
return err;
return (jint)err;
}
static jint
writeEntityData_native(JNIEnv* env, jobject clazz, int w, jbyteArray data, int size)
writeEntityData_native(JNIEnv* env, jobject clazz, jlong w, jbyteArray data, jint size)
{
int err;
BackupDataWriter* writer = (BackupDataWriter*)w;
@@ -79,11 +79,11 @@ writeEntityData_native(JNIEnv* env, jobject clazz, int w, jbyteArray data, int s
env->ReleaseByteArrayElements(data, dataBytes, JNI_ABORT);
return err;
return (jint)err;
}
static void
setKeyPrefix_native(JNIEnv* env, jobject clazz, int w, jstring keyPrefixObj)
setKeyPrefix_native(JNIEnv* env, jobject clazz, jlong w, jstring keyPrefixObj)
{
int err;
BackupDataWriter* writer = (BackupDataWriter*)w;
@@ -97,11 +97,11 @@ setKeyPrefix_native(JNIEnv* env, jobject clazz, int w, jstring keyPrefixObj)
}
static const JNINativeMethod g_methods[] = {
{ "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native },
{ "dtor", "(I)V", (void*)dtor_native },
{ "writeEntityHeader_native", "(ILjava/lang/String;I)I", (void*)writeEntityHeader_native },
{ "writeEntityData_native", "(I[BI)I", (void*)writeEntityData_native },
{ "setKeyPrefix_native", "(ILjava/lang/String;)V", (void*)setKeyPrefix_native },
{ "ctor", "(Ljava/io/FileDescriptor;)J", (void*)ctor_native },
{ "dtor", "(J)V", (void*)dtor_native },
{ "writeEntityHeader_native", "(JLjava/lang/String;I)I", (void*)writeEntityHeader_native },
{ "writeEntityData_native", "(J[BI)I", (void*)writeEntityData_native },
{ "setKeyPrefix_native", "(JLjava/lang/String;)V", (void*)setKeyPrefix_native },
};
int register_android_backup_BackupDataOutput(JNIEnv* env)

View File

@@ -40,7 +40,7 @@ struct chunk_header_v1 {
static jfieldID s_chunkSizeField = 0;
static jfieldID s_keyPrefixField = 0;
static int
static jint
readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
{
chunk_header_v1 flattenedHeader;
@@ -52,7 +52,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
amt = read(fd, &flattenedHeader.headerSize, sizeof(flattenedHeader.headerSize));
if (amt != sizeof(flattenedHeader.headerSize)) {
return -1;
return (jint) -1;
}
int remainingHeader = flattenedHeader.headerSize - sizeof(flattenedHeader.headerSize);
@@ -62,7 +62,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
if (remainingHeader > 0) {
lseek(fd, remainingHeader, SEEK_CUR);
// >0 means skip this chunk
return 1;
return (jint) 1;
}
}
@@ -70,7 +70,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize));
if (amt <= 0) {
ALOGW("Failed reading chunk header");
return -1;
return (jint) -1;
}
remainingHeader -= sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize);
@@ -80,7 +80,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
if (remainingHeader > 0) {
lseek(fd, remainingHeader, SEEK_CUR);
// >0 means skip this chunk
return 1;
return (jint) 1;
}
}
@@ -96,13 +96,13 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
remainingHeader < flattenedHeader.nameLength) {
ALOGW("Malformed V1 header remainingHeader=%d dataSize=%d nameLength=%d", remainingHeader,
flattenedHeader.dataSize, flattenedHeader.nameLength);
return -1;
return (jint) -1;
}
buf = keyPrefix.lockBuffer(flattenedHeader.nameLength);
if (buf == NULL) {
ALOGW("unable to allocate %d bytes", flattenedHeader.nameLength);
return -1;
return (jint) -1;
}
amt = read(fd, buf, flattenedHeader.nameLength);
@@ -119,17 +119,17 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
env->SetIntField(headerObj, s_chunkSizeField, flattenedHeader.dataSize);
env->SetObjectField(headerObj, s_keyPrefixField, env->NewStringUTF(keyPrefix.string()));
return 0;
return (jint) 0;
}
static int
static jint
skipChunk_native(JNIEnv* env, jobject clazz, jobject fdObj, jint bytesToSkip)
{
int fd = jniGetFDFromFileDescriptor(env, fdObj);
lseek(fd, bytesToSkip, SEEK_CUR);
return 0;
return (jint) 0;
}
static int
@@ -139,7 +139,7 @@ padding_len(int len)
return len == 0 ? len : 4 - len;
}
static int
static jint
allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
{
int pos;
@@ -161,10 +161,10 @@ allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdO
lseek(fd, headerSize, SEEK_CUR);
return pos;
return (jint) pos;
}
static int
static jint
writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj, jint pos)
{
int err;
@@ -188,26 +188,26 @@ writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj,
lseek(fd, pos, SEEK_SET);
err = write(fd, &header, sizeof(chunk_header_v1));
if (err != sizeof(chunk_header_v1)) {
return errno;
return (jint) errno;
}
buf = env->GetStringUTFChars(nameObj, NULL);
err = write(fd, buf, header.nameLength);
env->ReleaseStringUTFChars(nameObj, buf);
if (err != header.nameLength) {
return errno;
return (jint) errno;
}
if (namePadding != 0) {
int zero = 0;
err = write(fd, &zero, namePadding);
if (err != namePadding) {
return errno;
return (jint) errno;
}
}
lseek(fd, prevPos, SEEK_SET);
return 0;
return (jint) 0;
}
static const JNINativeMethod g_methods[] = {

View File

@@ -25,20 +25,20 @@
namespace android
{
static int
static jlong
ctor(JNIEnv* env, jobject clazz)
{
return (int)new RestoreHelperBase();
return (jlong)new RestoreHelperBase();
}
static void
dtor(JNIEnv* env, jobject clazz, jint ptr)
dtor(JNIEnv* env, jobject clazz, jlong ptr)
{
delete (RestoreHelperBase*)ptr;
}
static int
performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, int data,
static jint
performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, jlong data,
jobject newState, jobjectArray files, jobjectArray keys)
{
int err;
@@ -72,12 +72,12 @@ performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, int data,
}
free(keysUTF);
return err;
return (jint) err;
}
static int
writeFile_native(JNIEnv* env, jobject clazz, jint ptr, jstring filenameObj, int backupReaderPtr)
static jint
writeFile_native(JNIEnv* env, jobject clazz, jlong ptr, jstring filenameObj, jlong backupReaderPtr)
{
int err;
RestoreHelperBase* restore = (RestoreHelperBase*)ptr;
@@ -90,11 +90,11 @@ writeFile_native(JNIEnv* env, jobject clazz, jint ptr, jstring filenameObj, int
env->ReleaseStringUTFChars(filenameObj, filename);
return err;
return (jint) err;
}
static int
writeSnapshot_native(JNIEnv* env, jobject clazz, jint ptr, jobject fileDescriptor)
static jint
writeSnapshot_native(JNIEnv* env, jobject clazz, jlong ptr, jobject fileDescriptor)
{
int err;
@@ -103,17 +103,17 @@ writeSnapshot_native(JNIEnv* env, jobject clazz, jint ptr, jobject fileDescripto
err = restore->WriteSnapshot(fd);
return err;
return (jint) err;
}
static const JNINativeMethod g_methods[] = {
{ "ctor", "()I", (void*)ctor },
{ "dtor", "(I)V", (void*)dtor },
{ "ctor", "()J", (void*)ctor },
{ "dtor", "(J)V", (void*)dtor },
{ "performBackup_native",
"(Ljava/io/FileDescriptor;ILjava/io/FileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)I",
"(Ljava/io/FileDescriptor;JLjava/io/FileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)I",
(void*)performBackup_native },
{ "writeFile_native", "(ILjava/lang/String;I)I", (void*)writeFile_native },
{ "writeSnapshot_native", "(ILjava/io/FileDescriptor;)I", (void*)writeSnapshot_native },
{ "writeFile_native", "(JLjava/lang/String;J)I", (void*)writeFile_native },
{ "writeSnapshot_native", "(JLjava/io/FileDescriptor;)I", (void*)writeSnapshot_native },
};
int register_android_backup_FileBackupHelperBase(JNIEnv* env)