[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH 0/5] Scoped locks using attribute((cleanup))
From: |
Emilio G. Cota |
Subject: |
Re: [Qemu-devel] [RFC PATCH 0/5] Scoped locks using attribute((cleanup)) |
Date: |
Mon, 11 Dec 2017 17:06:38 -0500 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
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