Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 May 2014 16:18:12 +0400
From:      Chagin Dmitry <dchagin@freebsd.org>
To:        Hans Petter Selasky <hps@selasky.org>
Cc:        freebsd-multimedia@FreeBSD.org, FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: Patch for Linux Futexes
Message-ID:  <20140522121812.GA1070@dchagin.static.corbina.net>
In-Reply-To: <537DDA2E.6030609@selasky.org>
References:  <537DDA2E.6030609@selasky.org>

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

--sdtB3X0nJg68CQEu
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, May 22, 2014 at 01:06:22PM +0200, Hans Petter Selasky wrote:
> Hi,
>=20
> When using the Linux Skype client under FreeBSD I sometimes see that the=
=20
> Audio disappears in the one direction. When I check "ps auxw" I see=20
> skype is stuck on a so-called Futex. I looked into the Linux futex code=
=20
> and see that wakeup_one() is used instead of wakeup(). Maybe others can=
=20
> test too and verify if replacing wakeup_one() by wakeup() makes any=20
> difference in for Linux applications using Futexes.
>=20

is it fixes the problem for you? as the author of it I should to look
back to find the reason of using wakeup_one(). and check this patch on
nptl tests.


> --HPS
>=20
>=20
> > diff --git a/sys/compat/linux/linux_futex.c b/sys/compat/linux/linux_fu=
tex.c
> > index 9b4c92f..e893bf4 100644
> > --- a/sys/compat/linux/linux_futex.c
> > +++ b/sys/compat/linux/linux_futex.c
> > @@ -498,7 +498,7 @@ futex_wake(struct futex *f, int n, uint32_t bitset)
> >  		wp->wp_flags |=3D FUTEX_WP_REMOVED;
> >  		TAILQ_REMOVE(&f->f_waiting_proc, wp, wp_list);
> >  		LIN_SDT_PROBE1(futex, futex_wake, wakeup, wp);
> > -		wakeup_one(wp);
> > +		wakeup(wp);
> >  		if (++count =3D=3D n)
> >  			break;
> >  	}
> > @@ -525,7 +525,7 @@ futex_requeue(struct futex *f, int n, struct futex =
*f2, int n2)
> >  			wp->wp_flags |=3D FUTEX_WP_REMOVED;
> >  			TAILQ_REMOVE(&f->f_waiting_proc, wp, wp_list);
> >  			LIN_SDT_PROBE1(futex, futex_requeue, wakeup, wp);
> > -			wakeup_one(wp);
> > +			wakeup(wp);
> >  		} else {
> >  			LIN_SDT_PROBE3(futex, futex_requeue, requeue,
> >  			    f->f_uaddr, wp, f2->f_uaddr);
>=20
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"

--=20
Have fun!
chd

--sdtB3X0nJg68CQEu
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAlN96wQACgkQ0t2Tb3OO/O3TgQCdGJCLWmUgIkbY4yvNkbT2UTVW
2cUAn1uvx6ebL3IUh8MYpBR1i/7FV693
=eHJL
-----END PGP SIGNATURE-----

--sdtB3X0nJg68CQEu--



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