mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-22 21:15:40 -04:00

Summary: On linux we need the process to give us special permissions before we can attach to it. Previously, the code for this was copied into every file that needed it. This moves the code to a central place to reduce code duplication. Reviewers: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D15992 llvm-svn: 257319
36 lines
782 B
C++
36 lines
782 B
C++
#include <stdio.h>
|
|
#include <fcntl.h>
|
|
|
|
#include <chrono>
|
|
#include <thread>
|
|
|
|
volatile bool debugger_flag = true; // The debugger will flip this to false
|
|
|
|
void *start(void *data)
|
|
{
|
|
int i;
|
|
size_t idx = (size_t)data;
|
|
for (i=0; i<30; i++)
|
|
{
|
|
if ( idx == 0 && debugger_flag)
|
|
std::this_thread::sleep_for(std::chrono::microseconds(1)); // Set breakpoint here
|
|
std::this_thread::sleep_for(std::chrono::seconds(1));
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int main(int argc, char const *argv[])
|
|
{
|
|
lldb_enable_attach();
|
|
|
|
static const size_t nthreads = 16;
|
|
std::thread threads[nthreads];
|
|
size_t i;
|
|
|
|
for (i=0; i<nthreads; i++)
|
|
threads[i] = std::move(std::thread(start, (void*)i));
|
|
|
|
for (i=0; i<nthreads; i++)
|
|
threads[i].join();
|
|
}
|