bart | c7b0b3a | 2009-04-28 11:19:43 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Test program that invokes pthread_create@GLIBC_2.0(). |
| 3 | * |
| 4 | * Note: pthread_create@GLIBC_2.0() is only available in 32-bit glibc versions, |
| 5 | * not in 64-bit versions. |
| 6 | */ |
bart | faec72f | 2009-04-26 07:14:15 +0000 | [diff] [blame] | 7 | |
| 8 | |
| 9 | #include <pthread.h> |
| 10 | #include <stdio.h> |
| 11 | |
| 12 | |
| 13 | extern int pthread_create_glibc_2_0(pthread_t*, const pthread_attr_t*, |
| 14 | void *(*)(void*), void*); |
| 15 | |
| 16 | __asm__(".symver pthread_create_glibc_2_0, pthread_create@GLIBC_2.0"); |
| 17 | |
| 18 | |
| 19 | static void* thread_func(void *arg) |
| 20 | { |
| 21 | fprintf(stderr, "The thread.\n"); |
| 22 | return 0; |
| 23 | } |
| 24 | |
| 25 | int main(int argc, char** argv) |
| 26 | { |
| 27 | int result; |
| 28 | pthread_t thr; |
| 29 | |
| 30 | result = (*pthread_create_glibc_2_0)(&thr, 0, thread_func, 0); |
| 31 | if (result != 0) |
| 32 | { |
| 33 | fprintf(stderr, "pthread_create() failed.\n"); |
| 34 | return 1; |
| 35 | } |
| 36 | pthread_join(thr, 0); |
| 37 | fprintf(stderr, "Finished.\n"); |
| 38 | return 0; |
| 39 | } |