Commit 4407a642 authored by vasil's avatar vasil

branches/zip:

Check that pthread_t can indeed be passed to Solaris atomic functions, instead
of assuming that it can be passed if 0 can be assigned to it. It could be that:
* 0 can be assigned, but pthread_t cannot be passed and
* 0 cannot be assigned but pthread_t can be passed

Better to check what we are interested in, not something else and make
assumptions.
parent f4303a98
...@@ -17,8 +17,8 @@ Place, Suite 330, Boston, MA 02111-1307 USA ...@@ -17,8 +17,8 @@ Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/ *****************************************************************************/
/***************************************************************************** /*****************************************************************************
If this program compiles, then pthread_t objects can be used as arguments If this program compiles and returns 0, then pthread_t objects can be used as
to Solaris libc atomic functions. arguments to Solaris libc atomic functions.
Created April 18, 2009 Vasil Dimov Created April 18, 2009 Vasil Dimov
*****************************************************************************/ *****************************************************************************/
...@@ -28,7 +28,26 @@ Created April 18, 2009 Vasil Dimov ...@@ -28,7 +28,26 @@ Created April 18, 2009 Vasil Dimov
int int
main(int argc, char** argv) main(int argc, char** argv)
{ {
pthread_t x = 0; pthread_t x1;
pthread_t x2;
pthread_t x3;
memset(&x1, 0x0, sizeof(x1));
memset(&x2, 0x0, sizeof(x2));
memset(&x3, 0x0, sizeof(x3));
if (sizeof(pthread_t) == 4) {
atomic_cas_32(&x1, x2, x3);
} else if (sizeof(pthread_t) == 8) {
atomic_cas_64(&x1, x2, x3);
} else {
return(1);
}
return(0); return(0);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment