aboutsummaryrefslogtreecommitdiff
path: root/libdb
diff options
context:
space:
mode:
Diffstat (limited to 'libdb')
-rw-r--r--libdb/Android.mk31
-rw-r--r--libdb/db_manage.c9
2 files changed, 35 insertions, 5 deletions
diff --git a/libdb/Android.mk b/libdb/Android.mk
index 1594fe8..fe359da 100644
--- a/libdb/Android.mk
+++ b/libdb/Android.mk
@@ -1,17 +1,38 @@
LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES:= \
+common_src := \
db_debug.c \
db_insert.c \
db_manage.c \
db_stat.c \
db_travel.c
-LOCAL_C_INCLUDES := \
- $(LOCAL_PATH)/.. \
- $(LOCAL_PATH)/../libutil
+common_includes := \
+ external/oprofile \
+ external/oprofile/libutil
+
+# Build libdb on target
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES:= $(common_src)
+LOCAL_C_INCLUDES := $(common_includes)
+LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libdb
include $(BUILD_STATIC_LIBRARY)
+
+# Build libdb on host
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:= $(common_src)
+LOCAL_C_INCLUDES := $(common_includes)
+LOCAL_CFLAGS := -fexceptions -DANDROID_HOST
+
+ifneq ($(HOST_OS),linux)
+LOCAL_CFLAGS += -DMISSING_MREMAP
+endif
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE := libdb
+
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/libdb/db_manage.c b/libdb/db_manage.c
index 17a0be5..5fc6fe9 100644
--- a/libdb/db_manage.c
+++ b/libdb/db_manage.c
@@ -77,12 +77,21 @@ int odb_grow_hashtable(odb_data_t * data)
if (ftruncate(data->fd, new_file_size))
return 1;
+#ifdef MISSING_MREMAP
+ new_map = mmap(0, new_file_size, PROT_READ | PROT_WRITE,
+ MAP_SHARED, data->fd, 0);
+#else
new_map = mremap(data->base_memory,
old_file_size, new_file_size, MREMAP_MAYMOVE);
+#endif
if (new_map == MAP_FAILED)
return 1;
+#ifdef MISSING_MREMAP
+ munmap(data->base_memory, old_file_size);
+#endif
+
data->base_memory = new_map;
data->descr = odb_to_descr(data);
data->descr->size *= 2;