5 * Created on September 3, 2008, 2:17 PM
15 #include "NativeFunctions.h"
17 JNIEXPORT jlong JNICALL Java_TransactionalIO_core_TransactionalFileWrapperFactory_getINodeNative
18 (JNIEnv *env, jobject obj, jstring filename)
20 struct stat status_buf;
22 // stat("/home/navid/myfile.txt",&status_buf);
23 char *str = (*env)->GetStringUTFChars(env, filename, 0);
25 // printf("File Name is: %s \n", str);
26 if (stat(str,&status_buf)<0)
30 // printf("Inode number is: %lu \n", status_buf.st_ino);
31 inodenum = status_buf.st_ino;
33 (*env)->ReleaseStringUTFChars(env, filename, str);
38 JNIEXPORT jint JNICALL Java_TransactionalIO_core_TransactionalFile_nativepread(JNIEnv *env, jobject obj2, jbyteArray buff, jlong offset, jint size, jobject fobj ) {
40 size_t nativesize = size;
41 off_t nativeoffset =offset;
44 jclass cls2 = (*env) ->GetObjectClass(env, fobj);
47 jfieldID fid3 = (*env)->GetFieldID(env, cls2,"fd", "I");
49 jobject fp = (*env)->GetIntField(env, fobj, fid3);
51 int res = pread((int)fp, str,nativesize ,nativeoffset);
53 (*env) -> SetByteArrayRegion(env, buff, 0, res, str);
58 JNIEXPORT jint JNICALL Java_TransactionalIO_core_ExtendedTransaction_nativepwrite(JNIEnv *env, jobject obj2, jbyteArray buff, jlong offset, jint size, jobject fobj ) {
61 size_t nativesize = (*env)->GetArrayLength(env, buff);
62 off_t nativeoffset =offset;
65 jclass cls2 = (*env) ->GetObjectClass(env, fobj);
67 str = (*env) -> GetByteArrayElements(env, buff, NULL);
69 jfieldID fid3 = (*env)->GetFieldID(env, cls2,"fd", "I");
71 jobject fp = (*env)->GetIntField(env, fobj, fid3);
73 int res = pwrite((int)fp, str,nativesize ,nativeoffset);