xref: /llvm-project/lldb/test/API/functionalities/thread/concurrent_events/exit/main.cpp (revision df4ad3625fad54d91b688564d5b2408aa943ebe4)
1 #include "pseudo_barrier.h"
2 #include <cstdlib>
3 #include <thread>
4 
5 // Use low-level exit functions to achieve predictable timing.
6 #if defined(__linux__)
7 #include <sys/syscall.h>
8 #include <unistd.h>
9 
exit_thread(int status)10 void exit_thread(int status) { syscall(SYS_exit, status); }
exit_process(int status)11 void exit_process(int status) { syscall(SYS_exit_group, status); }
12 #else
13 #error Unimplemented
14 #endif
15 
16 pseudo_barrier_t g_barrier;
17 
thread_func()18 void thread_func() {
19   pseudo_barrier_wait(g_barrier);
20   exit_thread(42);
21 }
22 
main()23 int main() {
24   pseudo_barrier_init(g_barrier, 2);
25   std::thread(thread_func).detach();
26 
27   pseudo_barrier_wait(g_barrier);
28 
29   exit_process(47);
30 }
31