From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32705 invoked by alias); 27 Jun 2013 09:34:45 -0000 Mailing-List: contact ecos-devel-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: ecos-devel-owner@ecos.sourceware.org Received: (qmail 32688 invoked by uid 89); 27 Jun 2013 09:34:44 -0000 X-Spam-SWARE-Status: No, score=4.6 required=5.0 tests=AWL,BAYES_50,BOTNET,RP_MATCHES_RCVD,TW_PL autolearn=no version=3.3.1 Received: from ip2.televic.com (HELO ip2.televic.com) (81.82.194.222) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 27 Jun 2013 09:34:17 +0000 Received: from SRV-VS06.TELEVIC.COM ([10.0.0.46]) by SRV-VS06.TELEVIC.COM ([10.0.0.46]) with mapi; Thu, 27 Jun 2013 11:34:13 +0200 From: =?iso-8859-1?Q?Lambrecht_J=FCrgen?= To: "ecos-devel@ecos.sourceware.org" CC: Bernd Edlinger Date: Thu, 27 Jun 2013 09:34:00 -0000 Subject: RFC: bsd_tcpip patch on synch.c Message-ID: <51CC0714.6040805@televic.com> user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-SW-Source: 2013-06/txt/msg00000.txt.bz2 Hello, The patch below we already use since 2009. But I did not code the patch,=20 so I do not know what problem it solves. Here are our CVS logs about the=20 patch: - To avoid deadlock on mutex 'splx_mutex', I changed 'cyg_mutex_lock'=20 into 'cyg_mutex_trylock'. - Add 'trylock' and 'cyg_thread_delay' to spl_any() in order to handle=20 the deadlock issue on the mutex 'splx_mutex' I am applying the patches from Bernd Edlinger=20 (http://bugs.ecos.sourceware.org/show_bug.cgi?id=3D1001656)(to fix an=20 anoying problem "packet loss every 20 minutes when ARP timeout expires"=20 and to add raw packets). And I wonder if this patch (below) is still valid? ---------------------------------------------------------------------------= ----- Index: net/bsd_tcpip/current/src/ecos/synch.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 RCS file: /cvs/ecos/ecos-opt/net/net/bsd_tcpip/current/src/ecos/synch.c,v retrieving revision 1.3 diff -u -5 -p -r1.3 synch.c --- net/bsd_tcpip/current/src/ecos/synch.c 29 Jan 2009 17:49:56=20 -0000 1.3 +++ net/bsd_tcpip/current/src/ecos/synch.c 27 Jun 2013 09:12:54 -0000 @@ -115,12 +115,14 @@ static volatile cyg_handle_t splx_thread static inline cyg_uint32 spl_any( cyg_uint32 which ) { cyg_uint32 old_spl =3D spl_state; if ( cyg_thread_self() !=3D splx_thread ) { - while ( !cyg_mutex_lock( &splx_mutex ) ) + while ( !cyg_mutex_trylock( &splx_mutex ) ) { + cyg_thread_delay(1); continue; + } old_spl =3D 0; // Free when we unlock this context CYG_ASSERT( 0 =3D=3D splx_thread, "Thread still owned" ); CYG_ASSERT( 0 =3D=3D spl_state, "spl still set" ); splx_thread =3D cyg_thread_self(); } ---------------------------------------------------------------------------= ----- Kind regards, J=FCrgen --=20 J=FCrgen Lambrecht R&D Associate Mobile: +32 499 644 531 Tel: +32 (0)51 303045 Fax: +32 (0)51 310670 http://www.televic-rail.com Televic Rail NV - Leo Bekaertlaan 1 - 8870 Izegem - Belgium Company number 0825.539.581 - RPR Kortrijk