diff options
Diffstat (limited to 'libdb')
-rw-r--r-- | libdb/Android.mk | 31 | ||||
-rw-r--r-- | libdb/db_manage.c | 9 |
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; |