This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
High priority thread versus network
- From: Wayne Visser <wvisser at lszpaper dot com>
- To: ecos-discuss at sourceware dot org
- Date: Mon, 07 May 2007 08:53:17 -0400
- Subject: [ECOS] High priority thread versus network
Hello all,
We're having a problem with an eCos app that has a relatively
long-running, high priority thread (runs at priority 2 every 10 ms and
takes about 4ms to complete). Under high network loads, the app will
crash with no asserts or panics. If the high priority thread is
disabled, the app will run fine for days without problem under high net
loads. Conversely, without any networking activity, the app runs fine
for days.
We've stripped this down to a simple test app with two parts (a) the
high priority thread basically does nothing but consume CPU time:
static void
high_thread( cyg_addrword_t arg )
{
int i, j;
cyg_uint16 buf[1024];
while (1)
{
for ( j=0; j<90; ++j )
{
for ( i=0; i<1024; ++i)
buf[i] = rand();
}
cyg_thread_delay(1);
}
}
and (b) several identical networking threads that do nothing but accept
client connections and echo data sent to them.
If several clients connect to the eCos app, a crash will occur in as
little as a few minutes (but sometimes hours).
So my question is this: Are there any known issues in running a high
priority thread with a relatively long running time? i.e. this thread
is effectively blocking the network threads from running for up to 4ms.
Will that create any known problems?
Thanks for any feedback.
-- Wayne
ps: Out target is i386 and the problem is evident with both 8139 and
82559 ethernet drivers. Curiously, the problem does NOT appear with the
83816 ethernet driver.
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss