All of lore.kernel.org
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] eal: create a runtime directory on windows
@ 2020-10-21 20:26 Pallavi Kadam
  2020-10-22 18:15 ` Ranjit Menon
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Pallavi Kadam @ 2020-10-21 20:26 UTC (permalink / raw)
  To: dev, thomas
  Cc: ranjit.menon, dmitry.kozliuk, Narcisa.Vasile, talshn, pallavi.kadam

Added eal_create_runtime_dir() function in order to run any application
as a user that does not have administrator access.
Currently, since there is no runtime directory set, the code tries to
create a file in C:\ which is only writable with administrator
privileges. As a result, if the user is not admin, the application will
fail.

Signed-off-by: Ranjit Menon <ranjit.menon@intel.com>
Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
---
 lib/librte_eal/windows/eal.c | 57 ++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/lib/librte_eal/windows/eal.c b/lib/librte_eal/windows/eal.c
index 6334aca03..b0f356405 100644
--- a/lib/librte_eal/windows/eal.c
+++ b/lib/librte_eal/windows/eal.c
@@ -5,6 +5,7 @@
 #include <fcntl.h>
 #include <io.h>
 #include <share.h>
+#include <direct.h>
 #include <sys/stat.h>
 
 #include <rte_debug.h>
@@ -34,6 +35,55 @@ static int mem_cfg_fd = -1;
 /* internal configuration (per-core) */
 struct lcore_config lcore_config[RTE_MAX_LCORE];
 
+int
+eal_create_runtime_dir(void)
+{
+	char temp_dir[PATH_MAX];
+	char runtime_dir[PATH_MAX];
+	int ret;
+
+	/* get user-writable temp path */
+	if (GetTempPathA(sizeof(temp_dir), temp_dir) == 0) {
+		RTE_LOG_WIN32_ERR("GetTempPath");
+		return -1;
+	}
+
+	/* create DPDK runtime subdirectory under temp dir */
+	ret = strcat_s(temp_dir, sizeof(temp_dir), "dpdk");
+	if (ret != 0) {
+		RTE_LOG(ERR, EAL, "Error creating DPDK runtime path name\n");
+		return -1;
+	}
+
+	/* create prefix-specific subdirectory under DPDK runtime dir */
+	ret = snprintf(runtime_dir, sizeof(runtime_dir), "%s\\%s",
+		temp_dir, eal_get_hugefile_prefix());
+	if (ret < 0 || ret == sizeof(runtime_dir)) {
+		RTE_LOG(ERR, EAL, "Error creating prefix-specific runtime path\n");
+		return -1;
+	}
+
+	/* create the path if it doesn't exist - step by step */
+	ret = _mkdir(temp_dir);
+	if (ret < 0 && errno != EEXIST) {
+		RTE_LOG(ERR, EAL, "Error creating '%s': %s\n",
+			temp_dir, strerror(errno));
+		return -1;
+	}
+
+	ret = _mkdir(runtime_dir);
+	if (ret < 0 && errno != EEXIST) {
+		RTE_LOG(ERR, EAL, "Error creating '%s': %s\n",
+			runtime_dir, strerror(errno));
+		return -1;
+	}
+
+	if (eal_set_runtime_dir(runtime_dir, sizeof(runtime_dir)))
+		return -1;
+
+	return 0;
+}
+
 /* Detect if we are a primary or a secondary process */
 enum rte_proc_type_t
 eal_proc_type_detect(void)
@@ -181,6 +231,13 @@ eal_parse_args(int argc, char **argv)
 		}
 	}
 
+	/* create runtime data directory */
+	if (internal_conf->no_shconf == 0 &&
+			eal_create_runtime_dir() < 0) {
+		RTE_LOG(ERR, EAL, "Cannot create runtime directory\n");
+		return -1;
+	}
+
 	if (eal_adjust_config(internal_conf) != 0)
 		return -1;
 
-- 
2.18.0.windows.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-11-03 20:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-21 20:26 [dpdk-dev] [PATCH] eal: create a runtime directory on windows Pallavi Kadam
2020-10-22 18:15 ` Ranjit Menon
2020-10-22 19:05 ` Dmitry Kozlyuk
2020-10-26 19:01   ` Kadam, Pallavi
2020-10-26 18:44 ` [dpdk-dev] [PATCH v2] eal: enable windows apps to run on non-admin users Pallavi Kadam
2020-10-27 23:10   ` Dmitry Kozlyuk
2020-10-28 12:41   ` Burakov, Anatoly
2020-11-03 20:28     ` Thomas Monjalon
2020-10-29 18:37   ` Narcisa Ana Maria Vasile

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.