Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 1 | /* |
Summer Qin | 66f1e03 | 2020-01-06 15:40:03 +0800 | [diff] [blame] | 2 | * Copyright (c) 2018-2020, Arm Limited. All rights reserved. |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 3 | * |
| 4 | * SPDX-License-Identifier: BSD-3-Clause |
| 5 | * |
| 6 | */ |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 7 | #include "tfm_thread.h" |
| 8 | #include "tfm_utils.h" |
| 9 | #include "tfm_wait.h" |
| 10 | |
Ken Liu | 35f8939 | 2019-03-14 14:51:05 +0800 | [diff] [blame] | 11 | void tfm_event_wait(struct tfm_event_t *pevnt) |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 12 | { |
Ken Liu | f250b8b | 2019-12-27 16:31:24 +0800 | [diff] [blame] | 13 | TFM_CORE_ASSERT(pevnt && pevnt->magic == TFM_EVENT_MAGIC); |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 14 | |
Summer Qin | 66f1e03 | 2020-01-06 15:40:03 +0800 | [diff] [blame] | 15 | pevnt->owner = tfm_core_thrd_get_curr_thread(); |
| 16 | tfm_core_thrd_set_state(pevnt->owner, THRD_STATE_BLOCK); |
| 17 | tfm_core_thrd_activate_schedule(); |
Ken Liu | 35f8939 | 2019-03-14 14:51:05 +0800 | [diff] [blame] | 18 | } |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 19 | |
Ken Liu | 35f8939 | 2019-03-14 14:51:05 +0800 | [diff] [blame] | 20 | void tfm_event_wake(struct tfm_event_t *pevnt, uint32_t retval) |
| 21 | { |
Ken Liu | f250b8b | 2019-12-27 16:31:24 +0800 | [diff] [blame] | 22 | TFM_CORE_ASSERT(pevnt && pevnt->magic == TFM_EVENT_MAGIC); |
Ken Liu | 35f8939 | 2019-03-14 14:51:05 +0800 | [diff] [blame] | 23 | |
Summer Qin | 66f1e03 | 2020-01-06 15:40:03 +0800 | [diff] [blame] | 24 | if (pevnt->owner && pevnt->owner->state == THRD_STATE_BLOCK) { |
| 25 | tfm_core_thrd_set_state(pevnt->owner, THRD_STATE_RUNNING); |
| 26 | tfm_core_thrd_set_retval(pevnt->owner, retval); |
Ken Liu | 7ddb4c6 | 2020-04-10 13:12:21 +0800 | [diff] [blame] | 27 | pevnt->owner = NULL; |
Summer Qin | 66f1e03 | 2020-01-06 15:40:03 +0800 | [diff] [blame] | 28 | tfm_core_thrd_activate_schedule(); |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 29 | } |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 30 | } |