port: tests: Add sys/wait.h include for FreeBSD
[babeltrace.git] / src / compat / mman.c
index de1d7b34a4d9bf5b07a39e0a7f28bb8fcd4922f3..1051913d16d3ac4f0275df854b470d1068bd2b45 100644 (file)
@@ -31,6 +31,7 @@
 #include "logging/log.h"
 
 #include "common/macros.h"
+#include "common/common.h"
 
 #ifdef __APPLE__
 /*
@@ -70,14 +71,15 @@ GHashTable *mmap_mappings = NULL;
 static pthread_mutex_t mmap_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 static
-struct mmap_mapping *mapping_create(void)
+struct mmap_mapping *mapping_create(int log_level)
 {
        struct mmap_mapping *mapping;
 
        mapping = malloc(sizeof(struct mmap_mapping));
-       if (mapping != NULL) {
+       if (mapping) {
                mapping->file_handle = NULL;
                mapping->map_handle = NULL;
+               mapping->log_level = log_level;
        }
 
        return mapping;
@@ -89,11 +91,11 @@ void mapping_clean(struct mmap_mapping *mapping)
        if (mapping) {
                if (!CloseHandle(mapping->map_handle)) {
                        BT_LOGF_STR("Failed to close mmap map_handle.");
-                       abort();
+                       bt_common_abort();
                }
                if (!CloseHandle(mapping->file_handle)) {
                        BT_LOGF_STR("Failed to close mmap file_handle.");
-                       abort();
+                       bt_common_abort();
                }
                free(mapping);
                mapping = NULL;
@@ -111,7 +113,7 @@ void addr_clean(void *addr)
                 */
                BT_LOG_WRITE_CUR_LVL(BT_LOG_FATAL, BT_LOG_FATAL, BT_LOG_TAG,
                        "Failed to unmap mmap mapping.");
-               abort();
+               bt_common_abort();
        }
 }
 
@@ -119,8 +121,8 @@ static
 void mmap_lock(int log_level)
 {
        if (pthread_mutex_lock(&mmap_mutex)) {
-               BT_LOGF_STR("Failed to acquire mmap_mutex.");
-               abort();
+               BT_LOG_WRITE_CUR_LVL(BT_LOG_FATAL, log_level, BT_LOG_TAG, "Failed to acquire mmap_mutex.");
+               bt_common_abort();
        }
 }
 
@@ -128,8 +130,8 @@ static
 void mmap_unlock(int log_level)
 {
        if (pthread_mutex_unlock(&mmap_mutex)) {
-               BT_LOGF_STR("Failed to release mmap_mutex.");
-               abort();
+               BT_LOG_WRITE_CUR_LVL(BT_LOG_FATAL, log_level, BT_LOG_TAG, "Failed to release mmap_mutex.");
+               bt_common_abort();
        }
 }
 
@@ -282,7 +284,7 @@ int bt_munmap(void *addr, size_t length)
        mmap_lock(log_level);
 
        /* Check if the mapping exists in the hashtable. */
-       if (g_hash_table_lookup(mmap_mappings, addr) == NULL) {
+       if (!g_hash_table_lookup(mmap_mappings, addr)) {
                _set_errno(EINVAL);
                ret = -1;
                goto end;
@@ -291,7 +293,7 @@ int bt_munmap(void *addr, size_t length)
        /* Remove it. */
        if (!g_hash_table_remove(mmap_mappings, addr)) {
                BT_LOGF_STR("Failed to remove mapping from hashtable.");
-               abort();
+               bt_common_abort();
        }
 
 end:
@@ -299,4 +301,17 @@ end:
        return ret;
 }
 
+BT_HIDDEN
+size_t bt_mmap_get_offset_align_size(int log_level)
+{
+       SYSTEM_INFO sysinfo;
+
+       GetNativeSystemInfo(&sysinfo);
+       BT_LOG_WRITE_CUR_LVL(BT_LOG_DEBUG, log_level, BT_LOG_TAG,
+               "Allocator granularity is %lu.",
+               sysinfo.dwAllocationGranularity);
+
+       return sysinfo.dwAllocationGranularity;
+}
+
 #endif
This page took 0.026909 seconds and 4 git commands to generate.