diff options
author | rpj <rpj> | 2011-03-12 02:48:24 +0000 |
---|---|---|
committer | rpj <rpj> | 2011-03-12 02:48:24 +0000 |
commit | 7e545e5b00f8803e74405aa22e7704da8aae8e09 (patch) | |
tree | a657b5fc8fd79ca8158da42b151215d4258f52be /ptw32_MCS_lock.c | |
parent | 6e3ac5c605d5062279178b3ea0b853d0e9cf7cc9 (diff) |
Cast consistencies
Diffstat (limited to 'ptw32_MCS_lock.c')
-rw-r--r-- | ptw32_MCS_lock.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/ptw32_MCS_lock.c b/ptw32_MCS_lock.c index 08bea49..ee89880 100644 --- a/ptw32_MCS_lock.c +++ b/ptw32_MCS_lock.c @@ -90,6 +90,7 @@ */ #include "pthread.h" +#include "sched.h" #include "implement.h" /* @@ -163,7 +164,7 @@ ptw32_mcs_lock_acquire (ptw32_mcs_lock_t * lock, ptw32_mcs_local_node_t * node) /* queue for the lock */ pred = (ptw32_mcs_local_node_t *)PTW32_INTERLOCKED_EXCHANGE_PTR((PVOID volatile *)lock, - (void*)node); + (PVOID) node); if (0 != pred) { @@ -197,7 +198,7 @@ ptw32_mcs_lock_release (ptw32_mcs_local_node_t * node) /* no known successor */ if (node == (ptw32_mcs_local_node_t *) - PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR((LPVOID volatile *)lock, + PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR((PVOID volatile *)lock, (PVOID)0, (PVOID)node)) { @@ -208,7 +209,7 @@ ptw32_mcs_lock_release (ptw32_mcs_local_node_t * node) /* wait for successor */ ptw32_mcs_flag_wait(&node->nextFlag); next = (ptw32_mcs_local_node_t *)(size_t) - PTW32_INTERLOCKED_EXCHANGE_ADD((LPLONG)&node->next, 0); /* MBR fence */ + PTW32_INTERLOCKED_EXCHANGE_ADD((PTW32_INTERLOCKED_LPLONG)&node->next, 0); /* MBR fence */ } /* pass the lock */ @@ -229,7 +230,7 @@ ptw32_mcs_lock_try_acquire (ptw32_mcs_lock_t * lock, ptw32_mcs_local_node_t * no node->readyFlag = 0; node->next = 0; /* initially, no successor */ - return ((PVOID)PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR((LPVOID volatile *)lock, + return ((PVOID)PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR((PVOID volatile *)lock, (PVOID)node, (PVOID)0) == (PVOID)0) ? 0 : EBUSY; @@ -257,20 +258,17 @@ ptw32_mcs_node_transfer (ptw32_mcs_local_node_t * new_node, ptw32_mcs_local_node new_node->readyFlag = 0; /* Not needed - we were waiting on this */ new_node->next = 0; -#if defined(_WIN64) - if ((ptw32_mcs_local_node_t *)PTW32_INTERLOCKED_COMPARE_EXCHANGE64((PTW32_INTERLOCKED_LPLONG)new_node->lock, -#else - if ((ptw32_mcs_local_node_t *)PTW32_INTERLOCKED_COMPARE_EXCHANGE((PTW32_INTERLOCKED_LPLONG)new_node->lock, -#endif - (size_t)(PTW32_INTERLOCKED_LPLONG)new_node, - (size_t)(PTW32_INTERLOCKED_LPLONG)old_node) != old_node) + if ((ptw32_mcs_local_node_t *)PTW32_INTERLOCKED_COMPARE_EXCHANGE_PTR((PVOID volatile *)new_node->lock, + (PVOID)new_node, + (PVOID)old_node) + != old_node) { /* * A successor has queued after us, so wait for them to link to us */ while (old_node->next == 0) { - Sleep(0); + sched_yield(); } new_node->next = old_node->next; } |