Changeset 36595 in vbox
- Timestamp:
- Apr 6, 2011 7:44:43 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/asm.h
r35004 r36595 2526 2526 2527 2527 /** 2528 * Atomically exchanges and adds to a size_t value, ordered. 2529 * 2530 * @returns The old value. 2531 * @param pcb Pointer to the size_t value. 2532 * @param cb Number to add. 2533 */ 2534 DECLINLINE(size_t) ASMAtomicAddZ(size_t volatile *pcb, size_t cb) 2535 { 2536 #if ARCH_BITS == 64 2537 return ASMAtomicAddU64((uint64_t volatile *)pcb, cb); 2538 #elif ARCH_BITS == 32 2539 return ASMAtomicAddU32((uint32_t volatile *)pcb, cb); 2540 #else 2541 # error "Unsupported ARCH_BITS value" 2542 #endif 2543 } 2544 2545 2546 /** 2528 2547 * Atomically exchanges and adds a value which size might differ between 2529 2548 * platforms or compilers, ordered. … … 2593 2612 return (int64_t)ASMAtomicAddU64((uint64_t volatile *)pi64, (uint64_t)-i64); 2594 2613 } 2614 2615 2616 /** 2617 * Atomically exchanges and subtracts to a size_t value, ordered. 2618 * 2619 * @returns The old value. 2620 * @param pcb Pointer to the size_t value. 2621 * @param cb Number to subtract. 2622 */ 2623 DECLINLINE(size_t) ASMAtomicSubZ(size_t volatile *pcb, size_t cb) 2624 { 2625 #if ARCH_BITS == 64 2626 return ASMAtomicSubU64((uint64_t volatile *)pcb, cb); 2627 #elif ARCH_BITS == 32 2628 return ASMAtomicSubU32((uint32_t volatile *)pcb, cb); 2629 #else 2630 # error "Unsupported ARCH_BITS value" 2631 #endif 2632 } 2633 2595 2634 2596 2635 /** … … 2712 2751 2713 2752 /** 2753 * Atomically increment a size_t value, ordered. 2754 * 2755 * @returns The new value. 2756 * @param pcb Pointer to the value to increment. 2757 */ 2758 DECLINLINE(int64_t) ASMAtomicIncZ(size_t volatile *pcb) 2759 { 2760 #if ARCH_BITS == 64 2761 return ASMAtomicIncU64((uint64_t volatile *)pcb); 2762 #elif ARCH_BITS == 32 2763 return ASMAtomicIncU32((uint32_t volatile *)pcb); 2764 #else 2765 # error "Unsupported ARCH_BITS value" 2766 #endif 2767 } 2768 2769 2770 /** 2714 2771 * Atomically decrement an unsigned 32-bit value, ordered. 2715 2772 * … … 2806 2863 { 2807 2864 return (int64_t)ASMAtomicDecU64((uint64_t volatile *)pi64); 2865 } 2866 2867 2868 /** 2869 * Atomically decrement a size_t value, ordered. 2870 * 2871 * @returns The new value. 2872 * @param pcb Pointer to the value to decrement. 2873 */ 2874 DECLINLINE(int64_t) ASMAtomicDecZ(size_t volatile *pcb) 2875 { 2876 #if ARCH_BITS == 64 2877 return ASMAtomicDecU64((uint64_t volatile *)pcb); 2878 #elif ARCH_BITS == 32 2879 return ASMAtomicDecU32((uint32_t volatile *)pcb); 2880 #else 2881 # error "Unsupported ARCH_BITS value" 2882 #endif 2808 2883 } 2809 2884
Note:
See TracChangeset
for help on using the changeset viewer.