INNER CODE UNIT · C++
alignment
tiann/epic · library/src/main/cpp/epic.cpp:199
unsigned alignment = (unsigned)((unsigned long long)addr % pagesize);
LOGV("munprotect page size: %d, alignment: %d", pagesize, alignment);
int i = mprotect((void *) (addr - alignment), (size_t) (alignment + len),
PROT_READ | PROT_WRITE | PROT_EXEC);
if (i == -1) {
LOGV("mprotect failed: %s (%d)", strerror(errno), errno);
return JNI_FALSE;
}
return JNI_TRUE;
}
jboolean epic_cacheflush(JNIEnv *env, jclass, jlong addr, jlong len) {
#if defined(__arm__)
int i = cacheflush(addr, addr + len, 0);
LOGV("arm cacheflush for, %ul", addr);
if (i == -1) {
LOGV("cache flush failed: %s (%d)", strerror(errno), errno);