From 7964cf08ac807ac9e7b6d579a25321a23adc9139 Mon Sep 17 00:00:00 2001 From: nodist Date: Tue, 16 Jun 2026 12:42:41 -0400 Subject: new layout by dependecy graph --- docs/application/mutex.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 docs/application/mutex.md (limited to 'docs/application/mutex.md') diff --git a/docs/application/mutex.md b/docs/application/mutex.md new file mode 100644 index 0000000..999f5dc --- /dev/null +++ b/docs/application/mutex.md @@ -0,0 +1,23 @@ +# Mutex + +--- + +## Object Definitions + +```c +typedef struct { + kpl_atomic_queue queue; + _Atomic int32_t lock; +} kpl_mutex; +``` + +## Usage + +1. Before adding to the `queue` do `value = lock++` +2. Add to the queue +3. If `value` is `0` the thread does an async schedule of the mutex task, otherwise the thread moves on + +### Mutex Task + +1. Get task from `queue` and run task +2. After task completion, do `value = --lock`, stop if `value` is `0`, otherwise repeat -- cgit v1.2.3