From 1461de23ee84384940626145f07b0a736a2d8bb3 Mon Sep 17 00:00:00 2001 From: David Smith Date: Wed, 11 Jun 2008 10:37:32 -0500 Subject: Added .thread.begin and .thread.end utrace probe tests. 2008-06-11 David Smith * systemtap.base/utrace_p5.exp: Added 'process().thread.begin' and 'process().thread.end' tests. * systemtap.base/utrace_p5_multi.c: Added multi-threaded test program for utrace_p5.exp. * .gitignore: Updated. --- testsuite/systemtap.base/utrace_p5_multi.c | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 testsuite/systemtap.base/utrace_p5_multi.c (limited to 'testsuite/systemtap.base/utrace_p5_multi.c') diff --git a/testsuite/systemtap.base/utrace_p5_multi.c b/testsuite/systemtap.base/utrace_p5_multi.c new file mode 100644 index 00000000..03c6eea0 --- /dev/null +++ b/testsuite/systemtap.base/utrace_p5_multi.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include +#include + +void *thread_function( void *ptr ); + +int +main() +{ + pthread_t thread1, thread2; + int iret1, iret2; + + /* Create independent threads each of which will execute function */ + iret1 = pthread_create(&thread1, NULL, thread_function, (void*) 1); + iret2 = pthread_create(&thread2, NULL, thread_function, (void*) 2); + + /* Wait till threads are complete before main continues. Unless we + * wait we run the risk of executing an exit which will terminate + * the process and all threads before the threads have + * completed. */ + pthread_join(thread1, NULL); + pthread_join(thread2, NULL); + + printf("Thread 1 returns: %d\n", iret1); + printf("Thread 2 returns: %d\n", iret2); + exit(0); +} + +void *thread_function(void *ptr) +{ + int tnum = (int)ptr; + if (tnum == 1) { + int fd = open("/dev/null", O_RDONLY); + close(fd); + } +} -- cgit