---
title: Atomic Operations
framework: kernel
role: collectionGroup
role_heading: API Collection
path: kernel/libkern/atomic_operations
---

# Atomic Operations

Increment and decrement numbers, perform compare-and-swap operations, and manipulate other data atomically.

## Topics

### Test Operations

- [OSTestAndClear](kernel/1576463-ostestandclear.md)
- [OSTestAndSet](kernel/1576456-ostestandset.md)

### Increment

- [OSIncrementAtomic](kernel/1576460-osincrementatomic.md)
- [OSIncrementAtomic8](kernel/1576477-osincrementatomic8.md)
- [OSIncrementAtomic16](kernel/1576484-osincrementatomic16.md)
- [OSIncrementAtomic64](kernel/1576480-osincrementatomic64.md)

### Decrement

- [OSDecrementAtomic](kernel/1576455-osdecrementatomic.md)
- [OSDecrementAtomic8](kernel/1576458-osdecrementatomic8.md)
- [OSDecrementAtomic16](kernel/1576468-osdecrementatomic16.md)
- [OSDecrementAtomic64](kernel/1576449-osdecrementatomic64.md)

### Compare and Swap

- [OSCompareAndSwap](kernel/1576450-oscompareandswap.md)
- [OSCompareAndSwap64](kernel/1576485-oscompareandswap64.md)
- [OSCompareAndSwapPtr](kernel/1576461-oscompareandswapptr.md)

### Additions

- [OSAddAtomic](kernel/1576452-osaddatomic.md)
- [OSAddAtomic8](kernel/1576483-osaddatomic8.md)
- [OSAddAtomic16](kernel/1576475-osaddatomic16.md)
- [OSAddAtomic64](kernel/1576451-osaddatomic64.md)

### Boolean Operations

- [OSBitAndAtomic](kernel/1576481-osbitandatomic.md)
- [OSBitAndAtomic8](kernel/1576487-osbitandatomic8.md)
- [OSBitAndAtomic16](kernel/1576453-osbitandatomic16.md)
- [OSBitOrAtomic](kernel/1576467-osbitoratomic.md)
- [OSBitOrAtomic8](kernel/1576478-osbitoratomic8.md)
- [OSBitOrAtomic16](kernel/1576466-osbitoratomic16.md)
- [OSBitXorAtomic](kernel/1576476-osbitxoratomic.md)
- [OSBitXorAtomic8](kernel/1576459-osbitxoratomic8.md)
- [OSBitXorAtomic16](kernel/1576464-osbitxoratomic16.md)

## See Also

### Fundamentals

- [Data Types](kernel/libkern/data_types.md)
- [Byte Order Utilities](kernel/libkern/byte_order_utilities.md)
