File: 0006-linux-atomic-fill-out-API-for-atomic-pointer-ops.patch

package info (click to toggle)
zfs-linux 2.3.5-2~bpo13%2B1
  • links: PTS, VCS
  • area: contrib
  • in suites: trixie-backports
  • size: 71,376 kB
  • sloc: ansic: 393,918; sh: 67,823; asm: 47,734; python: 8,163; makefile: 5,129; perl: 859; sed: 41
file content (68 lines) | stat: -rw-r--r-- 2,248 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
From 1aec627c60fe9efc3313e553cef389adda08e7b4 Mon Sep 17 00:00:00 2001
From: Rob Norris <rob.norris@klarasystems.com>
Date: Fri, 1 Aug 2025 08:51:47 +1000
Subject: [PATCH] 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
---
 include/os/linux/spl/sys/atomic.h | 32 +++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/include/os/linux/spl/sys/atomic.h b/include/os/linux/spl/sys/atomic.h
index b2a39d7d6..f4bcd58bd 100644
--- a/include/os/linux/spl/sys/atomic.h
+++ b/include/os/linux/spl/sys/atomic.h
@@ -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 */
-- 
2.43.0