svn commit: r199465 - head/lib/librt

David Xu davidxu at freebsd.org
Wed Nov 18 04:46:04 UTC 2009


M. Warner Losh wrote:
> In message: <200911180135.nAI1ZaIe051549 at svn.freebsd.org>
>             David Xu <davidxu at 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}


More information about the svn-src-all mailing list