Provide a set of locallocked accessors for pointers to per-CPU data;
this is useful for dynamically-allocated per-CPU regions, for example.

These are symmetric with the {get,put}_cpu_ptr() per-CPU accessor
variants.

Signed-off-by: Julia Cartwright <ju...@ni.com>
---
 include/linux/locallock.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/include/linux/locallock.h b/include/linux/locallock.h
index d658c2552601..921eab83cd34 100644
--- a/include/linux/locallock.h
+++ b/include/linux/locallock.h
@@ -222,6 +222,14 @@ static inline int __local_unlock_irqrestore(struct 
local_irq_lock *lv,
 
 #define put_locked_var(lvar, var)      local_unlock(lvar);
 
+#define get_locked_ptr(lvar, var)                                      \
+       ({                                                              \
+               local_lock(lvar);                                       \
+               this_cpu_ptr(var);                                      \
+       })
+
+#define put_locked_ptr(lvar, var)      local_unlock(lvar);
+
 #define local_lock_cpu(lvar)                                           \
        ({                                                              \
                local_lock(lvar);                                       \
@@ -262,6 +270,8 @@ static inline void local_irq_lock_init(int lvar) { }
 
 #define get_locked_var(lvar, var)              get_cpu_var(var)
 #define put_locked_var(lvar, var)              put_cpu_var(var)
+#define get_locked_ptr(lvar, var)              get_cpu_ptr(var)
+#define put_locked_ptr(lvar, var)              put_cpu_ptr(var)
 
 #define local_lock_cpu(lvar)                   get_cpu()
 #define local_unlock_cpu(lvar)                 put_cpu()
-- 
2.17.0

Reply via email to