MinGW GCC 12 shows an illegal pointer conversion
when included in a pedantic module:

lib/eal/windows/include/pthread.h:137:41: error:
        ISO C forbids conversion of object pointer to function pointer type
        [-Werror=pedantic]
 137 | hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadfunc,
     |                                 ^

Fixes: e8428a9d89f1 ("eal/windows: add some basic functions and macros")
Cc: sta...@dpdk.org

By using uintptr_t, the compiler is forced to accept the conversion.

Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
---
 lib/eal/windows/include/pthread.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/eal/windows/include/pthread.h 
b/lib/eal/windows/include/pthread.h
index 27fd2cca52..f7cf0e9ddf 100644
--- a/lib/eal/windows/include/pthread.h
+++ b/lib/eal/windows/include/pthread.h
@@ -134,7 +134,8 @@ pthread_create(void *threadid, const void *threadattr, void 
*threadfunc,
 {
        RTE_SET_USED(threadattr);
        HANDLE hThread;
-       hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadfunc,
+       hThread = CreateThread(NULL, 0,
+               (LPTHREAD_START_ROUTINE)(uintptr_t)threadfunc,
                args, 0, (LPDWORD)threadid);
        if (hThread) {
                SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
-- 
2.39.0

Reply via email to