cleanup: add a scoped version of CLASS()
This will make it possible to use:
scoped_class() {
}
constructs to limit variables to certain scopes and still perform
auto-cleanup.
Signed-off-by: Christian Brauner <brauner@kernel.org>
pull/1309/head
parent
a6ed5691b2
commit
5c21c5f22d
|
|
@ -277,6 +277,14 @@ static inline class_##_name##_t class_##_name##ext##_constructor(_init_args) \
|
||||||
class_##_name##_t var __cleanup(class_##_name##_destructor) = \
|
class_##_name##_t var __cleanup(class_##_name##_destructor) = \
|
||||||
class_##_name##_constructor
|
class_##_name##_constructor
|
||||||
|
|
||||||
|
#define scoped_class(_name, var, args) \
|
||||||
|
for (CLASS(_name, var)(args); \
|
||||||
|
__guard_ptr(_name)(&var) || !__is_cond_ptr(_name); \
|
||||||
|
({ goto _label; })) \
|
||||||
|
if (0) { \
|
||||||
|
_label: \
|
||||||
|
break; \
|
||||||
|
} else
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DEFINE_GUARD(name, type, lock, unlock):
|
* DEFINE_GUARD(name, type, lock, unlock):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue