5 * Created on September 3, 2008, 2:17 PM
15 #include "NativeFunctions.h"
18 JNIEXPORT jlong JNICALL Java_TransactionalIO_core_TransactionalFileWrapperFactory_getINodeNative
19 (JNIEnv *env, jobject obj, jstring filename)
21 struct stat status_buf;
23 // stat("/home/navid/myfile.txt",&status_buf);
24 char *str = (*env)->GetStringUTFChars(env, filename, 0);
25 if (stat(str,&status_buf)<0)
29 inodenum = status_buf.st_ino;
31 (*env)->ReleaseStringUTFChars(env, filename, str);
36 JNIEXPORT jint JNICALL Java_TransactionalIO_core_TransactionalFile_nativepread(JNIEnv *env, jobject obj2, jbyteArray buff, jlong offset, jint size, jobject fobj ) {
39 //signed char str[200];
40 signed char stackBuf[BUF_SIZE];
42 size_t nativesize = size;
43 off_t nativeoffset =offset;
44 if (nativesize > BUF_SIZE){
45 buf = malloc(nativesize);
47 JNU_ThrowOutOfMemoryError(env, 0);
54 jclass cls2 = (*env) ->GetObjectClass(env, fobj);
57 jfieldID fid3 = (*env)->GetFieldID(env, cls2,"fd", "I");
59 jobject fp = (*env)->GetIntField(env, fobj, fid3);
61 int res = pread((int)fp, buf,nativesize ,nativeoffset);
63 (*env) -> SetByteArrayRegion(env, buff, 0, res, buf);
68 JNIEXPORT jint JNICALL Java_TransactionalIO_core_ExtendedTransaction_nativepwrite(JNIEnv *env, jobject obj2, jbyteArray buff, jlong offset, jint size, jobject fobj ) {
71 size_t nativesize = (*env)->GetArrayLength(env, buff);
72 off_t nativeoffset =offset;
75 jclass cls2 = (*env) ->GetObjectClass(env, fobj);
77 str = (*env) -> GetByteArrayElements(env, buff, NULL);
79 jfieldID fid3 = (*env)->GetFieldID(env, cls2,"fd", "I");
81 jobject fp = (*env)->GetIntField(env, fobj, fid3);
83 int res = pwrite((int)fp, str,nativesize ,nativeoffset);