1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 04:37:40 +00:00
serenity/Libraries/LibC/sys
Sergey Bugaev 3ac0c9b9e7 LibPthread: Implement pthread_once()
The implementation uses atomics and futexes (yay!) and is heavily based on the
implementation I did for my learning project named "Let's write synchronization
primitives" [0].

That project, in fact, started when I tried to implement pthread_once() for
Serenity (because it was needed for another project of mine, stay tuned ;) ) and
was not very sure I got every case right. So now, after learning some more about
code patterns around atomics and futexes, I am reasonably sure, and it's time to
contribute the implementation of pthread_once() to Serenity :^)

[0] To be published at https://github.com/bugaevc/lets-write-sync-primitives
2020-11-24 21:36:28 +01:00
..
arch/i386 Meta: Add a script check the presence of "#pragma once" in header files 2020-05-29 07:59:45 +02:00
cdefs.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
file.h Meta: Add a script check the presence of "#pragma once" in header files 2020-05-29 07:59:45 +02:00
internals.h LibC: Move C++ABI functions to cxxabi.cpp, typecheck cxa_atexit 2020-08-12 20:40:59 +02:00
ioctl.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
ioctl_numbers.h LibC: Implement tcflush(3) 2020-07-11 11:33:33 +02:00
mman.h Meta: Add a script check the presence of "#pragma once" in header files 2020-05-29 07:59:45 +02:00
param.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
ptrace.cpp Everywhere: Fix typos 2020-10-02 16:03:17 +02:00
ptrace.h Kernel: More PID/TID typing 2020-08-10 11:51:45 +02:00
resource.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
select.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
select.h LibC: Implement pselect 2020-06-22 16:00:20 +02:00
socket.cpp Kernel+LibC: Use uintptr_t as the main type in the syscall interface 2020-10-12 19:53:25 +02:00
socket.h LibC: We still need to use NULL (not nullptr) in C headers 2020-10-14 13:57:51 +02:00
stat.h LibC: Move stat(), lstat() and fstat() to <sys/stat.h> 2020-08-11 20:29:14 +02:00
sysmacros.h Meta: Add a script check the presence of "#pragma once" in header files 2020-05-29 07:59:45 +02:00
time.h Kernel+LibC: Add adjtime(2) 2020-11-10 19:03:08 +01:00
times.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
types.h LibPthread: Implement pthread_once() 2020-11-24 21:36:28 +01:00
uio.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
uio.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
un.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
utsname.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
wait.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
wait.h Kernel+LibC: Add sys$waitid(), and make sys$waitpid() wrap it 2020-02-05 18:14:37 +01:00