From 4aec58dce7e7c17ddb943f995c794487660a4f2e Mon Sep 17 00:00:00 2001 From: Raul E Rangel Date: Thu, 15 Jul 2021 13:20:58 -0600 Subject: lib/thread: Make thread_run not block the current state If a thread wants to block a state transition it can use thread_run_until. Otherwise just let the thread run. `thread_join` can be used to block on the thread. Boot states are also a ramstage concept. If we want to use this API in any other stage, we need a way of starting a thread without talking about stages. BUG=b:179699789 TEST=verify thread_run no longer blocks the current state Signed-off-by: Raul E Rangel Change-Id: I3e5b0aed70385ddcd23ffcf7b063f8ccb547fc05 Reviewed-on: https://review.coreboot.org/c/coreboot/+/56351 Reviewed-by: Karthik Ramasubramanian Reviewed-by: Furquan Shaikh Reviewed-by: Julius Werner Tested-by: build bot (Jenkins) --- src/lib/thread.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) (limited to 'src/lib/thread.c') diff --git a/src/lib/thread.c b/src/lib/thread.c index a3ab2aa0cc..4d06021ea8 100644 --- a/src/lib/thread.c +++ b/src/lib/thread.c @@ -162,18 +162,6 @@ static void asmlinkage call_wrapper(void *unused) terminate_thread(current, error); } -/* Block the current state transitions until thread is complete. */ -static void asmlinkage call_wrapper_block_current(void *unused) -{ - struct thread *current = current_thread(); - enum cb_err error; - - boot_state_current_block(); - error = current->entry(current->entry_arg); - boot_state_current_unblock(); - terminate_thread(current, error); -} - struct block_boot_state { boot_state_t state; boot_state_sequence_t seq; @@ -312,7 +300,7 @@ int thread_run(struct thread_handle *handle, enum cb_err (*func)(void *), void * return -1; } - prepare_thread(t, handle, func, arg, call_wrapper_block_current, NULL); + prepare_thread(t, handle, func, arg, call_wrapper, NULL); schedule(t); return 0; -- cgit v1.2.3