This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Re: Networking in a ROM build
- To: "Trenton D. Adams" <tadams at theone dot dnsalias dot com>
- Subject: Re: [ECOS] Re: Networking in a ROM build
- From: Fano Ramparany <Fano dot Ramparany at rd dot francetelecom dot fr>
- Date: Fri, 31 Aug 2001 18:35:07 +0200
- CC: 'eCos Disuss' <ecos-discuss at sourceware dot cygnus dot com>
- Organization: France Telecom
- References: <000601c12c1d$0892d9c0$090110ac@TRENT>
- Reply-To: Fano dot Ramparany at rd dot francetelecom dot fr
After some investigations and tracing the ROM version of my networking
application, I've found that the call to connect is stuck, waiting for ever
on
a blocking semaphore at line 349 within a function cyg_tsleep in file
synch.c.
The function calls stack is then:
connect
bsd_connect
tsleep
cyg_tsleep
the call to tsleep is done in bsd_connect under the following condition
which
holds in the ROM version:
while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) {
error = tsleep((caddr_t)&so->so_timeo, PSOCK | PCATCH,
netcon, 0);
in the RAM version the condition fails, that partly explains why the
behaviour
differ in the RAM and ROM version.
Has any one further hints. In particular, is there a way for checking that
the ethernet driver has properly initialized?
Fano
"Trenton D. Adams" wrote:
> Does your code hang up on the accept () call? Mine does. I call
> accept, and the windows machine never gets to it. It's almost as if the
> bind didn't even work originally.
>
> Anyone know if there's a way of using something like "netstat" in eCos?
> I would like to be able to use CYG_TRACEX () to output the socket
> connection information of the entire system.
>
> -----Original Message-----
> From: ecos-discuss-owner@sources.redhat.com
> [mailto:ecos-discuss-owner@sources.redhat.com] On Behalf Of Fano
> Ramparany
> Sent: Thursday, August 23, 2001 10:01 AM
> To: Trenton D. Adams
> Cc: eCos Disuss
> Subject: [ECOS] Re: Networking in a ROM build
>
> Trenton,
> This is exactly the problem we are currently facing and trying to solve
> (see some recent threads). A socket configuration that might
> solve your problem is to increase the socket timeout value:
>
> This partially solved our problem, however, by sniffing the network
> traffic (using tcpdump)
> We have observed some strange behaviour on the ROM version of our
> application, which seems to buffer the first packets and at some stage
> sends them alltogether over the network.
>
> I've also added some delay between the ethernet driver initialization
> and the ip stack initialization, but this didn't solve the problem.
>
> I'll now try to add some tracing (CYGDBG_USE_ASSERT) to go further.
>
> Fano
>
> > When using a ROM version, the following thing happens:
> > The transmit and status signal threads connect to my windows machine
> > just fine. After they are connected, my windows machine attempts to
> > connect back to the embedded system's CommandThread socket. The
> > connection attempt times out.