Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Jan 2010 23:39:46 -0500
From:      Alexander Kabaev <kabaev@gmail.com>
To:        David Xu <davidxu@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r201547 - head/lib/libc/gen
Message-ID:  <20100104233946.6d8bfa37@kan.dnsalias.net>
In-Reply-To: <201001050339.o053dV1j075171@svn.freebsd.org>
References:  <201001050339.o053dV1j075171@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Hi,

some quick questions:

FB10_COMPAT_PRIVATE is not used anywhere, why did it get committed?
That aside, use of SYM_DEFAULT is pretty much always wrong.

Also, does libthr really need to export sem_ symbols in 1.2 namespace?
I do not think so, but there might be reasons I am missing, could you
shed some light here?


On Tue, 5 Jan 2010 03:39:31 +0000 (UTC)
David Xu <davidxu@FreeBSD.org> wrote:

> Author: davidxu
> Date: Tue Jan  5 03:39:31 2010
> New Revision: 201547
> URL: http://svn.freebsd.org/changeset/base/201547
> 
> Log:
>   Don't check has_waiters twice, inline some small functions.
>   performance result on my machine:
>   	mutex     Elapsed: 902115 us; per iteration: 90 ns.
>   	semaphore Elapsed: 958780 us; per iteration: 95 ns.
> 
> Modified:
>   head/lib/libc/gen/sem_new.c
> 
> Modified: head/lib/libc/gen/sem_new.c
> ==============================================================================
> --- head/lib/libc/gen/sem_new.c	Tue Jan  5 02:37:59
> 2010	(r201546) +++ head/lib/libc/gen/sem_new.c	Tue Jan
> 5 03:39:31 2010	(r201547) @@ -331,7 +331,7 @@
> _libc_sem_getvalue(sem_t * __restrict se return (0);
>  }
>  
> -static int
> +static __inline int
>  usem_wake(struct _usem *sem)
>  {
>  	if (!sem->_has_waiters)
> @@ -339,7 +339,7 @@ usem_wake(struct _usem *sem)
>  	return _umtx_op(sem, UMTX_OP_SEM_WAKE, 0, NULL, NULL);
>  }
>  
> -static int
> +static __inline int
>  usem_wait(struct _usem *sem, const struct timespec *timeout)
>  {
>  	if (timeout && (timeout->tv_sec < 0 || (timeout->tv_sec == 0
> && @@ -387,7 +387,7 @@ sem_cancel_handler(void *arg)
>          } while (0)
>  
>  
> -static int
> +static __inline int
>  enable_async_cancel(void)
>  {
>  	int old;
> @@ -396,7 +396,7 @@ enable_async_cancel(void)
>  	return (old);
>  }
>  
> -static void
> +static __inline void
>  restore_async_cancel(int val)
>  {
>  	_pthread_setcanceltype(val, NULL);
> @@ -413,7 +413,6 @@ _libc_sem_timedwait(sem_t * __restrict s
>  		return (-1);
>  
>  	retval = 0;
> -	_pthread_testcancel();
>  	for (;;) {
>  		while ((val = sem->_kern._count) > 0) {
>  			if
> (atomic_cmpset_acq_int(&sem->_kern._count, val, val - 1)) @@ -464,7
> +463,5 @@ _libc_sem_post(sem_t *sem) return (-1);
>  
>  	atomic_add_rel_int(&sem->_kern._count, 1);
> -	if (sem->_kern._has_waiters)
> -		return usem_wake(&sem->_kern);
> -	return (0);
> +	return usem_wake(&sem->_kern);
>  }


-- 
Alexander Kabaev

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.13 (FreeBSD)

iD8DBQFLQsKWQ6z1jMm+XZYRArwyAJwOc/6JtClBjYxuHbGvwayJtQ5KpwCfQStd
sgXlj8pE9DNj3cwia4tZsws=
=JzuK
-----END PGP SIGNATURE-----

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