Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Nov 2009 12:46:02 +0800
From:      David Xu <davidxu@freebsd.org>
To:        "M. Warner Losh" <imp@bsdimp.com>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r199465 - head/lib/librt
Message-ID:  <4B037C0A.5030804@freebsd.org>
In-Reply-To: <20091117.210502.-1623813784.imp@bsdimp.com>
References:  <200911180135.nAI1ZaIe051549@svn.freebsd.org> <20091117.210502.-1623813784.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
M. Warner Losh wrote:
> In message: <200911180135.nAI1ZaIe051549@svn.freebsd.org>
>             David Xu <davidxu@freebsd.org> writes:
> : Author: davidxu
> : Date: Wed Nov 18 01:35:36 2009
> : New Revision: 199465
> : URL: http://svn.freebsd.org/changeset/base/199465
> : 
> : Log:
> :   Fix compiler warnings.
> : 
> : Modified:
> :   head/lib/librt/sigev_thread.c
> : 
> : Modified: head/lib/librt/sigev_thread.c
> : ==============================================================================
> : --- head/lib/librt/sigev_thread.c	Wed Nov 18 01:13:15 2009	(r199464)
> : +++ head/lib/librt/sigev_thread.c	Wed Nov 18 01:35:36 2009	(r199465)
> : @@ -439,9 +439,9 @@ worker_routine(void *arg)
> :  {
> :  	struct sigev_node *sn = arg;
> :  
> : -	_pthread_cleanup_push(worker_cleanup, sn);
> : +	pthread_cleanup_push(worker_cleanup, sn);
> :  	sn->sn_dispatch(sn);
> : -	_pthread_cleanup_pop(1);
> : +	pthread_cleanup_pop(1);
> :  
> :  	return (0);
> :  }
> 
> This change causes libthr to be needed now for librt.  Before this
> wasn't the case, so ntp break on mips now (I haven't looked at other
> arcs yet).  _pthread_cleanup_pop is exported from libc, while
> pthread_cleanup_pop causes __pthread_cleanup_pop_imp to be referenced,
> which is defined in libthr.
> 
> I guess that's a long way of saying "gee, this seems wrong to me,
> please explain what you are fixing better or revert this change,
> thanks" :)
> 
> Warner
> 
> 

librt needs libpthread to function correctly, otherwise SIGEV_THREAD
notification won't work, though the ntp code may not use it, but who
can guarantee librt never use threads? in old design, the timer
functions were really in libpthread and implemented as threads.

Regards,
David Xu


Index: ntpdate/Makefile
===================================================================
--- ntpdate/Makefile	(revision 199351)
+++ ntpdate/Makefile	(working copy)
@@ -9,7 +9,7 @@
  CFLAGS+= -I${.CURDIR}/../../../contrib/ntp/include -I${.CURDIR}/../

  DPADD=	${LIBNTP} ${LIBM} ${LIBMD} ${LIBRT}
-LDADD=	${LIBNTP} -lm -lmd -lrt
+LDADD=	${LIBNTP} -lm -lmd -lrt -lpthread

  CLEANFILES+= .version version.c

Index: ntpd/Makefile
===================================================================
--- ntpd/Makefile	(revision 199351)
+++ ntpd/Makefile	(working copy)
@@ -33,7 +33,7 @@
  	-I${.CURDIR}/../../../contrib/ntp/libopts -I${.CURDIR}

  DPADD=	${LIBPARSE} ${LIBNTP} ${LIBM} ${LIBMD} ${LIBRT} ${LIBOPTS}
-LDADD=	${LIBPARSE} ${LIBNTP} -lm -lmd -lrt ${LIBOPTS}
+LDADD=	${LIBPARSE} ${LIBNTP} -lm -lmd -lrt -lpthread ${LIBOPTS}

  .if ${MK_OPENSSL} != "no" && !defined(RELEASE_CRUNCH)
  DPADD+=	${LIBCRYPTO}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B037C0A.5030804>