summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2021-07-15 13:20:58 -0600
committerRaul Rangel <rrangel@chromium.org>2021-07-18 15:16:13 +0000
commit4aec58dce7e7c17ddb943f995c794487660a4f2e (patch)
tree8c2944d79aea82d7fc3d46bd9ca15a83241dfd19 /src/lib
parentcc01da50b72e34859b5507ed0f4ae367da4ffaea (diff)
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 <rrangel@chromium.org> Change-Id: I3e5b0aed70385ddcd23ffcf7b063f8ccb547fc05 Reviewed-on: https://review.coreboot.org/c/coreboot/+/56351 Reviewed-by: Karthik Ramasubramanian <kramasub@google.com> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Julius Werner <jwerner@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/thread.c14
1 files changed, 1 insertions, 13 deletions
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;