eal/windows: add missing SPDX license tag
[dpdk.git] / lib / librte_eal / common / eal_common_fbarray.c
index fd0292a..592ec58 100644 (file)
@@ -81,9 +81,8 @@ get_used_mask(void *data, unsigned int elt_sz, unsigned int len)
 }
 
 static int
-resize_and_map(int fd, void *addr, size_t len)
+resize_and_map(int fd, const char *path, void *addr, size_t len)
 {
-       char path[PATH_MAX];
        void *map_addr;
 
        if (eal_file_truncate(fd, len)) {
@@ -110,7 +109,7 @@ overlap(const struct mem_area *ma, const void *start, size_t len)
        if (start >= ma_start && start < ma_end)
                return 1;
        /* end overlap? */
-       if (end >= ma_start && end < ma_end)
+       if (end > ma_start && end < ma_end)
                return 1;
        return 0;
 }
@@ -715,6 +714,8 @@ rte_fbarray_init(struct rte_fbarray *arr, const char *name, unsigned int len,
        struct mem_area *ma = NULL;
        void *data = NULL;
        int fd = -1;
+       const struct internal_config *internal_conf =
+               eal_get_internal_configuration();
 
        if (arr == NULL) {
                rte_errno = EINVAL;
@@ -750,7 +751,7 @@ rte_fbarray_init(struct rte_fbarray *arr, const char *name, unsigned int len,
 
        fd = -1;
 
-       if (internal_config.no_shconf) {
+       if (internal_conf->no_shconf) {
                /* remap virtual area as writable */
                static const int flags = RTE_MAP_FORCE_ADDRESS |
                        RTE_MAP_PRIVATE | RTE_MAP_ANONYMOUS;
@@ -790,7 +791,7 @@ rte_fbarray_init(struct rte_fbarray *arr, const char *name, unsigned int len,
                if (eal_file_lock(fd, EAL_FLOCK_SHARED, EAL_FLOCK_RETURN))
                        goto fail;
 
-               if (resize_and_map(fd, data, mmap_len))
+               if (resize_and_map(fd, path, data, mmap_len))
                        goto fail;
        }
        ma->addr = data;
@@ -893,7 +894,7 @@ rte_fbarray_attach(struct rte_fbarray *arr)
        if (eal_file_lock(fd, EAL_FLOCK_SHARED, EAL_FLOCK_RETURN))
                goto fail;
 
-       if (resize_and_map(fd, data, mmap_len))
+       if (resize_and_map(fd, path, data, mmap_len))
                goto fail;
 
        /* store our new memory area */
@@ -977,6 +978,8 @@ rte_fbarray_destroy(struct rte_fbarray *arr)
        size_t mmap_len;
        int fd, ret;
        char path[PATH_MAX];
+       const struct internal_config *internal_conf =
+               eal_get_internal_configuration();
 
        if (arr == NULL) {
                rte_errno = EINVAL;
@@ -1010,7 +1013,7 @@ rte_fbarray_destroy(struct rte_fbarray *arr)
                goto out;
        }
        /* with no shconf, there were never any files to begin with */
-       if (!internal_config.no_shconf) {
+       if (!internal_conf->no_shconf) {
                /*
                 * attempt to get an exclusive lock on the file, to ensure it
                 * has been detached by all other processes