On Fri, Dec 08, 2017 at 11:55:48 +0100, Paolo Bonzini wrote: > So I'm a bit underwhelmed by this experiment. Other opinions?
I am on the same boat. Most use cases in this patchset are arguably adding more complexity because they substitute already very simple code (e.g. "lock; do_something; unlock"), as others have pointed out as well. I usually deal with tricky cases (i.e. functions with many return paths) with an inline "__locked" function. In most cases this will be clearer than using the macros. I concede though that the separate inline is not always an option. That said, two comments: - We might be better off just exposing the cleanup attribute via some convenience macros. The systemd codebase does this, mostly for freeing memory or closing file descriptors. I suspect a large percentage of goto's in our codebase could be eliminated. This could be also used for locks, although we'd need a variant of mutex_lock that returned the mutex, so that in the cleanup function we could just check for NULL. - Does the cleanup attribute work on all compilers used to build QEMU? (I'm thinking of Windows in particular.) Thanks, Emilio