diff options
author | Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> | 2016-01-22 16:05:56 +0200 |
---|---|---|
committer | Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> | 2016-02-10 15:36:20 +0200 |
commit | fddbaf8a25abccb2a3beb63192fac3926603815c (patch) | |
tree | 8104e288a44a6035c24c504d77a11c2d831248e0 /platform | |
parent | 66e397f398444253cf17a40a492d5c63aae92507 (diff) |
linux-ks2: time: assign local start time for each thread
It's correct to use own start time for each thread running
on it's own CPU.
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Diffstat (limited to 'platform')
-rw-r--r-- | platform/linux-keystone2/include/odp_internal.h | 5 | ||||
-rw-r--r-- | platform/linux-keystone2/odp_init.c | 8 | ||||
-rw-r--r-- | platform/linux-keystone2/odp_time.c | 11 |
3 files changed, 16 insertions, 8 deletions
diff --git a/platform/linux-keystone2/include/odp_internal.h b/platform/linux-keystone2/include/odp_internal.h index b3c78916..54c2585f 100644 --- a/platform/linux-keystone2/include/odp_internal.h +++ b/platform/linux-keystone2/include/odp_internal.h @@ -74,8 +74,9 @@ int odp_schedule_term_global(void); int odp_schedule_init_local(int thr_id); int odp_schedule_term_local(void); -int odp_time_init_global(void); -int odp_time_term_global(void); +int odp_time_local_init(void); +int odp_time_global_init(void); +int odp_time_global_term(void); int odp_timer_init_global(void); int odp_timer_term_global(void); diff --git a/platform/linux-keystone2/odp_init.c b/platform/linux-keystone2/odp_init.c index 4e420b2d..cd40bbb7 100644 --- a/platform/linux-keystone2/odp_init.c +++ b/platform/linux-keystone2/odp_init.c @@ -74,14 +74,14 @@ int _odp_term_global(enum init_stage stage) /* Fall through */ case MCSDK_INIT: - if (odp_time_term_global()) { + if (mcsdk_global_term()) { ODP_ERR("McSDK termination failed\n"); rc = -1; } /* Fall through */ case TIME_INIT: - if (odp_time_term_global()) { + if (odp_time_global_term()) { ODP_ERR("ODP time term failed.\n"); rc = -1; } @@ -164,7 +164,7 @@ int odp_init_global(const odp_init_t *params, } stage = MCSDK_INIT; - if (odp_time_init_global()) { + if (odp_time_global_init()) { ODP_ERR("ODP time init failed.\n"); goto init_failed; } @@ -255,6 +255,8 @@ int odp_init_local(odp_thread_type_t thr_type) return -1; } + odp_time_local_init(); + if (odp_schedule_init_local(thread_id)) { odp_pr_err("ODP schedule local init failed.\n"); return -1; diff --git a/platform/linux-keystone2/odp_time.c b/platform/linux-keystone2/odp_time.c index 8cd3de7a..07afdc0e 100644 --- a/platform/linux-keystone2/odp_time.c +++ b/platform/linux-keystone2/odp_time.c @@ -21,7 +21,7 @@ typedef struct time_data_s { odp_time_t start; } time_data_t; -static time_data_t local_time; +static __thread time_data_t local_time; static inline uint64_t time_local_res(void) { @@ -171,7 +171,7 @@ uint64_t odp_time_to_u64(odp_time_t time) return time.tick; } -int odp_time_init_global(void) +int odp_time_local_init(void) { local_time.rate = hplib_mUtilGetTicksPerSec(); local_time.ns_to_tick = (double)local_time.rate / GIGA; @@ -181,7 +181,12 @@ int odp_time_init_global(void) return 0; } -int odp_time_term_global(void) +int odp_time_global_init(void) +{ + return 0; +} + +int odp_time_global_term(void) { return 0; } |