Date: Tue, 26 Oct 2021 22:24:42 -0700 From: Gleb Smirnoff <glebius@freebsd.org> To: Konstantin Belousov <kostikbel@gmail.com> Cc: mjg@freebsd.org, jhb@freebsd.org, jeff@freebsd.org, arch@freebsd.org Subject: Re: rwlock(9) and mutex(9) definitions Message-ID: <YXjimhWUYCwaYoWi@FreeBSD.org> In-Reply-To: <YXjfcclPCfbhYYCQ@kib.kiev.ua> References: <YXiw1afVlQyEhQyc@FreeBSD.org> <YXizhiRnByvyisXe@kib.kiev.ua> <YXi0PM6babQKFulv@kib.kiev.ua> <YXjS16MQZiKm4E/r@FreeBSD.org> <YXjYCj2zh0cjL/%2Bq@kib.kiev.ua> <YXjadvxmJRoXwWUj@FreeBSD.org> <YXjfcclPCfbhYYCQ@kib.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Oct 27, 2021 at 08:11:13AM +0300, Konstantin Belousov wrote: K> > Okay, let's put return aside. This would compile with true K> > functions (e.g. WITNESS), otherwise not: K> > K> > void K> > something(bool clue) K> > { K> > clue ? rw_rlock(lock) : rw_wlock(lock); K> > } K> > K> > And this is correct code per 6.5.15. K> K> So why cannot you write it as K> ... K> if (clue) K> rw_rlock(lock); K> else K> rw_wlock(lock); Of course I can. But manual page rwlock(9) says I can treat them as functions, thus use in conditional operator. My point is that the fact that I can work around this, doesn't justify the problem not being fixed. What is a downside of wrapping them in "__extension__ ({ })"? -- Gleb Smirnoff
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YXjimhWUYCwaYoWi>