[dpdk-dev] [PATCH v2 2/5] mem: add API to obtain memory-backed file info
Yuanhan Liu
yuanhan.liu at linux.intel.com
Mon Mar 7 14:22:38 CET 2016
On Fri, Feb 05, 2016 at 07:20:25PM +0800, Jianfeng Tan wrote:
> A new API named rte_eal_get_backfile_info() and a new data
> struct back_file is added to obstain information of memory-
> backed file info.
I would normally suggest to try hard to find some solution else, instead
of introducing yet another new API, espeically when you just came up with
one user only.
>
> Signed-off-by: Huawei Xie <huawei.xie at intel.com>
> Signed-off-by: Jianfeng Tan <jianfeng.tan at intel.com>
> ---
> lib/librte_eal/common/include/rte_memory.h | 16 ++++++++++++
> lib/librte_eal/linuxapp/eal/eal_memory.c | 40 +++++++++++++++++++++++++++++-
> 2 files changed, 55 insertions(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/common/include/rte_memory.h b/lib/librte_eal/common/include/rte_memory.h
> index 587a25d..b09397e 100644
> --- a/lib/librte_eal/common/include/rte_memory.h
> +++ b/lib/librte_eal/common/include/rte_memory.h
> @@ -109,6 +109,22 @@ struct rte_memseg {
> } __rte_packed;
>
> /**
> + * This struct is used to store information about memory-backed file that
> + * we mapped in memory initialization.
> + */
> +struct back_file {
> + void *addr; /**< virtual addr */
> + size_t size; /**< the page size */
> + char filepath[PATH_MAX]; /**< path to backing file on filesystem */
> +};
So, that's all the info you'd like to get. I'm thinking you may don't
need another new API to retrieve them at all:
Say, you can get the filepath and fd from /proc/self/fd (by filtering it
with "rtemap_"):
$ ls /proc/3487/fd -l
total 0
lrwx------ 1 root root 64 Mar 7 20:37 0 -> /dev/pts/2
lrwx------ 1 root root 64 Mar 7 20:37 1 -> /dev/pts/2
lrwx------ 1 root root 64 Mar 7 20:37 2 -> /dev/pts/2
lrwx------ 1 root root 64 Mar 7 20:37 3 -> /run/.rte_config
lr-x------ 1 root root 64 Mar 7 20:37 4 -> /dev/hugepages
lr-x------ 1 root root 64 Mar 7 20:37 5 -> /mnt
==> lrwx------ 1 root root 64 Mar 7 20:37 6 -> /dev/hugepages/rtemap_0
Which could also save you an extra "open" at caller side for that
file as well.
And you can get the virtual addr and size from /proc/self/maps:
$ grep rtemap_ /proc/3487/maps
7fff40000000-7fffc0000000 rw-s 00000000 00:22 21082 /dev/hugepages/rtemap_0
Will that work for you?
--yliu
More information about the dev
mailing list