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
This commit is contained in:
Peter Zijlstra
2023-05-26 12:23:48 +02:00
parent 9a1f37ebcf
commit 54da6a0924
16 changed files with 272 additions and 1 deletions

View File

@@ -17,6 +17,7 @@
#include <linux/types.h>
#include <linux/workqueue.h>
#include <linux/percpu-refcount.h>
#include <linux/cleanup.h>
/*
@@ -211,6 +212,8 @@ void kfree(const void *objp);
void kfree_sensitive(const void *objp);
size_t __ksize(const void *objp);
DEFINE_FREE(kfree, void *, if (_T) kfree(_T))
/**
* ksize - Report actual allocation size of associated object
*