eal/windows: fix return codes of pthread shim layer
authorTal Shnaiderman <talshn@nvidia.com>
Mon, 12 Apr 2021 10:37:44 +0000 (13:37 +0300)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 12 Apr 2021 20:35:31 +0000 (22:35 +0200)
commit13e06abc9d316a9e8931de996c160c0359857415
tree437c95a5eecf64ba943bc097b8e1c283403fbe5b
parent8ec36fb17b0139b02f559eb222b3ba8ff1abb997
eal/windows: fix return codes of pthread shim layer

The macro definitions of the following pthread functions
return incorrect values from the inner function return code.

While pthread_barrier_init(), pthread_barrier_destroy() and
pthread_cancel() return 0 in a case of success and non-zero (errno) value
otherwise the shimming functions InitializeSynchronizationBarrier,
DeleteSynchronizationBarrier and TerminateThread return FALSE (0)
in a case of failure and TRUE(1) in a case of success.

This issue was undetected as none of the functions return codes were
checked until such check was added in
commit 34cc55cce6b1 ("eal: fix race in control thread creation")
exposing the issue by failing pthread_barrier_init()
and rte_eal_init() on Windows as a result.

The fix aligned the return value of the 3 function with the expected
pthread API return values.

Fixes: e8428a9d89f1 ("eal/windows: add some basic functions and macros")
Cc: stable@dpdk.org
Signed-off-by: Tal Shnaiderman <talshn@nvidia.com>
lib/librte_eal/common/eal_common_thread.c
lib/librte_eal/windows/include/pthread.h