Signed-off-by: Matias Elo <matias....@nokia.com> --- platform/linux-generic/Makefile.am | 1 + platform/linux-generic/include/odp_thread_internal.h | 20 ++++++++++++++++++++ platform/linux-generic/odp_thread.c | 10 ++++++++++ 3 files changed, 31 insertions(+) create mode 100644 platform/linux-generic/include/odp_thread_internal.h
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index 056ba67..b2ae971 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -144,6 +144,7 @@ noinst_HEADERS = \ ${srcdir}/include/odp_schedule_if.h \ ${srcdir}/include/odp_sorted_list_internal.h \ ${srcdir}/include/odp_shm_internal.h \ + ${srcdir}/include/odp_thread_internal.h \ ${srcdir}/include/odp_timer_internal.h \ ${srcdir}/include/odp_timer_wheel_internal.h \ ${srcdir}/include/odp_traffic_mngr_internal.h \ diff --git a/platform/linux-generic/include/odp_thread_internal.h b/platform/linux-generic/include/odp_thread_internal.h new file mode 100644 index 0000000..9a8e482 --- /dev/null +++ b/platform/linux-generic/include/odp_thread_internal.h @@ -0,0 +1,20 @@ +/* Copyright (c) 2017, Linaro Limited + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ODP_THREAD_INTERNAL_H_ +#define ODP_THREAD_INTERNAL_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +pid_t sys_thread_id(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/platform/linux-generic/odp_thread.c b/platform/linux-generic/odp_thread.c index 33a8a7f..e98fa7a 100644 --- a/platform/linux-generic/odp_thread.c +++ b/platform/linux-generic/odp_thread.c @@ -17,15 +17,19 @@ #include <odp/api/align.h> #include <odp/api/cpu.h> #include <odp_schedule_if.h> +#include <odp_thread_internal.h> #include <string.h> #include <stdio.h> #include <stdlib.h> +#include <sys/syscall.h> +#include <unistd.h> typedef struct { int thr; int cpu; odp_thread_type_t type; + pid_t sys_thr_id; } thread_state_t; @@ -135,6 +139,11 @@ static int free_id(int thr) return thread_globals->num; } +pid_t sys_thread_id(void) +{ + return this_thread->sys_thr_id; +} + int odp_thread_init_local(odp_thread_type_t type) { int id; @@ -159,6 +168,7 @@ int odp_thread_init_local(odp_thread_type_t type) thread_globals->thr[id].thr = id; thread_globals->thr[id].cpu = cpu; thread_globals->thr[id].type = type; + thread_globals->thr[id].sys_thr_id = (pid_t)syscall(SYS_gettid); this_thread = &thread_globals->thr[id]; -- 2.7.4