소스 검색

cmThread.c: Changed OSAtomicCompareAndSwap32Barrier() to OSAtomicCompareAndSwap64Barrier()

as part of port to spat-lab Mac.
master
kevin 10 년 전
부모
커밋
caa4b558aa
1개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 7
    3
      cmThread.c

+ 7
- 3
cmThread.c 파일 보기

@@ -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
 

Loading…
취소
저장