|
@@ -1293,14 +1293,16 @@ bool cmThFloatCAS( float* addr, float old, float new )
|
1293
|
1293
|
bool cmThPtrCAS( void* addr, void* old, void* neww )
|
1294
|
1294
|
{
|
1295
|
1295
|
#ifdef OS_OSX
|
|
1296
|
+
|
1296
|
1297
|
// REMOVE THIS HACK AND USE OSAtomicCompareAndSwapPtrBarrier() WHEN
|
1297
|
1298
|
// A 64 BIT BUILD IS POSSIBLE ON OS-X.
|
|
1299
|
+
|
1298
|
1300
|
typedef struct
|
1299
|
1301
|
{
|
1300
|
1302
|
union
|
1301
|
1303
|
{
|
1302
|
1304
|
void* addr;
|
1303
|
|
- int val;
|
|
1305
|
+ int64_t val;
|
1304
|
1306
|
} u;
|
1305
|
1307
|
} s_t;
|
1306
|
1308
|
|
|
@@ -1309,7 +1311,8 @@ bool cmThPtrCAS( void* addr, void* old, void* neww )
|
1309
|
1311
|
ov.u.addr = old;
|
1310
|
1312
|
nv.u.addr = neww;
|
1311
|
1313
|
|
1312
|
|
- int rv = OSAtomicCompareAndSwap32Barrier(ov.u.val,nv.u.val,(int*)addr);
|
|
1314
|
+ int rv = OSAtomicCompareAndSwap64Barrier(ov.u.val,nv.u.val,(int64_t*)addr);
|
|
1315
|
+
|
1313
|
1316
|
//int rv = OSAtomicCompareAndSwapPtrBarrier(old,neww,&addr);
|
1314
|
1317
|
return rv;
|
1315
|
1318
|
#endif
|
|
@@ -1616,6 +1619,8 @@ cmThRC_t cmTsMp1cEnqueueSegMsg( cmTsMp1cH_t h, const void* msgPtrArray[], unsi
|
1616
|
1619
|
|
1617
|
1620
|
}while(!cmThPtrCAS(&p->olp,old_hp,new_hp));
|
1618
|
1621
|
|
|
1622
|
+ //printf("%p %p %i\n",p->ilp,p->olp,p->olp->mn);
|
|
1623
|
+
|
1619
|
1624
|
return rc;
|
1620
|
1625
|
}
|
1621
|
1626
|
|
|
@@ -1662,7 +1667,6 @@ unsigned _cmTsMp1cNextMsgByteCnt( cmTsMp1c_t* p )
|
1662
|
1667
|
// return the size of the new msg
|
1663
|
1668
|
return p->olp->mn;
|
1664
|
1669
|
}
|
1665
|
|
-
|
1666
|
1670
|
return 0;
|
1667
|
1671
|
}
|
1668
|
1672
|
|