mirror of https://github.com/OpenIPC/firmware.git
Package: add mmap patch for libevent
parent
0c55434175
commit
a5f26973ab
|
@ -0,0 +1,41 @@
|
|||
--- a/buffer.c
|
||||
+++ b/buffer.c
|
||||
@@ -63,6 +63,9 @@
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
+#if defined(BROKEN_MMAP)
|
||||
+#include <sys/syscall.h>
|
||||
+#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
@@ -2977,6 +2980,12 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
+#if defined(BROKEN_MMAP)
|
||||
+static void *mmap_ev(void *start, size_t len, int prot, int flags, int fd, off_t off) {
|
||||
+ return (void *)syscall(SYS_mmap2, start, len, prot, flags, fd, off >> 12);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
/* TODO(niels): we may want to add to automagically convert to mmap, in
|
||||
* case evbuffer_remove() or evbuffer_pullup() are being used.
|
||||
*/
|
||||
@@ -3080,11 +3089,15 @@
|
||||
offset_leftover = offset % page_size;
|
||||
offset_rounded = offset - offset_leftover;
|
||||
}
|
||||
+#if defined(BROKEN_MMAP)
|
||||
+ mapped = mmap_ev(NULL, length + offset_leftover,
|
||||
+#else
|
||||
#if defined(EVENT__HAVE_MMAP64)
|
||||
mapped = mmap64(NULL, length + offset_leftover,
|
||||
#else
|
||||
mapped = mmap(NULL, length + offset_leftover,
|
||||
#endif
|
||||
+#endif
|
||||
PROT_READ,
|
||||
#ifdef MAP_NOCACHE
|
||||
MAP_NOCACHE | /* ??? */
|
|
@ -49,6 +49,10 @@ else
|
|||
LIBEVENT_OPENIPC_CONF_OPTS += -DEVENT__DISABLE_MBEDTLS=ON
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
|
||||
LIBEVENT_OPENIPC_CONF_OPTS += -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -DBROKEN_MMAP=1"
|
||||
endif
|
||||
|
||||
LIBEVENT_OPENIPC_POST_INSTALL_TARGET_HOOKS += LIBEVENT_OPENIPC_DELETE_UNUSED
|
||||
|
||||
$(eval $(cmake-package))
|
||||
|
|
Loading…
Reference in New Issue