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>