fbarray: add internal tailq for mapped areas
authorAnatoly Burakov <anatoly.burakov@intel.com>
Tue, 26 Feb 2019 17:13:11 +0000 (17:13 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 28 Mar 2019 22:28:50 +0000 (23:28 +0100)
commit5b61c62cfd76703d487a28d69a52fc3037d943ed
tree0c64940bb6934bfa9ec9fb40589f15824992156e
parentdb9f4430c26de505b3f9987ea4604d1ab5e5b64f
fbarray: add internal tailq for mapped areas

Currently, there are numerous reliability issues with fbarray,
such as:
- There is no way to prevent attaching to overlapping memory
  areas
- There is no way to prevent double-detach
- Failed destroy leaves fbarray in an invalid state (fbarray
  itself is valid, but its backing memory area is already
  detached)

In addition, on FreeBSD, doing mmap() on a file descriptor
does not keep the lock, so we also need to store the fd
in order to keep the lock.

This patch improves upon fbarray to address both of these
issues by adding an internal tailq to track allocated areas
and their respective file descriptors.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/common/eal_common_fbarray.c