From 09af554d315dba4b1d49e2c27708521182526a15 Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Mon, 21 Jan 2019 17:03:07 +0100 Subject: [PATCH 1/2] fwk: thread: Add traps in debug mode Add traps in debug mode when an error is detected by one of the thread framework APIs. Change-Id: I3f2ec98e51d5a418d70b691c0e316ec815544cd0 Signed-off-by: Ronald Cron --- framework/src/fwk_multi_thread.c | 20 ++++++++++++++------ framework/src/fwk_thread.c | 1 + 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/framework/src/fwk_multi_thread.c b/framework/src/fwk_multi_thread.c index 65cf84345..a4273e2a1 100644 --- a/framework/src/fwk_multi_thread.c +++ b/framework/src/fwk_multi_thread.c @@ -770,6 +770,7 @@ int fwk_thread_create(fwk_id_t id) error: FWK_HOST_PRINT(err_msg_func, status, __func__); + fwk_expect(false); return status; } @@ -823,17 +824,22 @@ int fwk_thread_put_event(struct fwk_event *event) } } - /* Call from a thread */ if (fwk_interrupt_get_current(&interrupt) != FWK_SUCCESS) { + /* Call from a thread */ event->is_delayed_response = event->is_response; - return put_event(thread_ctx, event); - } + status = put_event(thread_ctx, event); + } else + /* Call from an ISR */ + status = put_isr_event(event); - /* Call from an ISR */ - return put_isr_event(event); + if (status != FWK_SUCCESS) + goto error; + + return FWK_SUCCESS; error: FWK_HOST_PRINT(err_msg_func, status, __func__); + fwk_expect(false); return status; } @@ -880,7 +886,7 @@ int fwk_thread_put_event_and_wait(struct fwk_event *event, event->is_notification = false; status = put_event(target_thread_ctx, event); if (status != FWK_SUCCESS) - return status; + goto error; resp_event->cookie = event->cookie; ctx.current_thread_ctx->response_event = resp_event; @@ -915,6 +921,7 @@ int fwk_thread_put_event_and_wait(struct fwk_event *event, error: FWK_HOST_PRINT(err_msg_func, status, __func__); + fwk_expect(false); return status; } @@ -951,5 +958,6 @@ int fwk_thread_get_delayed_response(fwk_id_t id, uint32_t cookie, error: FWK_HOST_PRINT(err_msg_func, status, __func__); + fwk_expect(false); return status; } diff --git a/framework/src/fwk_thread.c b/framework/src/fwk_thread.c index d8a89a7bb..fbdf99e4e 100644 --- a/framework/src/fwk_thread.c +++ b/framework/src/fwk_thread.c @@ -237,5 +237,6 @@ int fwk_thread_put_event(struct fwk_event *event) error: FWK_HOST_PRINT(err_msg_func, status, __func__); + fwk_expect(false); return status; } -- GitLab From b95b7103f460d63405b8767af12ef94d5bf7bc8a Mon Sep 17 00:00:00 2001 From: Nicola Mazzucato Date: Fri, 12 Apr 2019 11:05:55 +0100 Subject: [PATCH 2/2] fwk: Add traps for processing events Change-Id: I722ea44f8f3679eeb4a5ad094a918af91f19e352 Signed-off-by: Nicola Mazzucato --- framework/src/fwk_multi_thread.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/fwk_multi_thread.c b/framework/src/fwk_multi_thread.c index a4273e2a1..2dcba59ab 100644 --- a/framework/src/fwk_multi_thread.c +++ b/framework/src/fwk_multi_thread.c @@ -358,7 +358,7 @@ static void process_event_requiring_response(struct fwk_event *event) resp_event.is_delayed_response = false; status = process_event(event, &resp_event); - if (status != FWK_SUCCESS) + if (!fwk_expect(status == FWK_SUCCESS)) FWK_HOST_PRINT(err_msg_line, status, __LINE__); resp_event.is_response = true; @@ -411,7 +411,7 @@ static void process_next_thread_event(struct __fwk_thread_ctx *thread_ctx) status = module->process_notification(event, &async_resp_event); else status = module->process_event(event, &async_resp_event); - if (status != FWK_SUCCESS) + if (!fwk_expect(status == FWK_SUCCESS)) FWK_HOST_PRINT(err_msg_line, status, __LINE__); } -- GitLab