summaryrefslogtreecommitdiff
path: root/src/include/thread.h
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2021-07-15 13:52:03 -0600
committerRaul Rangel <rrangel@chromium.org>2021-07-18 15:13:27 +0000
commitbe60a0ddb0494e5a3becca832d706076820642f7 (patch)
tree00f8e18654bae76964c1230ec342df4229bae3ad /src/include/thread.h
parentb95369c91447f3fa6c672ffd346caf34c81134c0 (diff)
lib/thread: Allow nesting thread_cooperate and thread_prevent_coop
This change allows nesting critical sections, and frees the caller from having to keep track of whether the thread has coop enabled. BUG=b:179699789 TEST=Boot guybrush with SPI DMA Suggested-by: Julius Werner <jwerner@chromium.org> Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I325ab6181b17c5c084ca1e2c181b4df235020557 Reviewed-on: https://review.coreboot.org/c/coreboot/+/56350 Reviewed-by: Karthik Ramasubramanian <kramasub@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/include/thread.h')
-rw-r--r--src/include/thread.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/include/thread.h b/src/include/thread.h
index 6df9d7edc5..160173e7e7 100644
--- a/src/include/thread.h
+++ b/src/include/thread.h
@@ -43,8 +43,13 @@ int thread_yield_microseconds(unsigned int microsecs);
/* Allow and prevent thread cooperation on current running thread. By default
* all threads are marked to be cooperative. That means a thread can yield
- * to another thread at a pre-determined switch point. Current there is
- * only a single place where switching may occur: a call to udelay(). */
+ * to another thread at a pre-determined switch point. i.e., udelay,
+ * thread_yield, or thread_yield_microseconds.
+ *
+ * These methods should be used to guard critical sections so a dead lock does
+ * not occur. The critical sections can be nested. Just make sure the methods
+ * are used in pairs.
+ */
void thread_cooperate(void);
void thread_prevent_coop(void);