Re: svn commit: r211859 - head/lib/libthr/thread

[ Available lists | Index of svn-src-all | Month of Aug 2010 | Week of 27 Aug 2010 | Raw email | View thread | Wrap long lines | Reply ]
From
Pawel Jakub Dawidek <pjd@FreeBSD.org>
Date
27 Aug 2010 13:53:20
Subject
Re: svn commit: r211859 - head/lib/libthr/thread
Message-ID
20100827135305.GB1884@garage.freebsd.pl


[ Hide this part ]
On Fri, Aug 27, 2010 at 03:23:07AM +0000, David Xu wrote:
[...]

Hi David.

While you at libthr... I found implementation of
_pthread_mutex_isowned_np(), which makes me wonder:

int
_pthread_mutex_isowned_np(pthread_mutex_t *mutex)
{
struct pthread *curthread = _get_curthread();
int ret;

if (__predict_false(*mutex == NULL)) {
ret = init_static(curthread, mutex);
if (__predict_false(ret))
return (ret);
}
return ((*mutex)->m_owner == curthread);
}

When init_static() fails, the caller will interpret the answer as 'true',
which seems wrong. What does this if statement do exactly? It
initializes mutex if it isn't? If so, can't we simply assert that it has
to be initialized?

--
Pawel Jakub Dawidek http://www.wheelsystems.com
pjd@FreeBSD.org http://www.FreeBSD.org
FreeBSD committer Am I Evil? Yes, I Am!


[ Show this part (application/pgp-signature) ]

Elapsed time: 0.101 seconds