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>