mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-01-25 10:12:13 +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,
|
return ((void *)atomic_cas_64((volatile uint64_t *)target,
|
||||||
(uint64_t)cmp, (uint64_t)newval));
|
(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 */
|
#else /* _LP64 */
|
||||||
static __inline__ void *
|
static __inline__ void *
|
||||||
atomic_cas_ptr(volatile void *target, void *cmp, void *newval)
|
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,
|
return ((void *)atomic_cas_32((volatile uint32_t *)target,
|
||||||
(uint32_t)cmp, (uint32_t)newval));
|
(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 /* _LP64 */
|
||||||
|
|
||||||
#endif /* _SPL_ATOMIC_H */
|
#endif /* _SPL_ATOMIC_H */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user