Unverified Commit 5c21c5f2 authored by Christian Brauner's avatar Christian Brauner
Browse files

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: default avatarChristian Brauner <brauner@kernel.org>
parent a6ed5691
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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##_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):