SPM: Add STATUS_NEED_SCHEDULE to manage scheduler
THRD_EXPECTING_SCHEDULE() calls thrd_next() to decide whether
scheduling is required and when it is required, PendSV will
call thrd_next() again in ipc_schedule(). This duplicated
call of thrd_next() can be avoided by returning a status of
STATUS_NEED_SCHDULABLE from backend in these locations:
- SVC_Handler
- SPM cross API
- Interrupt handler
Signed-off-by: Jianliang Shen <jianliang.shen@arm.com>
Change-Id: I3f1fccbb045938624089e856b5a98c3365c76fcc
diff --git a/secure_fw/spm/ffm/psa_api.c b/secure_fw/spm/ffm/psa_api.c
index 1f1c715..7a46c04 100644
--- a/secure_fw/spm/ffm/psa_api.c
+++ b/secure_fw/spm/ffm/psa_api.c
@@ -530,11 +530,11 @@
}
#if CONFIG_TFM_DOORBELL_API == 1
-void tfm_spm_partition_psa_notify(int32_t partition_id)
+psa_status_t tfm_spm_partition_psa_notify(int32_t partition_id)
{
struct partition_t *p_pt = tfm_spm_get_partition_by_id(partition_id);
- backend_assert_signal(p_pt, PSA_DOORBELL);
+ return backend_assert_signal(p_pt, PSA_DOORBELL);
}
void tfm_spm_partition_psa_clear(void)