diff options
| author | Berke Güzel <wenekar1@gmail.com> | 2026-10-15 12:37:10 +0300 |
|---|---|---|
| committer | Berke Güzel <wenekar1@gmail.com> | 2026-10-15 12:37:10 +0300 |
| commit | e3d8fe4854a7ef7ff0637688cda9e65feb680122 (patch) | |
| tree | 56bc226a49b7a706e078923434cb9fb05bab6e21 /src/meson.build | |
| parent | 5f03033b0e211f9ed13e7a1351f9a8f9011ab665 (diff) | |
Replace the writer spin lock with a blocking mutex
term_write_begin spun on an atomic sequence word. A waiter burned CPU,
and with no priority inheritance a SCHED_FIFO waiter could starve a
preempted holder on the same CPU. The writer section is now a pthread
mutex with PTHREAD_PRIO_INHERIT where the platform has it, and an SRWLOCK
on Windows. Re-entry on the owning thread still only counts the depth.
The platform wrapper (init, lock, unlock, destroy) is in compat.h. term_new
initializes the mutex, and term_free destroys it. Meson links the thread
library into the core, term_dep, and term_internal_dep. The README,
term.h, and the amalgamation note say that POSIX needs -pthread.
Tests: the feed and snapshot thread test now checks the final screen and
history against a serial reference. A new test checks that term_lock
nests and that another thread waits for the last term_unlock.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Diffstat (limited to 'src/meson.build')
| -rw-r--r-- | src/meson.build | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/meson.build b/src/meson.build index 694ee0e..6ce27ce 100644 --- a/src/meson.build +++ b/src/meson.build @@ -21,7 +21,7 @@ term_lib = both_libraries('term', 'text_run.c', term_osc_src, include_directories: term_private_inc, - dependencies: [m_dep], + dependencies: [m_dep, thread_dep], gnu_symbol_visibility: 'hidden', install: true ) |
