Refine mmap failure log
This commit is contained in:
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)!!
|
||||
}
|
||||
Reference in new issue
Block a user