Refine mmap failure log

This commit is contained in:
tarsin committed 2023-02-02 19:57:32 +08:00
1 parent 7492841b5f
commit f5bd097584
2 files changed
+16 -1

No files matched your search

@@ -0,0 +1,10 @@
package moe.tarsin.ehviewer
import platform.android.ANDROID_LOG_WARN
import platform.android.__android_log_print
private val KNI_NATIVE_TAG = "KNI"
fun Warn(message: String) {
__android_log_print(ANDROID_LOG_WARN.toInt(), KNI_NATIVE_TAG, "%s", message)
}
@@ -2,6 +2,8 @@ package moe.tarsin.ehviewer
import kotlinx.cinterop.CPointer
import kotlinx.cinterop.UnsafeNumber
import kotlinx.cinterop.interpretCPointer
import kotlinx.cinterop.nativeNullPtr
import kotlinx.cinterop.value
import platform.android.JNIEnvVar
import platform.android.jclass
@@ -11,12 +13,15 @@ import platform.android.jobject
import platform.posix.MAP_PRIVATE
import platform.posix.PROT_READ
import platform.posix.PROT_WRITE
import platform.posix.errno
import platform.posix.mmap
import platform.posix.strerror
@OptIn(UnsafeNumber::class)
@Suppress("UNUSED_PARAMETER")
@CName("Java_com_hippo_Native_mapFd")
fun mapFd(env: CPointer<JNIEnvVar>, clazz: jclass, fd: jint, capability: jlong): jobject {
val result = mmap(null, capability.tosize_t(), PROT_READ or PROT_WRITE, MAP_PRIVATE, fd, 0)
return env.newDirectByteBuffer(result!!, capability)
result ?: Warn("mmap call with fd:${fd} capability:${capability} failed!, error:${strerror(errno)}")
return result?.let { env.newDirectByteBuffer(result, capability) } ?: interpretCPointer(nativeNullPtr)!!
}