eal: fix return codes on control thread failure

This function returned positive error numbers instead
of negative ones as desbribed in the doc. What's worse,
multiple of its callers only check for (rc < 0) to detect
failure.

It was incorrectly assumed that pthread_create
and pthread_setaffinity_np return negative errnos. They
always returns positive ones, so this patch negates their
return values before returning.

Fixes: 9e5afc72c909 ("eal: add function to create control threads")
Cc: stable@dpdk.org

Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
Dariusz Stojaczyk 2018-07-10 12:44:47 +02:00 committed by Thomas Monjalon
parent 82dcc8b4bc
commit 6770a5f8a2

View File

@ -175,7 +175,7 @@ rte_ctrl_thread_create(pthread_t *thread, const char *name,
params = malloc(sizeof(*params));
if (!params)
return -1;
return -ENOMEM;
params->start_routine = start_routine;
params->arg = arg;
@ -185,7 +185,7 @@ rte_ctrl_thread_create(pthread_t *thread, const char *name,
ret = pthread_create(thread, attr, rte_thread_init, (void *)params);
if (ret != 0) {
free(params);
return ret;
return -ret;
}
if (name != NULL) {
@ -228,5 +228,5 @@ fail:
}
pthread_cancel(*thread);
pthread_join(*thread, NULL);
return ret;
return -ret;
}