From 5b18d86decf86ba4789a2c2de7b2624f2e9fa1b0 Mon Sep 17 00:00:00 2001 From: Anatoly Burakov Date: Mon, 14 May 2018 17:27:42 +0100 Subject: [PATCH] eal: move runtime data into dedicated directory Fix all calls to functions in eal_filesystem to produce paths residing inside dedicated DPDK runtime directory. Leaving DPDK runtime config in place as 3rd-party applications within the DPDK ecosystem might rely on this path to determine whether DPDK is running, so moving that will be postponed to the next release cycle. Signed-off-by: Anatoly Burakov --- lib/librte_eal/bsdapp/eal/eal.c | 4 +- lib/librte_eal/common/eal_filesystem.h | 61 +++++++------------------- lib/librte_eal/linuxapp/eal/eal.c | 4 +- 3 files changed, 22 insertions(+), 47 deletions(-) diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c index de88b6ad6e..c890bfe347 100644 --- a/lib/librte_eal/bsdapp/eal/eal.c +++ b/lib/librte_eal/bsdapp/eal/eal.c @@ -87,10 +87,12 @@ int rte_cycles_vmware_tsc_map; /* platform-specific runtime dir */ static char runtime_dir[PATH_MAX]; +static const char *default_runtime_dir = "/var/run"; + int eal_create_runtime_dir(void) { - const char *directory = default_config_dir; + const char *directory = default_runtime_dir; const char *xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"); const char *fallback = "/tmp"; char tmp[PATH_MAX]; diff --git a/lib/librte_eal/common/eal_filesystem.h b/lib/librte_eal/common/eal_filesystem.h index 67f5ca83ee..364f38d13d 100644 --- a/lib/librte_eal/common/eal_filesystem.h +++ b/lib/librte_eal/common/eal_filesystem.h @@ -13,7 +13,6 @@ /** Path of rte config file. */ #define RUNTIME_CONFIG_FMT "%s/.%s_config" -#define FBARRAY_FMT "%s/.%s_%s" #include #include @@ -23,8 +22,6 @@ #include #include "eal_internal_cfg.h" -static const char *default_config_dir = "/var/run"; - /* sets up platform-specific runtime data dir */ int eal_create_runtime_dir(void); @@ -37,7 +34,7 @@ static inline const char * eal_runtime_config_path(void) { static char buffer[PATH_MAX]; /* static so auto-zeroed */ - const char *directory = default_config_dir; + const char *directory = "/var/run"; const char *home_dir = getenv("HOME"); if (getuid() != 0 && home_dir != NULL) @@ -48,65 +45,45 @@ eal_runtime_config_path(void) } /** Path of primary/secondary communication unix socket file. */ -#define MP_SOCKET_PATH_FMT "%s/.%s_unix" +#define MP_SOCKET_FNAME "mp_socket" static inline const char * eal_mp_socket_path(void) { static char buffer[PATH_MAX]; /* static so auto-zeroed */ - const char *directory = default_config_dir; - const char *home_dir = getenv("HOME"); - - if (getuid() != 0 && home_dir != NULL) - directory = home_dir; - snprintf(buffer, sizeof(buffer) - 1, MP_SOCKET_PATH_FMT, - directory, internal_config.hugefile_prefix); + snprintf(buffer, sizeof(buffer) - 1, "%s/%s", eal_get_runtime_dir(), + MP_SOCKET_FNAME); return buffer; } +#define FBARRAY_NAME_FMT "%s/fbarray_%s" static inline const char * eal_get_fbarray_path(char *buffer, size_t buflen, const char *name) { - const char *directory = "/tmp"; - const char *home_dir = getenv("HOME"); - - if (getuid() != 0 && home_dir != NULL) - directory = home_dir; - snprintf(buffer, buflen - 1, FBARRAY_FMT, directory, - internal_config.hugefile_prefix, name); + snprintf(buffer, buflen, FBARRAY_NAME_FMT, eal_get_runtime_dir(), name); return buffer; } /** Path of hugepage info file. */ -#define HUGEPAGE_INFO_FMT "%s/.%s_hugepage_info" - +#define HUGEPAGE_INFO_FNAME "hugepage_info" static inline const char * eal_hugepage_info_path(void) { static char buffer[PATH_MAX]; /* static so auto-zeroed */ - const char *directory = default_config_dir; - const char *home_dir = getenv("HOME"); - if (getuid() != 0 && home_dir != NULL) - directory = home_dir; - snprintf(buffer, sizeof(buffer) - 1, HUGEPAGE_INFO_FMT, directory, - internal_config.hugefile_prefix); + snprintf(buffer, sizeof(buffer) - 1, "%s/%s", eal_get_runtime_dir(), + HUGEPAGE_INFO_FNAME); return buffer; } -/** Path of hugepage info file. */ -#define HUGEPAGE_FILE_FMT "%s/.%s_hugepage_file" - +/** Path of hugepage data file. */ +#define HUGEPAGE_DATA_FNAME "hugepage_data" static inline const char * eal_hugepage_data_path(void) { static char buffer[PATH_MAX]; /* static so auto-zeroed */ - const char *directory = default_config_dir; - const char *home_dir = getenv("HOME"); - if (getuid() != 0 && home_dir != NULL) - directory = home_dir; - snprintf(buffer, sizeof(buffer) - 1, HUGEPAGE_FILE_FMT, directory, - internal_config.hugefile_prefix); + snprintf(buffer, sizeof(buffer) - 1, "%s/%s", eal_get_runtime_dir(), + HUGEPAGE_DATA_FNAME); return buffer; } @@ -122,18 +99,12 @@ eal_get_hugefile_path(char *buffer, size_t buflen, const char *hugedir, int f_id } /** String format for hugepage map lock files. */ -#define HUGEFILE_LOCK_FMT "%s/.%smap_%d.lock" - +#define HUGEFILE_LOCK_FMT "%s/map_%d.lock" static inline const char * eal_get_hugefile_lock_path(char *buffer, size_t buflen, int f_id) { - const char *directory = default_config_dir; - const char *home_dir = getenv("HOME"); - - if (getuid() != 0 && home_dir != NULL) - directory = home_dir; - snprintf(buffer, buflen - 1, HUGEFILE_LOCK_FMT, directory, - internal_config.hugefile_prefix, f_id); + snprintf(buffer, buflen, HUGEFILE_LOCK_FMT, eal_get_runtime_dir(), + f_id); buffer[buflen - 1] = '\0'; return buffer; } diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index 604806321c..bed5823bd7 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -95,10 +95,12 @@ int rte_cycles_vmware_tsc_map; /* platform-specific runtime dir */ static char runtime_dir[PATH_MAX]; +static const char *default_runtime_dir = "/var/run"; + int eal_create_runtime_dir(void) { - const char *directory = default_config_dir; + const char *directory = default_runtime_dir; const char *xdg_runtime_dir = getenv("XDG_RUNTIME_DIR"); const char *fallback = "/tmp"; char tmp[PATH_MAX]; -- 2.20.1