Loading core/jni/com_android_internal_os_FuseAppLoop.cpp +13 −14 Original line number Original line Diff line number Diff line Loading @@ -53,13 +53,11 @@ public: mEnv(env), mSelf(self) {} mEnv(env), mSelf(self) {} void OnLookup(uint64_t unique, uint64_t inode) override { void OnLookup(uint64_t unique, uint64_t inode) override { mEnv->CallVoidMethod(mSelf, gOnCommandMethod, FUSE_LOOKUP, unique, inode, 0, 0, nullptr); CallOnCommand(FUSE_LOOKUP, unique, inode, 0, 0, nullptr); CHECK(!mEnv->ExceptionCheck()); } } void OnGetAttr(uint64_t unique, uint64_t inode) override { void OnGetAttr(uint64_t unique, uint64_t inode) override { mEnv->CallVoidMethod(mSelf, gOnCommandMethod, FUSE_GETATTR, unique, inode, 0, 0, nullptr); CallOnCommand(FUSE_GETATTR, unique, inode, 0, 0, nullptr); CHECK(!mEnv->ExceptionCheck()); } } void OnOpen(uint64_t unique, uint64_t inode) override { void OnOpen(uint64_t unique, uint64_t inode) override { Loading @@ -75,14 +73,12 @@ public: } } void OnFsync(uint64_t unique, uint64_t inode) override { void OnFsync(uint64_t unique, uint64_t inode) override { mEnv->CallVoidMethod(mSelf, gOnCommandMethod, FUSE_FSYNC, unique, inode, 0, 0, nullptr); CallOnCommand(FUSE_FSYNC, unique, inode, 0, 0, nullptr); CHECK(!mEnv->ExceptionCheck()); } } void OnRelease(uint64_t unique, uint64_t inode) override { void OnRelease(uint64_t unique, uint64_t inode) override { mBuffers.erase(inode); mBuffers.erase(inode); mEnv->CallVoidMethod(mSelf, gOnCommandMethod, FUSE_RELEASE, unique, inode, 0, 0, nullptr); CallOnCommand(FUSE_RELEASE, unique, inode, 0, 0, nullptr); CHECK(!mEnv->ExceptionCheck()); } } void OnRead(uint64_t unique, uint64_t inode, uint64_t offset, uint32_t size) override { void OnRead(uint64_t unique, uint64_t inode, uint64_t offset, uint32_t size) override { Loading @@ -91,10 +87,7 @@ public: auto it = mBuffers.find(inode); auto it = mBuffers.find(inode); CHECK(it != mBuffers.end()); CHECK(it != mBuffers.end()); mEnv->CallVoidMethod( CallOnCommand(FUSE_READ, unique, inode, offset, size, it->second->get()); mSelf, gOnCommandMethod, FUSE_READ, unique, inode, offset, size, it->second->get()); CHECK(!mEnv->ExceptionCheck()); } } void OnWrite(uint64_t unique, uint64_t inode, uint64_t offset, uint32_t size, void OnWrite(uint64_t unique, uint64_t inode, uint64_t offset, uint32_t size, Loading @@ -109,8 +102,14 @@ public: mEnv->SetByteArrayRegion(javaBuffer, 0, size, static_cast<const jbyte*>(buffer)); mEnv->SetByteArrayRegion(javaBuffer, 0, size, static_cast<const jbyte*>(buffer)); CHECK(!mEnv->ExceptionCheck()); CHECK(!mEnv->ExceptionCheck()); mEnv->CallVoidMethod( CallOnCommand(FUSE_WRITE, unique, inode, offset, size, javaBuffer); mSelf, gOnCommandMethod, FUSE_WRITE, unique, inode, offset, size, javaBuffer); } private: // Helper function to make sure we invoke CallVoidMethod with correct size of integer arguments. void CallOnCommand(jint command, jlong unique, jlong inode, jlong offset, jint size, jobject bytes) { mEnv->CallVoidMethod(mSelf, gOnCommandMethod, command, unique, inode, offset, size, bytes); CHECK(!mEnv->ExceptionCheck()); CHECK(!mEnv->ExceptionCheck()); } } }; }; Loading Loading
core/jni/com_android_internal_os_FuseAppLoop.cpp +13 −14 Original line number Original line Diff line number Diff line Loading @@ -53,13 +53,11 @@ public: mEnv(env), mSelf(self) {} mEnv(env), mSelf(self) {} void OnLookup(uint64_t unique, uint64_t inode) override { void OnLookup(uint64_t unique, uint64_t inode) override { mEnv->CallVoidMethod(mSelf, gOnCommandMethod, FUSE_LOOKUP, unique, inode, 0, 0, nullptr); CallOnCommand(FUSE_LOOKUP, unique, inode, 0, 0, nullptr); CHECK(!mEnv->ExceptionCheck()); } } void OnGetAttr(uint64_t unique, uint64_t inode) override { void OnGetAttr(uint64_t unique, uint64_t inode) override { mEnv->CallVoidMethod(mSelf, gOnCommandMethod, FUSE_GETATTR, unique, inode, 0, 0, nullptr); CallOnCommand(FUSE_GETATTR, unique, inode, 0, 0, nullptr); CHECK(!mEnv->ExceptionCheck()); } } void OnOpen(uint64_t unique, uint64_t inode) override { void OnOpen(uint64_t unique, uint64_t inode) override { Loading @@ -75,14 +73,12 @@ public: } } void OnFsync(uint64_t unique, uint64_t inode) override { void OnFsync(uint64_t unique, uint64_t inode) override { mEnv->CallVoidMethod(mSelf, gOnCommandMethod, FUSE_FSYNC, unique, inode, 0, 0, nullptr); CallOnCommand(FUSE_FSYNC, unique, inode, 0, 0, nullptr); CHECK(!mEnv->ExceptionCheck()); } } void OnRelease(uint64_t unique, uint64_t inode) override { void OnRelease(uint64_t unique, uint64_t inode) override { mBuffers.erase(inode); mBuffers.erase(inode); mEnv->CallVoidMethod(mSelf, gOnCommandMethod, FUSE_RELEASE, unique, inode, 0, 0, nullptr); CallOnCommand(FUSE_RELEASE, unique, inode, 0, 0, nullptr); CHECK(!mEnv->ExceptionCheck()); } } void OnRead(uint64_t unique, uint64_t inode, uint64_t offset, uint32_t size) override { void OnRead(uint64_t unique, uint64_t inode, uint64_t offset, uint32_t size) override { Loading @@ -91,10 +87,7 @@ public: auto it = mBuffers.find(inode); auto it = mBuffers.find(inode); CHECK(it != mBuffers.end()); CHECK(it != mBuffers.end()); mEnv->CallVoidMethod( CallOnCommand(FUSE_READ, unique, inode, offset, size, it->second->get()); mSelf, gOnCommandMethod, FUSE_READ, unique, inode, offset, size, it->second->get()); CHECK(!mEnv->ExceptionCheck()); } } void OnWrite(uint64_t unique, uint64_t inode, uint64_t offset, uint32_t size, void OnWrite(uint64_t unique, uint64_t inode, uint64_t offset, uint32_t size, Loading @@ -109,8 +102,14 @@ public: mEnv->SetByteArrayRegion(javaBuffer, 0, size, static_cast<const jbyte*>(buffer)); mEnv->SetByteArrayRegion(javaBuffer, 0, size, static_cast<const jbyte*>(buffer)); CHECK(!mEnv->ExceptionCheck()); CHECK(!mEnv->ExceptionCheck()); mEnv->CallVoidMethod( CallOnCommand(FUSE_WRITE, unique, inode, offset, size, javaBuffer); mSelf, gOnCommandMethod, FUSE_WRITE, unique, inode, offset, size, javaBuffer); } private: // Helper function to make sure we invoke CallVoidMethod with correct size of integer arguments. void CallOnCommand(jint command, jlong unique, jlong inode, jlong offset, jint size, jobject bytes) { mEnv->CallVoidMethod(mSelf, gOnCommandMethod, command, unique, inode, offset, size, bytes); CHECK(!mEnv->ExceptionCheck()); CHECK(!mEnv->ExceptionCheck()); } } }; }; Loading