Hello, Good news: I am an experienced C(++) programmer familiar with computer hardware and different platforms. Bad news: I am completely new to RT Linux and also quite a beginner in Linux programming in general. I wrote some real-time (some would call it a quasi real-time) applications controlling user hardware in good-old DOS or using a special "operating systems" such as pKernel. I am investigating the possibility to port one of my applications from DOS to RT Linux mainly for educational purposes. I've installed RT 3.0, went through examples and now - I am completely confused. I'll be grateful for any help you can give to kick me over the start of my project. First, a layout of DOS application. I am trying to port a typical "two-task" single processor sampling application. The "user interface task" is running as a normal DOS application using a home-made GUI library (that is also ported to Linux using svgalib). The "real time task" is an interrupt handler routine trigged by the highest priority hardware IRQ with constant period, say 1 ms. Routine consists of IO operations (that must be done in constant period with minimal glitch) and some quite complex computations (that must be done at least just before the next interrupt). In DOS, IRQ routine simply blocks the execution of the OS (read: no STI for the time of the execution) and takes approximately 60% of available processor time on 100 MHz Pentium processor time each time it runs. Tasks interact via shared memory using the only possible locking mechanism - user task disables interrupt for a very short time while execution of IRQ routine can not be interrupted. Under DOS I know exactly what I am doing so it even works. This is what I am planning to port to RT Linux. I suppose I should consider redesign of my application and here is where I need some help. First some questions: 1) IMO it is always a bad idea to lock the serious RTOS (excluding DOS of course <g>) for such a long time. Can somebody explain what would happen under RTL if done so? 2) Handling IRQ, I have to make all IO operations before re-enabling interrupts. I assume after that computation should be made in the highest priority task in RT kernel space. Is anything wrong with such a design? Some better ideas? Link to a similar example? And BTW, how to detect an overdue? 3) Can I use scheduling instead of IRQ to start the sample? How "accurate" is it? 4) Communication between threads is something I can not decide how to. Taking in account that there is quite some non-critical information from RT thread (mostly read-only) that user thread must read often (where the data *may* be partly incorrect now and than), what is in your opinion "the best" way to do it? Shared memory, FIFOs, messaging...? 5) I have some problem understanding RT Linux mutexes. Do they include priority switch to avoid priority dead locks? Well, enough for the first post. I believe you'll hear from me again soon. Sincerely goran -- [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/rtlinux/