diff --git a/app/src/main/cpp/fdutils.c b/app/src/main/cpp/fdutils.c index b40ee5bf9..0b1835c36 100644 --- a/app/src/main/cpp/fdutils.c +++ b/app/src/main/cpp/fdutils.c @@ -23,10 +23,3 @@ Java_com_hippo_Native_getFd(JNIEnv *env, jclass clazz, jobject fileDescriptor) { return fd; } - -JNIEXPORT void JNICALL -Java_com_hippo_Native_unmapDirectByteBuffer(JNIEnv *env, jclass clazz, jobject buffer) { - void *addr = (*env)->GetDirectBufferAddress(env, buffer); - size_t size = (*env)->GetDirectBufferCapacity(env, buffer); - if (munmap(addr, size)) LOGE("munmap addr:%p, size%zu failed!", addr, size); -} diff --git a/native/src/nativeMain/kotlin/moe/tarsin/ehviewer/mmap.kt b/native/src/nativeMain/kotlin/moe/tarsin/ehviewer/mmap.kt index 855566b03..2ba7ad385 100644 --- a/native/src/nativeMain/kotlin/moe/tarsin/ehviewer/mmap.kt +++ b/native/src/nativeMain/kotlin/moe/tarsin/ehviewer/mmap.kt @@ -15,13 +15,23 @@ import platform.posix.PROT_READ import platform.posix.PROT_WRITE import platform.posix.errno import platform.posix.mmap -import platform.posix.strerror +import platform.posix.munmap @OptIn(UnsafeNumber::class) @Suppress("UNUSED_PARAMETER") @CName("Java_com_hippo_Native_mapFd") fun mapFd(env: CPointer, clazz: jclass, fd: jint, capability: jlong): jobject { val result = mmap(null, capability.tosize_t(), PROT_READ or PROT_WRITE, MAP_PRIVATE, fd, 0) - result ?: Warn("mmap call with fd:${fd} capability:${capability} failed!, error:${strerror(errno)}") + result ?: Warn("mmap call with fd:${fd} capability:${capability} failed!, errno:${errno}") return result?.let { env.newDirectByteBuffer(result, capability) } ?: interpretCPointer(nativeNullPtr)!! } + +@Suppress("UNUSED_PARAMETER") +@OptIn(UnsafeNumber::class) +@CName("Java_com_hippo_Native_unmapDirectByteBuffer") +fun unmapFd(env: CPointer, clazz: jclass, buffer: jobject) { + val addr = env.getDirectBufferAddress(buffer) + val size = env.getDirectBufferCapacity(buffer) + val result = munmap(addr, size.tosize_t()) + if (result != 0) Warn("mmap call with addr:${addr} size:${size} failed!, errno:${errno}") +}