1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/** Test whether DRD recognizes LinuxThreads as LinuxThreads and NPTL as 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown * NPTL. 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown */ 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <pthread.h> 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <semaphore.h> 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <unistd.h> 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic pid_t s_main_thread_pid; 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid* thread_func(void* arg) 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (s_main_thread_pid == getpid()) 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown { 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown write(STDOUT_FILENO, "NPTL or non-Linux POSIX threads implementation detected.\n", 57); 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown else 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown { 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown write(STDOUT_FILENO, "Detected LinuxThreads as POSIX threads implementation.\n", 55); 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return 0; 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main(int argc, char** argv) 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pthread_t threadid; 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown s_main_thread_pid = getpid(); 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pthread_create(&threadid, 0, thread_func, 0); 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pthread_join(threadid, 0); 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return 0; 35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 36