walnux/include
Ville Juven bb85ad849e pthread_cond_wait: Use atomic_t to protect the waiter count
The load/compare and RMW to wait_count need protection. Using atomic
operations should resolve both issues.

NOTE:
The assumption that the user will call pthread_cond_signal /
pthread_cond_broadcast with the mutex given to pthread_cond_wait held is
simply not true. It MAY hold it, but it is not forced. Thus, using the
user space lock for protecting the wait counter as well is not valid!

The pthread_cond_signal() or pthread_cond_broadcast() functions may be called by a thread whether or not it currently owns the mutex that threads calling pthread_cond_wait() or pthread_cond_timedwait() have associated with the condition variable during their waits; however, if predictable scheduling behaviour is required, then that mutex is locked by the thread calling pthread_cond_signal() or pthread_cond_broadcast().

[1] https://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_cond_signal.html
2025-01-20 23:55:26 +08:00
..
android include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
arpa include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
crypto include: migrate to SPDX identifier 2024-12-18 17:51:57 +08:00
cxx fix a typo 2024-12-15 17:53:48 -03:00
net add a flag of lin internal sleep/wakeup state 2024-10-16 14:33:59 +08:00
netinet include/netinet/arp.h: change the type of arp_dev from uint8_t to char 2024-12-26 23:29:23 +08:00
netpacket netpacket/sockaddr_ll: Add valid packet types for sll_pkttype 2024-12-31 09:41:39 +08:00
nuttx mem barrier: use UP_DMP UP_DSP as barriers standard API 2025-01-20 20:13:07 +08:00
ssp include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
sys fcntl: add sys/fcntl.h header file 2024-12-20 11:46:14 -03:00
.gitignore include/.gitignore: add openlibm to gitignore 2024-10-13 02:27:28 +08:00
aio.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
alloca.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
assert.h assert: add header files to resolve compile failed 2024-10-12 09:29:37 +08:00
byteswap.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
ctype.h libcxx: fix compile error 2024-10-23 09:42:57 +08:00
debug.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
dirent.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
dlfcn.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
dsp.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
dspb16.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
elf.h modlib:Standardized module loading method 2024-10-05 15:22:02 +08:00
elf32.h modlib:Standardized module loading method 2024-10-05 15:22:02 +08:00
elf64.h modlib:Standardized module loading method 2024-10-05 15:22:02 +08:00
endian.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
err.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
errno.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
execinfo.h sched: support backtrace record 2024-10-11 00:37:27 +08:00
fcntl.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
fixedmath.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
fnmatch.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
ftw.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
gcov.h Fix compilation errors 2024-11-26 19:25:24 +08:00
getopt.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
glob.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
grp.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
hex2bin.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
iconv.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
ifaddrs.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
inttypes.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
iso646.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
langinfo.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
libgen.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
libintl.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
limits.h Add LINE_MAX configuration 2024-12-26 13:25:19 +08:00
locale.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
lzf.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
malloc.h memdump: add dump for the orphan nodes(neighbor of free node) 2024-10-08 23:55:59 +08:00
mqueue.h [POSIX][Bug] mqueue.h: Include file does not conform the standard 2024-12-09 21:21:09 +08:00
netdb.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
nl_types.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
nxflat.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
obstack.h libs/libc/obstack: fix allocated chunk overrun due to invalid limit 2024-10-30 11:53:18 -03:00
poll.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
pthread.h pthread_cond_wait: Use atomic_t to protect the waiter count 2025-01-20 23:55:26 +08:00
pty.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
pwd.h libs/libc/pwd: add new member to passwd struct 2024-10-16 11:15:25 +08:00
regex.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
resolv.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
sched.h nuttx/include:Modify the CPU_SET series macro definition in sched.h 2024-10-15 21:05:36 +08:00
search.h include/search: migrate to SPDX identifier 2024-12-16 14:18:35 +08:00
semaphore.h sem: change sem wait to atomic operation 2024-12-10 22:00:42 +08:00
shadow.h libs/libc/unistd: add getspnam function 2024-10-16 11:15:25 +08:00
signal.h signal: add include/sys/signal.h to the signal 2024-12-20 11:46:14 -03:00
spawn.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
stdbool.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
stddef.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
stdint.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
stdio.h libc: add nx_strdup() & nx_strndup() support 2024-10-15 01:16:48 +08:00
stdlib.h libc: Refine the arc4random_buf implementation 2024-10-26 18:04:21 -03:00
stdnoreturn.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
string.h libc: add nx_strdup() & nx_strndup() support 2024-10-15 01:16:48 +08:00
strings.h Revert "libc/lib_bzero:Add bzero prototype." 2024-10-23 10:08:23 +08:00
syscall.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
syslog.h userspace: Exclude nuttx/arch.h 2024-11-01 16:59:37 +08:00
termios.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
threads.h include/threads.h: Replace thrd_ defines by actual function definitions 2024-12-19 21:56:02 +08:00
time.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
unistd.h nuttx: add get_current_dir_name implementation 2024-12-19 20:55:51 +08:00
utime.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
uuid.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
wait.h wait: add wait.h header file 2024-12-20 11:46:14 -03:00
wchar.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00
wctype.h include: migrate to SPDX identifier 2024-10-04 08:18:42 +08:00