Hi! Yesterday I was annoyed for the lack of RAII lock guards for entirely spurious reason, but since you sometimes gotta do silly things I spend today creating some. My initial (failed) attempts tried to combine __cleanup, _Generic and __auto_type, but the compilers refused. I've also Googled around and found (among many others) the QEMU and Glib guards. However I don't like them because they end up relying on function pointers/indirect calls. Hence the current pile of CPP hackery.. no indirect calls in sight. I really like how they end up simplifying the code, but perhaps y'all hate them with a passion? I'm thinking we'll at least have a good brawl over naming, esp. the void_guard needs a better name. Compile and boot tested with x86_64-defconfig.