Hi Yuchen,
HI, Jan and others,
in the current stage of RT-FireWire development, I am facing the problem of
using a timer for scheduled re-transaction and bus reset issue. In Linux 2.6 FireWire stack, this is supported by the nice timered workqueue
of kernel2.6. Now, I am seaching for a easiest approach to build or reuse a timered workqueue in RTAI for the RT-FireWire stack. Actually, the same
problem also exists in Ethernet. If I am correct, the timer is initialized
in Ethernet device driver for each network device (I only checked
rt_eepro100.c), but in RTnet, the timer is still based on the linux timer
support. So I am wondering if we need a timered workqueue extension like in
Linux 2.6 to RTAI.
The RTnet's Ethernet drivers do not contain any timers. Their non-rt ancestors contain some for media status monitoring, but this is switched off for the real-time use-case.
The timer required to manage the Ethernet media access based on TDMA is created as a real-time task. Take a look at the implementation of tdma_worker in
http://www.rts.uni-hannover.de/rtnet/lxr/source/stack/rtmac/tdma/tdma_worker.c
It's a big loop executing the currently scheduled job on a TDMA instance (one instance per managed Ethernet device). Such a job can be to wait on the synchronisation frame or to delay the execution until the next transmission time slot arrives and then issue a pending packet.
There are generally several ways to reach a goal. ;)
Jan
PS: Better to discuss on rtnet-developers ;)
------------------------------------------------------- This SF.Net email is sponsored by Oracle Space Sweepstakes Want to be the first software developer in space? Enter now for the Oracle Space Sweepstakes! http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click _______________________________________________ RTnet-users mailing list RTnet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rtnet-users