summaryrefslogtreecommitdiff
path: root/include/linux/percpu.h
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2023-05-26 12:23:48 +0200
committerPeter Zijlstra <peterz@infradead.org>2023-06-26 11:14:18 +0200
commit54da6a0924311c7cf5015533991e44fb8eb12773 (patch)
treeaf497256995d40431b9c214e7faa45639bf3d991 /include/linux/percpu.h
parent9a1f37ebcfe061721564042254719dc8fd5c9fa0 (diff)
locking: Introduce __cleanup() based infrastructure
Use __attribute__((__cleanup__(func))) to build: - simple auto-release pointers using __free() - 'classes' with constructor and destructor semantics for scope-based resource management. - lock guards based on the above classes. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20230612093537.614161713%40infradead.org
Diffstat (limited to 'include/linux/percpu.h')
-rw-r--r--include/linux/percpu.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index 1338ea2aa720..d33ab1799932 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -8,6 +8,7 @@
#include <linux/cpumask.h>
#include <linux/pfn.h>
#include <linux/init.h>
+#include <linux/cleanup.h>
#include <asm/percpu.h>
@@ -127,6 +128,9 @@ extern void __init setup_per_cpu_areas(void);
extern void __percpu *__alloc_percpu_gfp(size_t size, size_t align, gfp_t gfp) __alloc_size(1);
extern void __percpu *__alloc_percpu(size_t size, size_t align) __alloc_size(1);
extern void free_percpu(void __percpu *__pdata);
+
+DEFINE_FREE(free_percpu, void __percpu *, free_percpu(_T))
+
extern phys_addr_t per_cpu_ptr_to_phys(void *addr);
#define alloc_percpu_gfp(type, gfp) \