linux/atomic: fill out API for atomic pointer ops

Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Closes #17580
This commit is contained in:
Rob Norris 2025-08-01 08:51:47 +10:00 committed by GitHub
parent 92da9e0e93
commit 1aec627c60
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -71,6 +71,22 @@ atomic_cas_ptr(volatile void *target, void *cmp, void *newval)
return ((void *)atomic_cas_64((volatile uint64_t *)target,
(uint64_t)cmp, (uint64_t)newval));
}
static __inline__ void *
atomic_swap_ptr(volatile void *target, void *newval)
{
return ((void *)atomic_swap_64((volatile uint64_t *)target,
(uint64_t)newval));
}
static __inline__ void *
atomic_load_ptr(volatile void *target)
{
return ((void *)atomic_load_64((volatile uint64_t *)target));
}
static __inline__ void
atomic_store_ptr(volatile void *target, void *newval)
{
atomic_store_64((volatile uint64_t *)target, (uint64_t)newval);
}
#else /* _LP64 */
static __inline__ void *
atomic_cas_ptr(volatile void *target, void *cmp, void *newval)
@ -78,6 +94,22 @@ atomic_cas_ptr(volatile void *target, void *cmp, void *newval)
return ((void *)atomic_cas_32((volatile uint32_t *)target,
(uint32_t)cmp, (uint32_t)newval));
}
static __inline__ void *
atomic_swap_ptr(volatile void *target, void *newval)
{
return ((void *)atomic_swap_32((volatile uint32_t *)target,
(uint32_t)newval));
}
static __inline__ void *
atomic_load_ptr(volatile void *target)
{
return ((void *)atomic_load_32((volatile uint32_t *)target));
}
static __inline__ void
atomic_store_ptr(volatile void *target, void *newval)
{
atomic_store_32((volatile uint32_t *)target, (uint32_t)newval);
}
#endif /* _LP64 */
#endif /* _SPL_ATOMIC_H */