public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [ECOS] TCP close(...) action
@ 2003-10-18 18:24 Matt Jerdonek
  2003-10-18 18:30 ` Gary Thomas
  2003-10-21 18:35 ` Andrew Lunn
  0 siblings, 2 replies; 8+ messages in thread
From: Matt Jerdonek @ 2003-10-18 18:24 UTC (permalink / raw)
  To: Discussion eCos

Hi Folks,

I have a simple program with two threads that send /
recv from a single TCP socket.  One thread blocks on a
recv call while the other thread sends data on the
same socket.

I put a close call in the send thread.  The expected
behavior was for the recv thread to wake (with 0 bytes
of data) and a FIN to be sent on the ethernet.  The
actual behavior was that the recv thread never woke
and the FIN was not sent.  (Is this intended or a
bug?).  I found the soclose function would not be
invoked because the recv was still using the file
handle.  Once the recv released the file handle, the
FIN flowed on the ethernet.

I worked around this issue by calling
cyg_thread_release from my application, which woke up
the recv thread.  But I wonder if there is better
solution?  Could (or should) the close call be made to
wake up blocked threads?  If so, any suggestions?

Thanks,
-- Matt

__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 8+ messages in thread
* RE: [ECOS] TCP close(...) action
@ 2003-10-22 16:17 Jay Foster
  0 siblings, 0 replies; 8+ messages in thread
From: Jay Foster @ 2003-10-22 16:17 UTC (permalink / raw)
  To: 'Matt Jerdonek', Andrew Lunn; +Cc: Discussion eCos

You could try sending the process a signal with kill().  SIGUSR1 might work.

-----Original Message-----
From: Matt Jerdonek [mailto:maj1224@yahoo.com]
Sent: Wednesday, October 22, 2003 9:06 AM
To: Andrew Lunn
Cc: Discussion eCos
Subject: Re: [ECOS] TCP close(...) action




> If you re-write your test program to use POSIX
> threads, it should then be possible to run it on
> linux, SunOS, *BSD etc. We can then decide if this 
> is right or wrong.
> 
>      Andrew
> 
> -- 


I ran the program on linux and got the same result
(the close did not wake the recv).  So, I guess that
eCos is behaving correctly.

As I mentioned before, I have a workaround using
cyg_thread_release(..).  Does anyone know of a POSIX
method for waking the recv other than ending and
restarting the thread? 

Thanks,
-- Matt

__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2003-10-22 17:14 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-18 18:24 [ECOS] TCP close(...) action Matt Jerdonek
2003-10-18 18:30 ` Gary Thomas
2003-10-20 15:25   ` Matt Jerdonek
2003-10-21 17:38     ` Christoph Csebits
2003-10-21 18:35 ` Andrew Lunn
2003-10-22 16:06   ` Matt Jerdonek
2003-10-22 17:14     ` Nick Garnett
2003-10-22 16:17 Jay Foster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).