|
|
|
@ -6,7 +6,7 @@ |
|
|
|
|
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group |
|
|
|
|
* Portions Copyright (c) 1994, Regents of the University of California |
|
|
|
|
* |
|
|
|
|
* $PostgreSQL: pgsql/src/tools/thread/thread_test.c,v 1.10 2004/04/04 17:23:54 momjian Exp $ |
|
|
|
|
* $PostgreSQL: pgsql/src/tools/thread/thread_test.c,v 1.11 2004/04/05 01:27:58 momjian Exp $ |
|
|
|
|
* |
|
|
|
|
* This program tests to see if your standard libc functions use |
|
|
|
|
* pthread_setspecific()/pthread_getspecific() to be thread-safe. |
|
|
|
@ -35,6 +35,8 @@ |
|
|
|
|
void func_call_1(void); |
|
|
|
|
void func_call_2(void); |
|
|
|
|
|
|
|
|
|
char myhostname[MAXHOSTNAMELEN]; |
|
|
|
|
|
|
|
|
|
int errno1_set = 0; |
|
|
|
|
int errno2_set = 0; |
|
|
|
|
|
|
|
|
@ -61,6 +63,12 @@ int main(int argc, char *argv[]) |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (gethostname(myhostname, MAXHOSTNAMELEN) != 0) |
|
|
|
|
{ |
|
|
|
|
fprintf(stderr, "can not get local hostname, exiting\n"); |
|
|
|
|
exit(1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
printf("\
|
|
|
|
|
Make sure you have added any needed 'THREAD_CPPFLAGS' and 'THREAD_LIBS'\n\
|
|
|
|
|
defines to your template/$port file before compiling this program.\n\n" |
|
|
|
@ -128,8 +136,9 @@ void func_call_1(void) { |
|
|
|
|
passwd_p1 = NULL; /* force thread-safe failure report */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
hostent_p1 = gethostbyname("www.yahoo.com"); |
|
|
|
|
p = gethostbyname("www.weather.com"); |
|
|
|
|
/* threads do this in opposite order */ |
|
|
|
|
hostent_p1 = gethostbyname(myhostname); |
|
|
|
|
p = gethostbyname("localhost"); |
|
|
|
|
if (hostent_p1 != p) |
|
|
|
|
{ |
|
|
|
|
printf("Your gethostbyname() changes the static memory area between calls\n"); |
|
|
|
@ -174,8 +183,9 @@ void func_call_2(void) { |
|
|
|
|
passwd_p2 = NULL; /* force thread-safe failure report */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
hostent_p2 = gethostbyname("www.google.com"); |
|
|
|
|
p = gethostbyname("www.postgresql.org"); |
|
|
|
|
/* threads do this in opposite order */ |
|
|
|
|
hostent_p2 = gethostbyname("localhost"); |
|
|
|
|
p = gethostbyname(myhostname); |
|
|
|
|
if (hostent_p2 != p) |
|
|
|
|
{ |
|
|
|
|
printf("Your gethostbyname() changes the static memory area between calls\n"); |
|
|
|
|