Skip to content

Instantly share code, notes, and snippets.

@sitsofe
Created June 19, 2017 04:31
Show Gist options
  • Save sitsofe/320e2fbbab3eae854da63cddf7fc5909 to your computer and use it in GitHub Desktop.
Save sitsofe/320e2fbbab3eae854da63cddf7fc5909 to your computer and use it in GitHub Desktop.
Fio Android shared memory patch
diff --git a/os/os-android.h b/os/os-android.h
index c56d6827109a..6eeb1e4c39a6 100644
--- a/os/os-android.h
+++ b/os/os-android.h
@@ -98,7 +98,7 @@ static inline int shmget(key_t __key, size_t __size, int __shmflg)
goto error;
/* Stores size in first 8 bytes, allocate extra space */
- ret = ioctl(fd, ASHMEM_SET_SIZE, __size + sizeof(uint64_t));
+ ret = ioctl(fd, ASHMEM_SET_SIZE, __size + 2 * sizeof(uint64_t));
if (ret < 0)
goto error;
@@ -116,13 +116,13 @@ static inline void *shmat(int __shmid, const void *__shmaddr, int __shmflg)
uint64_t *ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, __shmid, 0);
/* Save size at beginning of buffer, for use with munmap */
*ptr = size;
- return ptr + 1;
+ return ptr + 2;
}
static inline int shmdt (const void *__shmaddr)
{
/* Find mmap size which we stored at the beginning of the buffer */
- uint64_t *ptr = (uint64_t *)__shmaddr - 1;
+ uint64_t *ptr = (uint64_t *)__shmaddr - 2;
size_t size = *ptr;
return munmap(ptr, size);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment