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
--Sig_/iIY41kDyQ_qlTyTTcA7e/_S
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

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
>=20
> 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.
>=20
> Modified:
>   head/lib/libc/gen/sem_new.c
>=20
> Modified: head/lib/libc/gen/sem_new.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- 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);
>  }
> =20
> -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);
>  }
> =20
> -static int
> +static __inline int
>  usem_wait(struct _usem *sem, const struct timespec *timeout)
>  {
>  	if (timeout && (timeout->tv_sec < 0 || (timeout->tv_sec =3D=3D 0
> && @@ -387,7 +387,7 @@ sem_cancel_handler(void *arg)
>          } while (0)
> =20
> =20
> -static int
> +static __inline int
>  enable_async_cancel(void)
>  {
>  	int old;
> @@ -396,7 +396,7 @@ enable_async_cancel(void)
>  	return (old);
>  }
> =20
> -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);
> =20
>  	retval =3D 0;
> -	_pthread_testcancel();
>  	for (;;) {
>  		while ((val =3D 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);
> =20
>  	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);
>  }


--=20
Alexander Kabaev

--Sig_/iIY41kDyQ_qlTyTTcA7e/_S
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.13 (FreeBSD)

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

--Sig_/iIY41kDyQ_qlTyTTcA7e/_S--



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