mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-01-15 01:32:04 +03:00
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:
parent
92da9e0e93
commit
1aec627c60
@ -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 */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user