incubator-nuttx/sched/semaphore
chenrun1 a6dc4412ba misc/rwlock:Implementing read/write locks.
A new locking mechanism: read/write locks
When there is a writer it is not possible to put on a read lock or a write lock; when there is a reader it is possible to reenter the read lock but not the write lock.
Writers are exclusive locks, readers are shared locks.
At the same time through the waiter count to determine whether there is currently a blocked task, if there is then in the unlock time to wake up all the waiter, through the priority of the competition to complete the blocked lock execution.
For example:
When we have a reader blocking two waiter writers, when the reader is unlocked it wakes up both writers. The writer with higher priority wakes up and checks for a successful condition and locks the lock, the second writer wakes up and fails to check for a condition and continues to block the lock.

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2023-12-02 19:43:19 -08:00
..
CMakeLists.txt Feature: implement ticket spinlock 2023-10-07 01:38:37 +08:00
Make.defs misc/rwlock:Implementing read/write locks. 2023-12-02 19:43:19 -08:00
sem_clockwait.c sched/semaphore: Move cancel point and errno handling to libc / user-space 2023-11-27 04:52:54 -08:00
sem_destroy.c sched/semaphore: Move cancel point and errno handling to libc / user-space 2023-11-27 04:52:54 -08:00
sem_holder.c sched/sem_holder.c: When accessing SEM_WAITLIST, use holder's addrenv 2023-11-15 03:45:15 -08:00
sem_initialize.c add the startup process tracepoint 2023-08-19 21:50:08 +08:00
sem_post.c sched/semaphore: Move cancel point and errno handling to libc / user-space 2023-11-27 04:52:54 -08:00
sem_recover.c sem: don't clear waitobj when do sem recover 2022-10-11 16:31:54 +09:00
sem_reset.c sched: Author Gregory Nutt: update licenses to Apache 2021-02-09 01:21:53 -08:00
sem_rw.c misc/rwlock:Implementing read/write locks. 2023-12-02 19:43:19 -08:00
sem_setprotocol.c sched/semaphore: Move cancel point and errno handling to libc / user-space 2023-11-27 04:52:54 -08:00
sem_tickwait.c sched/getpid: replace syscall getpid/tid/ppid() to kernel version 2023-02-02 10:33:01 +08:00
sem_timedwait.c sched/semaphore: Move cancel point and errno handling to libc / user-space 2023-11-27 04:52:54 -08:00
sem_timeout.c sched: Author Gregory Nutt: update licenses to Apache 2021-02-09 01:21:53 -08:00
sem_trywait.c sched/semaphore: Move cancel point and errno handling to libc / user-space 2023-11-27 04:52:54 -08:00
sem_wait.c sched/semaphore: Move cancel point and errno handling to libc / user-space 2023-11-27 04:52:54 -08:00
sem_waitirq.c sched/addrenv.c: Implement re-entrancy for addrenv_select() 2023-04-25 14:33:19 +02:00
semaphore.h Revert "Assert if a thread attempts to post a semaphore incorrectly." 2023-04-11 17:01:14 +09:00
spinlock.c spinlock: Move the inclusion of stdatomic.h to source file 2023-11-19 20:22:50 +01:00