Hi, I'm running a RH7.2 with a rtlinux 3.1 a linux-2.2.19 kernel on a DELL Latitude laptop. Data aquisition is done with a PCI-card which holds a 9080 from PLX technology. Data rate is about 14MSamples/s, which are transferred through DMA in 1KByte blocks (which equals to one "slot"). The loop that gets the data looks like this ( I tried to simplify it as much as possible without deleting stuff that is important...):
void myLoop(){ rtl_setclockmode(CLOCK_RTL_SCHED, RTL_CLOCK_MODE_ONESHOT, 0); start_time = clock_gethrtime(CLOCK_RTL_SCHED)+ (hrtime_t)GPP_SLOT_TIME_NS; pthread_make_periodic_np(pthread_self(), start_time, 0); do { pthread_wait_np(); rtl_printf( "mailbox: %i\n", mbox_9080 ); [ lots of calculations ] offset = slot_count - mbox_9080; // mbox_9080 holds the number of DMA-blocks already written into // memory. start_time = clock_gethrtime(CLOCK_RTL_SCHED) + offset*BLOCK_TIME_NS; if (offset > 1) pthread_make_periodic_np(pthread_self(),start_time,0); else EXIT=1; slot_count++; } while (EXIT == 0); } Now: on a dual-pentium, this works real nice. No problem at all. The wakeup-time is always accurate to at least 50us (the time of a "slot"). But, as soon as I let it run on the laptop (single processor, 1GHz PIII), these wakeup-calls may be missed by as much as 10ms (yes, 200 "slots") once every 2-3 minutes. Of course my first reaction was to remove all APM-functions, then to compile the kernel non-SMP and then I let run a script in parallel, like while sleep 1; do date +%T >> log; cat /proc/loadavg >> log; ps ax | tail -n 10 | head -n 7 >> log; done So I could look at what happens. But there was nothing special. So I turned off all services I'm sure aren't in use, switched to runlevel 3 and tried again. Still no luck. Then I shut down the network and started the thing locally (before I did it over the network), still no luck. Threw away the graphical interface, no luck. Now I don't have any ideas left of what to do. I'm running in text-mode, runlevel 3, w/o all the bells and whistles, no network and it still crashes on me... runlevel s, shut down everything, ps ax yields: PID TTY STAT TIME COMMAND 1 ? S 0:05 init 2 ? SW 0:00 [kflushd] 3 ? SW 0:00 [kupdate] 4 ? SW 0:00 [kswapd] 5 ? SW 0:00 [keventd] 7254 tty3 S 0:00 init 7255 tty3 S 0:00 /bin/sh 7463 tty3 R 0:00 ps ax (no lines omitted...) and it still crashes... Does anyone have another idea? Everything that I can think of that interrupts my process I turned off. Do YOU have any idea of what to do? Greets ineiti -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/