All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: dev@dpdk.org
Cc: thomas@monjalon.net, dmitry.kozliuk@gmail.com,
	anatoly.burakov@intel.com,
	Tyler Retzlaff <roretzla@linux.microsoft.com>,
	Narcisa Vasile <navasile@microsoft.com>
Subject: [PATCH 1/3] eal/windows: translate Windows errors to errno-style errors
Date: Fri,  1 Apr 2022 06:29:51 -0700	[thread overview]
Message-ID: <1648819793-18948-2-git-send-email-roretzla@linux.microsoft.com> (raw)
In-Reply-To: <1648819793-18948-1-git-send-email-roretzla@linux.microsoft.com>

Add function to translate Windows error codes to errno-style error
codes. The possible return values are chosen so that we have as
much semantical compatibility between platforms as possible.

Signed-off-by: Narcisa Vasile <navasile@microsoft.com>
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---
 lib/eal/windows/rte_thread.c | 48 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/lib/eal/windows/rte_thread.c b/lib/eal/windows/rte_thread.c
index 667287c..b3b5362 100644
--- a/lib/eal/windows/rte_thread.c
+++ b/lib/eal/windows/rte_thread.c
@@ -11,6 +11,54 @@ struct eal_tls_key {
 	DWORD thread_index;
 };
 
+/* Translates the most common error codes related to threads */
+static int
+thread_translate_win32_error(DWORD error)
+{
+	switch (error) {
+	case ERROR_SUCCESS:
+		return 0;
+
+	case ERROR_INVALID_PARAMETER:
+		return EINVAL;
+
+	case ERROR_INVALID_HANDLE:
+		return EFAULT;
+
+	case ERROR_NOT_ENOUGH_MEMORY:
+		/* FALLTHROUGH */
+	case ERROR_NO_SYSTEM_RESOURCES:
+		return ENOMEM;
+
+	case ERROR_PRIVILEGE_NOT_HELD:
+		/* FALLTHROUGH */
+	case ERROR_ACCESS_DENIED:
+		return EACCES;
+
+	case ERROR_ALREADY_EXISTS:
+		return EEXIST;
+
+	case ERROR_POSSIBLE_DEADLOCK:
+		return EDEADLK;
+
+	case ERROR_INVALID_FUNCTION:
+		/* FALLTHROUGH */
+	case ERROR_CALL_NOT_IMPLEMENTED:
+		return ENOSYS;
+	}
+
+	return EINVAL;
+}
+
+static int
+thread_log_last_error(const char *message)
+{
+	DWORD error = GetLastError();
+	RTE_LOG(DEBUG, EAL, "GetLastError()=%lu: %s\n", error, message);
+
+	return thread_translate_win32_error(error);
+}
+
 int
 rte_thread_key_create(rte_thread_key *key,
 		__rte_unused void (*destructor)(void *))
