Re: rwlock(9) and mutex(9) definitions

Konstantin Belousov <[email protected]>
Newsgroups gmane.os.freebsd.architechture
Message-ID <[email protected]>
On Tue, Oct 26, 2021 at 10:24:42PM -0700, Gleb Smirnoff wrote:
> 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__ ({ })"?
I do not object against __extension__, I was interested in real situation
where you cannot work-around it.  I am fine with making *lock() correct
expressions.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.