xref: /llvm-project/lldb/test/API/functionalities/thread/state/main.cpp (revision fdea9a4ec9b0d9585b8fe8a612686d9f44f40ddc)
1*99451b44SJordan Rupprecht // This test is intended to verify that thread states are properly maintained
2*99451b44SJordan Rupprecht // when transitional actions are performed in the debugger.  Most of the logic
3*99451b44SJordan Rupprecht // is in the test script.  This program merely provides places where the test
4*99451b44SJordan Rupprecht // can create the intended states.
5*99451b44SJordan Rupprecht 
6*99451b44SJordan Rupprecht #include <chrono>
7*99451b44SJordan Rupprecht #include <thread>
8*99451b44SJordan Rupprecht 
9*99451b44SJordan Rupprecht volatile int g_test = 0;
10*99451b44SJordan Rupprecht 
addSomething(int a)11*99451b44SJordan Rupprecht int addSomething(int a)
12*99451b44SJordan Rupprecht {
13*99451b44SJordan Rupprecht     return a + g_test;
14*99451b44SJordan Rupprecht }
15*99451b44SJordan Rupprecht 
doNothing()16*99451b44SJordan Rupprecht int doNothing()
17*99451b44SJordan Rupprecht {
18*99451b44SJordan Rupprecht     int temp = 0;   // Set first breakpoint here
19*99451b44SJordan Rupprecht 
20*99451b44SJordan Rupprecht     while (!g_test && temp < 5)
21*99451b44SJordan Rupprecht     {
22*99451b44SJordan Rupprecht         ++temp;
23*99451b44SJordan Rupprecht         std::this_thread::sleep_for(std::chrono::seconds(2));
24*99451b44SJordan Rupprecht     }
25*99451b44SJordan Rupprecht 
26*99451b44SJordan Rupprecht     return temp;    // Set second breakpoint here
27*99451b44SJordan Rupprecht }
28*99451b44SJordan Rupprecht 
main()29*99451b44SJordan Rupprecht int main ()
30*99451b44SJordan Rupprecht {
31*99451b44SJordan Rupprecht     int result = doNothing();
32*99451b44SJordan Rupprecht 
33*99451b44SJordan Rupprecht     int i = addSomething(result);
34*99451b44SJordan Rupprecht 
35*99451b44SJordan Rupprecht     return 0;
36*99451b44SJordan Rupprecht }
37