-- 
1.8.3.1


  reply	other threads:[~2022-04-01 13:30 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-01 13:29 [PATCH 0/3] add eal functions for thread affinity Tyler Retzlaff
2022-04-01 13:29 ` Tyler Retzlaff [this message]
2022-04-01 13:29 ` [PATCH 2/3] eal: implement functions for get/set " Tyler Retzlaff
2022-04-08 14:01   ` Dmitry Kozlyuk
2022-04-09  8:02     ` Tyler Retzlaff
2022-04-01 13:29 ` [PATCH 3/3] test/threads: add unit test for thread API Tyler Retzlaff
2022-04-08 14:01   ` Dmitry Kozlyuk
2022-04-09  8:56     ` Tyler Retzlaff
2022-04-11 22:52       ` Dmitry Kozlyuk
2022-04-08  8:57 ` [PATCH 0/3] add eal functions for thread affinity David Marchand
2022-04-08 13:46   ` Tyler Retzlaff
2022-04-11  7:32     ` David Marchand
2022-04-12 10:43 ` [PATCH v2 0/4] add eal functions for thread affinity and self Tyler Retzlaff
2022-04-12 10:43   ` [PATCH v2 1/4] eal/windows: translate Windows errors to errno-style errors Tyler Retzlaff
2022-04-12 17:26     ` Menon, Ranjit
2022-04-13  7:07       ` Tyler Retzlaff
2022-04-25  8:25     ` David Marchand
2022-04-25  8:52       ` Tyler Retzlaff
2022-04-12 10:43   ` [PATCH v2 2/4] eal: add basic thread ID and current thread identifier API Tyler Retzlaff
2022-04-12 10:43   ` [PATCH v2 3/4] eal: implement functions for get/set thread affinity Tyler Retzlaff
2022-04-13  7:30     ` Tyler Retzlaff
2022-04-12 10:43   ` [PATCH v2 4/4] test/threads: add unit test for thread API Tyler Retzlaff
2022-04-13  7:43 ` [PATCH v3 0/4] add eal functions for thread affinity and self Tyler Retzlaff
2022-04-13  7:43   ` [PATCH v3 1/4] eal/windows: translate Windows errors to errno-style errors Tyler Retzlaff
2022-04-13  7:43   ` [PATCH v3 2/4] eal: add basic thread ID and current thread identifier API Tyler Retzlaff
2022-04-25  8:26     ` David Marchand
2022-04-25  8:53       ` Tyler Retzlaff
2022-04-13  7:43   ` [PATCH v3 3/4] eal: implement functions for get/set thread affinity Tyler Retzlaff
2022-04-25  8:26     ` David Marchand
2022-04-25  8:55       ` Tyler Retzlaff
2022-04-13  7:43   ` [PATCH v3 4/4] test/threads: add unit test for thread API Tyler Retzlaff
2022-04-26  7:50 ` [PATCH v4 0/3] add eal functions for thread affinity and self Tyler Retzlaff
2022-04-26  7:50   ` [PATCH v4 1/3] eal: add basic thread ID and current thread identifier API Tyler Retzlaff
2022-05-01  9:18     ` Dmitry Kozlyuk
2022-04-26  7:50   ` [PATCH v4 2/3] eal: implement functions for get/set thread affinity Tyler Retzlaff
2022-05-01  9:18     ` Dmitry Kozlyuk
2022-04-26  7:50   ` [PATCH v4 3/3] test/threads: add unit test for thread API Tyler Retzlaff
2022-05-01  9:18     ` Dmitry Kozlyuk
2022-05-03  9:38       ` Tyler Retzlaff
2022-05-04 15:46 ` [PATCH v5 0/3] add eal functions for thread affinity and self Tyler Retzlaff
2022-05-04 15:46   ` [PATCH v5 1/3] eal: add basic thread ID and current thread identifier API Tyler Retzlaff
2022-05-04 22:55     ` Konstantin Ananyev
2022-05-05  7:11       ` Tyler Retzlaff
2022-05-06 19:37         ` Konstantin Ananyev
2022-05-07  8:25           ` Morten Brørup
2022-05-07 13:57             ` Konstantin Ananyev
2022-05-07 19:47               ` Morten Brørup
2022-05-10 21:52                 ` Konstantin Ananyev
2022-05-11  7:17                   ` Tyler Retzlaff
2022-05-11  7:36                     ` Morten Brørup
2022-05-11 22:27                     ` Konstantin Ananyev
2022-05-04 15:46   ` [PATCH v5 2/3] eal: implement functions for get/set thread affinity Tyler Retzlaff
2022-05-04 15:46   ` [PATCH v5 3/3] test/threads: add unit test for thread API Tyler Retzlaff
2022-05-12 13:14 ` [PATCH v6 0/3] add eal functions for thread affinity and self Tyler Retzlaff
2022-05-12 13:14   ` [PATCH v6 1/3] eal: add basic thread ID and current thread identifier API Tyler Retzlaff
2022-05-15 22:02     ` Konstantin Ananyev
2022-05-16  6:21       ` Tyler Retzlaff
2022-05-12 13:14   ` [PATCH v6 2/3] eal: implement functions for get/set thread affinity Tyler Retzlaff
2022-05-12 13:14   ` [PATCH v6 3/3] test/threads: add unit test for thread API Tyler Retzlaff
2022-05-19 15:05   ` [PATCH v6 0/3] add eal functions for thread affinity and self David Marchand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1648819793-18948-2-git-send-email-roretzla@linux.microsoft.com \
    --to=roretzla@linux.microsoft.com \
    --cc=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    --cc=dmitry.kozliuk@gmail.com \
    --cc=navasile@microsoft.com \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.