Re: [rtl] pci device driver
It all depends on what the device driver does. I've written device drivers that have both Real-Time and normal Linux portions which communicate via shared/global memory. Norm - Original Message - From: Michael Nielsen [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Sunday, February 10, 2002 8:39 AM Subject: Re: [rtl] pci device driver Is it possible to write a device driver under linux and then to use it in RTLinux ? I am working on a writing a device driver for a isa-netcard, and thought it was not possible to port a device driver from linux to RTlinux (cause of the linux-kernel getting scheduled, and not be running while running (many) RT-threads). I hope that you can clear my doubt. Thanks in advance Michael - Original Message - From: [EMAIL PROTECTED] To: vijay patel [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Sent: Thursday, February 07, 2002 3:24 PM Subject: Re: [rtl] pci device driver Vijay- Linux Device Drivers by O'Reilly is incredibly useful for writing pci device drivers under (rt)linux. http://www.oreilly.com/catalog/linuxdrive2/ -Brent On Thu, 7 Feb 2002, vijay patel wrote: Hello , I want to write a device driver for a PCI card on RTLinux . Any expert can tell me is there any functions available to read/write PCI configuration space ? if not then How I can know the IRQ and base address assigned to the card ? Thanks in advance ! --Vijay Patel -- [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/
Re: [rtl] Long latency on laptop
Umm... What's that mean? Would you please translate the mysterious acronym SMM. TIA Norm - Original Message - From: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, February 07, 2002 1:22 PM Subject: Re: [rtl] Long latency on laptop Is all power saving and the horrible speed step disabled? If so, you may be the victim of the dreaded SMM about which nothing can be done. On Thu, Feb 07, 2002 at 12:14:47PM +0100, Linus Gasser wrote: 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/ -- - Victor Yodaiken Finite State Machine Labs: The RTLinux Company. www.fsmlabs.com www.rtlinux.com -- [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/ -- [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/
Re: [rtl] API to rtlinux programs
Depends. That is one way. Another is to wrap your rtlinux task with a normal linux device driver which can then communicate with users using ordinary read/write/ioctl functions. You'd need some way to notify the rtlinux task that there's something for it to do. If it's already a periodic task, simple semaphores would suffice. Otherwise, a FIFO just for notification would make the simplest user interface in terms of using familiar functions. Norm - Original Message - From: Michael Nielsen [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, January 23, 2002 11:47 AM Subject: [rtl] API to rtlinux programs Hi I am making a state machine as a realtime program, in RTLinux ver 3.1 My program have to offer an API so that other programs can call some functions inside my state machine. What is the right way to do this ? is the only way to make use of a RT-FIFO and then make some kind of simple protocol (X means do this, Y means do that), so that the user programs put messages into the RT-FIFO which are read by the realtime program. Thanks in advance Michael -- [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/ -- [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/ -- [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/
Re: [rtl] rtl_time module stops working
I can't help you solve your problem because I've never seen anything like that happen that wasn't my fault. What I can tell you is that for my periodic threads, I use pthread_create() followed by pthread_make_periodic_np() and in the while-loop, I suspend with rt_task_wait(). I've left this system running for over a week at 1200 Hz and logged over a billion (10^9) invocations with no apparent glitches. Norm - Original Message - From: Kristoffer Persson [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Monday, January 28, 2002 7:57 PM Subject: [rtl] rtl_time module stops working Hi, Has anyone observed and solved the following? After some time (a few minutes to a few hours) of operation, the RT task I am running stops without any message. If I rmmod and insmod it again, it will run for about a seconds before it stops again. If I re-insert rtl_sched and rtl_time and my module, it will run again for some time (~min-hours) before stopping. My task is really simple, it only flips a bit on the parallel port. I have tried task periods between 50us and 1ms and it appears to run longer the longer the period. void *rtfunc( void *param ) { unsigned char value = 0; unsigned char mask = 0x01; pthread_make_periodic_np( thread, gethrtime() + PERIOD, PERIOD); while ( 1 ) { pthread_wait_np(); rtl_outb( value, PORT ); value ^= mask; // Toggle bit } return 0; } /* rtfunc */ RTLinux 3.1, Linux 2.4.4, CPU AMD 5x86, gcc 2.96 (from RedHat 7.2). I found an earlier post about a similar problem with an older version of RTLinux and the reply was that it had been fixed in the 3.0 release. Hope someone can help, this is getting a bit annoying. Kris -- [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/ -- [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/
Re: [rtl] Integer division of hrtime_t variables
Scan the archives. I've given the prescription a number of times for extracting this function from the gcc library and linking it with your program. Norm - Original Message - From: Pablo Alvarez [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, January 23, 2002 11:30 AM Subject: [rtl] Integer division of hrtime_t variables Hi all, When I try to do an integer division of an hrtime_t variable within the kernel, I get the following error upon inserting the module: my_module.o: unresolved symbol __divdi3 make: *** [test] Error 1 As best I can tell, __divdi3 is called by the compiler to do that division, and is not available within the kernel (actually, it is available from the NVdriver module for my nvidia graphics card, but that leads to other problems). Does anybody know of a way to avoid using this function, or to make this function available in the kernel, or am I stuck multiplying by 0.001? Thanks, Pablo Alvarez --- Pablo Alvarez, Ph.D. Phone: (617) 353-1423 Software Engineer Fax: (617) 353-1414 Dept. of Psychologyemail: [EMAIL PROTECTED] Boston University 64 Cummington Street Boston, MA 02215, USA --- -- [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/ -- [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/
Re: [rtl] rtlinux gcc 3.0.3
Well, from the preprocessor's point of view, () are extra tokens. What is being undefined is the string __cli, not the function __cli(). Perhaps earlier preprocessors have been more lenient in letting things like this through. Norm - Original Message - From: Massimiliano Cialdi [EMAIL PROTECTED] To: rtl [EMAIL PROTECTED] Sent: Wednesday, January 16, 2002 12:30 PM Subject: [rtl] rtlinux gcc 3.0.3 does anyone tried to compile some module using gcc 3.0.3? I receive some warnings like: /usr/src/rtlinux/rtlinux-3.1/linux/include/asm/rtlinux_cli.h:24:13: warning: extra tokens at end of #undef directive at the line indicated in rtlinux_cli.h there is: #undef __cli() it seems that extra tokens are () I wonder if I can remove the extra tokens wherever they are. thanks -- Massimiliano Cialdi [EMAIL PROTECTED] [EMAIL PROTECTED] -- [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/ -- [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/
Re: [rtl] Should I setfp_np even I don't care about saving FPU state?
Are you running X-window? If so, there's probably be a large number of FP calculations you're unaware of. Any sound cards? Things like that are often stealth uses of resources. The real question isn't having your thread's FP registers saved for it, but the possibility that your thread my corrupt the FPU state of any other process using it. Norm - Original Message - From: Calin A. Culianu [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, December 21, 2001 3:54 PM Subject: [rtl] Should I setfp_np even I don't care about saving FPU state? I was wondering if it's necessary to turn on FPU stuff for a realtime kernel thread, if I do some basic floating point math but I don't care about the state of floating point registers being saved across iterations of a thread loop...? It seems to me that even though I don't care about the persistence of double or float variables across thread invocations, if the FPU isn't configured correctly strange unwanted CPU exceptions can occur. Is this so? :) -Calin -- [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/ -- [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/
Re: [rtl] make devices ?
- Original Message - From: Calin A. Culianu [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, December 13, 2001 5:06 PM Subject: Re: [rtl] make devices ? You can write a small C program to essentially act as a wrapper to the mknod(2) system call. Then set this program to be setuid-root and have it behave correctly as such.. Also this allows you to control exactly WHAT devices a user can create. The other alternative that was suggested was to just set the mknod binary to be setuid root. This can have security and safety ramifications, and it may not even work at all (IIRC programs usually need to be setuid-aware). Can you imagine what would happen if a goofy developer who mistyped a major number instead pointed a device node to something like the ide driver rather than an RTF? Then he tries to write to the fifo and POOF, there goes your hard drive! :) The OP asked how to allow non-root users to access one (or more) root-only commands. Every answer to this question (other than don't do it) entails risks. Further, every answer to the question entails running the mknod binary and therefore carries the same risks. Norm -- [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/
Re: [rtl] malloc, timers, and crashes.
Ken. Please don't think that I was advocating the abandonment of all thoughts of creating a real-time memory allocator under all possible sets of conditions -- No. What I was arguing was that it's impossible in general, that there is no one-size-fits-all. Many problems have finite limitations which can provide practical limits to what is otherwise an open-ended black-hole. If you know from the design of your program that either a) the total memory requirements are finite or b) the memory requirements per unit time is finite then it's eminently practical to construct a memory-dispensing allocator. I've done a few and, given the constraints of finite (and small finite) requirements, they work perfectly. I've never done one that's designed to work within the rt-environment but I can almost see my way there off the top of my head [seeing my way and actually traversing the distance are two different things. Hey, I can see the way to the moon ... Well, you know what I mean]. The only gotcha I can see in the RT-environment is that pre-emption can be a problem, especially with ISR's, but again, specific program design can obviate these concerns too. If you can do it, and if it's what will make your problem manageable, go for it. Norm - Original Message - From: Ken Emmons, Jr. [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, December 07, 2001 2:04 PM Subject: RE: [rtl] malloc, timers, and crashes. Hi Norm, Yes, I am actually proposing a pre-allocated memory routine. I am not interested in accessing memory through the linux kernel per se (although if such a mechanism existed I would use it). What I do want to do is to have a memory pool available that gets allocated at load time and dispatched to threads upon need. I started to write a memory pool interface for the specific need that I had but I was thinking, why not make it generic?? I was going to call the routines rt_malloc() and rt_free() unless this would not be compatable in the mindset of what malloc does. I guess by calling it rt_malloc() you are assuming that it does not block (which it doesnt), it is relatively quick (it is), and that there will be tradeoffs (there are). The main tradeoffs are its fixed size, which I feel can be handled by proper use of the functions and proper care (we are RT programmers and always need to be careful after all). I am almost done with a simple implementation and it looks like it will work (famous last words, considering I haven't event tried to compile it yet! hehe :o) I will try it out. Hmmm... Someone has just pointed out to me that RTAI has a dynamic memory manager available already. It looks like my code may not be of much value if I end up switching to RTAI. I'll finish it on general principle and so I can finish my code that prompted this whole thing using RTLinux. Hmm.. another reason to port my stuff to RTAI. Are there any real technical disadvantages to RTAI (coming form people who actually use both RTOS's ).. everything I have seen has looked like speculation or a Holy/Philosophical decision. Please, no flames .. I am new to this list, I dont mean to cause problems!! :o) thanks. ~Ken -- [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/ -- [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/
Re: [rtl] How can I use math function in RT module?
You can use some in rt-threads if you set the thread attribute to use_fp before the first time it uses the math coprocessor. The safest way to find out what math functions you can use is to extract the modules you want from the math library with the 'ar' command, then use objdump to see what else these modules call/refer to. It may be possible to build up a small library of kernel-safe math functions. Also, remember that the math coprocessor itself can execute some instructions that evaluate math functions like sine and cosine. Norm - Original Message - From: Young Joon Lee [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, December 07, 2001 5:33 PM Subject: [rtl] How can I use math function in RT module? Hi, I need to calculate some equations which include sine and exponential functions. Because I need to calculate the trajectory of robot in RealTime. Does anybody know how to calculate the equations? I know I can't use standard math functions in Kernel module. __ Do You Yahoo!? Send your FREE holiday greetings online! http://greetings.yahoo.com -- [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/ -- [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/
Re: [rtl] oneshot thread
- Original Message - From: Massimiliano Cialdi [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Sunday, November 25, 2001 5:29 AM Subject: Re: [rtl] oneshot thread Massimiliano Cialdi wrote: Norm Dresner wrote: If you have a 2 second deadline and a routine that takes, say, 150 milliseconds to execute, then set the sleep for 1.85 seconds and you'll meet your deadline. Unfortunately I don't know how long is routine: it's hardware dependent! Another problem is that the scheduler must know where dead line is for a thread, otherwise this thread could be preempted by another thread. If I simply use clock_nanosleep(), I don't think that the scheduler would know about thread dead line. That's what thread priorities are all about. And you can at least get a good estimate of how long the routine takes by timing it on various configurations. Norm thanks -- Massimiliano Cialdi [EMAIL PROTECTED] [EMAIL PROTECTED] -- [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/ -- [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/
Re: [rtl] oneshot thread
If you have a 2 second deadline and a routine that takes, say, 150 milliseconds to execute, then set the sleep for 1.85 seconds and you'll meet your deadline. Unfortunately there is nothing that I've found any more sophisticated than this in RTLinux. Norm - Original Message - From: Massimiliano Cialdi [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Saturday, November 24, 2001 4:48 AM Subject: Re: [rtl] oneshot thread Der Herr Hofrat wrote: What do I need if I don't want a periodic thread? That is, I want to set a dead-line for my thread without using periodic thread? next_time=calc_time(); /* calculate the next time you want to run in NS */ now=clock_gethrtime(); /* get the current time */ while(1){ clock_nanosleep(CLOCK_REATLTIME,TIMER_ABSTIME,hrt2ts(now+ne xt_time),NULL); your rt code next_time=calc_time(); now=clock_gethrtime(); } I don't understand... I read the man page for clock_nanosleep(). It says it suspends execution of a thread. If I set a dead line after 2s I would like it had finished at least in 2s. Your code seems to wait 2s and then it executes rt code... thanks -- Massimiliano Cialdi [EMAIL PROTECTED] [EMAIL PROTECTED] -- [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/ -- [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/
[rtl] sending signals to user-threads
V3 of Real-Time Linux supports -- so the documentation says -- POSIX (kernel) pthreads and sending signals to (kernel) pthreads. The normal Linux kernel also supports a version of pthreads for user-tasks. Can a real-time Linux thread send a signal to a user-process/thread just by knowing its pid using the function pthread_kill()? If not, is there any other way to do this other than having the user-process block on reading a real-time FIFO and getting the signal number as the data to be read when there's a signal to be sent? TIA Norm -- [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/
Re: [rtl] accessing a module
I remember answering this a month ago but here's the answer again. 1. If by access runtime image of a module from another module you mean to access globally defined data or functions in one module from another, you have to use -- assuming you want an int variable called myData -- EXPORT_SYMBOL( myData) in the module containing myData and extern int myData in the one doing the referencing. You also have to load the one doing the export first. 2. A module is a .o-file and its format is very well documented. Norm - Original Message - From: A V [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, November 15, 2001 1:16 PM Subject: [rtl] accessing a module Hi, This one i have mailed one month back. But still as i didnt get answer i am mailing again. I tried in all ways i know. I want to know how to access runtime image of a module from another module. And one more doubt regarding ELF format is will there be any header in runtime image of a module or a program. Many Many Advanced thanks Venkat __ Do You Yahoo!? Find the one for you at Yahoo! Personals http://personals.yahoo.com -- [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/ -- [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/
Re: [rtl] printfing floats
Changing the threads attributes to enable saving and restoring the state of the FP coprocessor doesn't change the function you call when you reference rtl_printf(). It's incapable of printing floating point without the attribute change and it remains incapable with it. There are several things you can do to print FP data but they all involve some kind of hack at creating a function that does the equivalent of sprintf( string , %f , variable) so you can pass a character string to rtl_printf. If you absolutely must print the data, find a way to convert it to a fixed precision integer representation and print that. Norm - Original Message - From: Tim Beamish [EMAIL PROTECTED] To: rtlinux help [EMAIL PROTECTED] Sent: Wednesday, November 14, 2001 3:34 PM Subject: [rtl] printfing floats Can we do this in a real time thread: float x = 1.5; rtl_printf(%f, x); It's printing this for me: x = %f I've given the thread permission to do floating point arithmetic but it shouldn't matter in this case. Tim -- [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/ -- [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/
[rtl] Here's what I need. What's the easiest way to get there?
I need two features in RT-Linux that I had in AMX: 1. to wake up a sleeping task with a message. Message means nothing more than a copy of a byte string of some pre-defined length at an address specified by the caller. Thus structmystructreal_data = { 1 , 2 ... }; status = ajsend( TaskID , mailbox_number , (void*)real_data ); would awaken a sleeping task (TaskID) and stuff the contents of real_data (plus perhaps more if the system-wide pre-defined length of a message was larger than izeof( real_data) ). 2 . In addition to being able to pass parameters to a waiting task, each mailbox was a FIFO, queuing messages/wakeups to each task so that if a task received a wakeup while it was active, as soon as it tried to sleep it would be woken again. I'm porting a program that was originally written using AMX86 over MS-DOS which used this capability into RT-Linux (v3) which doesn't have these features. The reason we used these features in the original program was that with a 33 MHz 80386 we couldn't always guarantee that a task would finish processing one message before another message came in -- but we were absolutely certain that the total processing within a major cycle of the schedule was within the available CPU bandwidth. Of course, we're using a 700 MHz P-III these days, but the processing requirements have grown too and we're still needing some kind of FIFO for messages/wakeups of sleeping pthreads in the kernel. Sure, I can create a homegrown FIFO for this task -- and another, slightly different homegrown FIFO for the second ... but with almost anything home-grown there are risks of race conditions in which a task checks to see if there are any waiting message and if not it goes to sleep while a message arrives between the check and the sleeping. (This isn't a problem in AMX because the scheduler does both the message posting and the sleeping/waking so it's atomic there). I'd like to find a permanent solution if I can to providing this mechanism within RT-Linux but I haven't been able to identify one so far. I'm open to all suggestions. Thanks Norm -- [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/
Re: [rtl] error in removing a module
The initial Segmentation Fault is undoubtedly due to some unexpected operation(s) in your own module. Once that happens during removal, the module is still in the kernel and in the state TERMINATING (or REMOVING or something similar). If it is in this state, it can't be removed because its already being removed (at least the kernel thinks so) and you can't remove the rtl_XXX modules because they still depend on you module. Baring some heroic measures I won't even begin to describe because they involve hand-modifying several kernel structures, the only solutions to this dilemma are: 1. Don't Segmentation Fault the cleanup function 2. Reboot Norm - Original Message - From: Tim Beamish [EMAIL PROTECTED] To: rtlinux help [EMAIL PROTECTED] Sent: Tuesday, November 13, 2001 1:47 PM Subject: [rtl] error in removing a module I inserted a self made module called 'tt_mod' into rtlinux and when I tried to remove it, I got a segmentation fault. I did an lsmod and got this: Module Size Used by rtl_fifo9792 0 (unused) tt_mod 0 0 (deleted) rtl_sched 27856 0 [tt_mod] rtl_posixio 7216 0 [rtl_fifo tt_mod] rtl_time4736 0 [tt_mod rtl_sched rtl_posixio] rtl18080 0 [rtl_fifo tt_mod rtl_sched rtl_posixio rtl_time] mbuff 6368 2 [tt_mod] es1371 28176 0 (autoclean) ac97_codec 8768 0 (autoclean) [es1371] soundcore 4048 4 (autoclean) [es1371] usb-uhci 22416 0 (unused) usbcore29616 0 [usb-uhci] It looks like the module is still loaded so I tried to remove it with rmmod and got this: rmmod: module tt_mod is not loaded So I tried to insert it again and I got this message: insmod: a module named tt_mod already exists And so I tried to remove it and I got this: rmmod: module tt_mod is not loaded And on and on... So I tried to stop rtlinux and got this: rmmod: mbuff is in use rmmod: rtl is in use rmmod: rtl_posixio is in use rmmod: rtl_sched is in use rmmod: rtl_time is in use Scheme: (-) not loaded, (+) loaded (+) mbuff (+) rtl (-) rtl_fifo (+) rtl_posixio (+) rtl_sched (+) rtl_time I can't insert tt_mod because it's already there and I can't remove it because it isn't there. Now I can't even stop rtlinux as everything seems to be in use. Is there a way to clean out the loaded modules in rtlinux and force it to quit? Tim -- [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/ -- [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/
Re: [rtl] unresolved symbol atexit
What I would do at this point if I were faced with the problem is to write a hello-world program in user-space C++ and I would determine if atexit were being called in the startup. I would do this by one of three ways: 1. gdb 2. write a substitute in which I set a global flag if it was called and then in the main program I would write out something that indicated whether my atexit function was called or not. 3. Use objdump on the .o file created from my .cpp and look at the function calls in it. This is no guarantee because it ignores the C++ startup routine but it would be an indicator. Norm - Original Message - From: Ivan Martinez [EMAIL PROTECTED] To: [EMAIL PROTECTED]; Ish Rattan [EMAIL PROTECTED]; [EMAIL PROTECTED] Cc: Dresner, Norman A. [EMAIL PROTECTED] Sent: Monday, November 12, 2001 4:55 AM Subject: Re: [rtl] unresolved symbol atexit Not really. After reducing my includes to rtl_cpp.h and my testclass.h I still have the same problem. Ivan On Friday 09 November 2001 16:32, Ish Rattan wrote: On Fri, 9 Nov 2001, Ivan Martinez wrote: I don't call atexit() at all. This is my list of includes: May be something that you are calling does :-) Some function declared in math.h or sys/stat.h is doing it chase it down (it is a little tedious but can be done). -ishwar -- [rtl] --- To unsubscribe: echo unsubscribe rtl | mail [EMAIL PROTECTED] OR echo unsubscribe rtl Your_email | mail [EMAIL PROTECTED] -- [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/ -- [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/
Re: [rtl] unresolved symbols
fopen is a normal Linux user-space function which AFAIK is not available to any kernel-space task under any conditions. As I understand, you'll have to create a user-task to open the file and use it to send the data down to the kernel either via ioctl() or via an rtlinux FIFO. Norm - Original Message - From: Peter Grössinger [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, October 30, 2001 5:24 AM Subject: [rtl] unresolved symbols hello, i am running rtlinux 2.3 on a PC104. i was trying to use the function fopen() within the init_module of my kernel module. when inserting the module i unfortunately get the error unresolved symbol fopen. would sombody know how to upgrade the c lib in order so be able to load my module ? thank you very much in advance ! kindest regards, peter _ Peter Groessinger Software Development TTTech Computertechnik AG Schoenbrunner Strasse 7, A-1040 Vienna, Austria http://www.tttech.com Phone: +43(1)585 34 34-42, Fax: +43(1)585 34 34-90 mailto: [EMAIL PROTECTED] _ -- [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/ -- [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/
[rtl] Problems with RDTSC examples posted here recently
There were (at least) three sample implementations of a C-function to read the Pentium's time-stamp counter. I originally implemented two and when I discovered a problem with the results of one, I implemented the third which was supposed to be an improved version of the second. The results of the first method are exactly what one would expect from a nominally P-MMX 233 but the results from the 2nd and 3rd are not. Since my competence in assembly language ended with the demise of the 8088's real-mode, I'd hope that someone could point out the problem with these implementations. [AFAIK, I created all three functions with a simple cut-and-paste]. The program's output is included in the comment-block at the end. / * Get the minimum #include files necessary to run / #includestdio.h #includeunistd.h #includeasm/io.h / * This is Method1 in the following / __inline__ unsigned long long int method1(void) { unsigned long long int x; __asm__ volatile (.byte 0x0f, 0x31 : =A (x)); return x; } / * This is Method2 in the following / __inline__ unsigned long long int method2(void) { unsigned long long int x; __asm__(rdtsc\n\t mov %%edx, %%ecx\n\t :=A (x)); return x; } / * This is Method2A in the following / __inline__ unsigned long long int method2A(void) { unsigned long long int x; /* the CPUID instruction is mostly irrelevant; it just flushes the pipeline for good measure */ __asm__(cpuid\n\t rdtsc\n\t mov %%edx, %%ecx\n\t :=A (x)); return x; } / * * This is the test program * * / int main() { / * Define starting(_1) and ending(_2) time for each * method / long long intmethod2_1 , method2_2 , method1_1 , method1_2 , method2A_1 , method2A_2; / * Read the starting times / method1_1 = method1(); method2_1 = method2(); method2A_1= method2A(); / * wait for a known period of time / sleep(1); / * read the ending times after the wait / method1_2 = method1(); method2_2 = method2(); method2A_2= method2A(); / * print out the results / printf( method1 : %10lld- %10lld = %10lld \n , method1_2 , method1_1 , method1_2 - method1_1 ); printf( method2 : %10lld- %10lld = %10lld \n , method2_2 , method2_1 , method2_2 - method2_1 ); printf( method2A : %10lld- %10lld = %10lld \n , method2A_2, method2A_1, method2A_2- method2A_1); printf( -- also m2_1 - m1_1 = %10lld\n , method2_1 - method1_1 ); printf( -- and m2A_1- m2_1 = %10lld\n , method2A_1 - method2_1 ); printf( finally m2A_1- m1_1 = %10lld\n , method2A_1 - method1_1 ); return(0); } / * SAMPLE OUTPUT * * method1 : 23573589435592- 23573353927542 = 235508050 method2 : 23573353927556- 23573353927556 = 0 method2A : 23573353927607- 23573353927607 = 0 -- also m2_1 - m1_1 = 14 -- and m2A_1- m2_1 = 51 finally m2A_1- m1_1 = 65 * * THIS PATTERN IS COMPLETELY REPEATABLE * * The order of the execution doesn't matter* / -- [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/
[rtl] Follow-up: checking a pthread-ID
While browsing the code in v3.0's rtl_sched.c rtl_sched.h, I found that, within the RTL context, a pthread_t points to a structure of type rtl_thread_struct which contains an int-item magic and that a valid rtl_thread_struct will have this value equal to the constant RTL_THREAD_MAGIC. How safe is it to assume that this will always be the case and that I can implement a thread validity check with #definertlTHREAD_VALID( th ) ( (th)-magic ) == RTL_THREAD_MAGIC ) and be safe if I -- or another programmer who takes over program maintenance from me in the unspecified future upgrades to a newer version of rtl? Thanks Norm - Original Message - From: Norm Dresner [EMAIL PROTECTED] To: rtlinux [EMAIL PROTECTED] Sent: Thursday, October 25, 2001 8:42 PM Subject: checking a pthread-ID According to the map-page, pthread_wakeup_np always returns a zero value and consequently can't be used to determine if the target thread in fact no longer exists. I have two questions: 1. What -- if anything -- will happen if the thread has been destroyed, i.e. either it has executed pthread_exit() or some other process/thread has already killed it with pthread_delete_np()? 2. Is there any safe function to call to verify that the target of a pthread_t still is a valid thread? TIA Norm -- [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/
[rtl] checking a pthread-ID
According to the map-page, pthread_wakeup_np always returns a zero value and consequently can't be used to determine if the target thread in fact no longer exists. I have two questions: 1. What -- if anything -- will happen if the thread has been destroyed, i.e. either it has executed pthread_exit() or some other process/thread has already killed it with pthread_delete_np()? 2. Is there any safe function to call to verify that the target of a pthread_t still is a valid thread? TIA Norm -- [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/
Re: [rtl] communication between modules
No reason to apologize, your English is almost perfect. Anyway, there may be other means, but here are some: 1. Global variables. You can export symbols in the module that's loaded first and have each of the modules put into these variables what it wishes to share and take out what it needs from the others. 2. Simple Shared Memory. You can reserve some RAM at the top of memory to use as your own private shared memory that Linux won't even see. You can decide on the structure you want for this area and AFAIK the first module to be loaded has to mmap() this memory to get a virtual address to use. 3. There's also a more complex shared memory driver available for RTLinux which I've never used because my needs aren't that complex. Norm - Original Message - From: Massimiliano Cialdi [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Monday, October 22, 2001 3:13 PM Subject: [rtl] communication between modules how a module can share some data with other modules? thanks and sorry for my english. -- Massimiliano Cialdi [EMAIL PROTECTED] [EMAIL PROTECTED] -- [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/ -- [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/
Re: [rtl] Locking Memory in Kernel
- Original Message - From: Calin A. Culianu [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, October 17, 2001 6:30 PM Subject: Re: [rtl] Locking Memory in Kernel . Do the GFP_KERNEL and GFP_USER flags have any effect on this? YES. Best advice is to get Rubini's book or download it from O'Reilly's web site. Norm -- [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/
Re: [rtl] Locking Memory in Kernel
Calin. No offense intended. I was just trying to point out that there are many resources out there which will answer all kinds of questions (basic and otherwise) about Linux kernel programming, and that I thought that the Rubini book was the best investment. Norm - Original Message - From: Calin A. Culianu [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, October 17, 2001 6:29 PM Subject: RE: [rtl] Locking Memory in Kernel Norm. Why do you always assume the most basic stupid things about my questions? I wasn't asking how to write a kernel module. I have written many in my lifetime. Re-read my question please. Despite what you think, you aren't infinitely smarter than everyone here. What I was asking was how do you make sure that the memory is available immediately (or relatively so) so that by the time your real-time thread is created the memory is there, in ram, and cannot be swapped out. *Sheesh* -Calin On Tue, 16 Oct 2001, Dresner, Norman A. wrote: Calin. The init_module() function runs as part of the normal Linux kernel. Therefore the all of the usual kernel mechanisms are available, in particular kmalloc(). If you can't find a man-page, there are a few web-sites with moderate kernel hacking guides but IMO the best source for kernel programming information is in Rubini's book (O'Reilly) and apparently the entire text of the second edition is available on-line. I have the 1st ed. (I just haven't gotten around to upgrading yet). It's a fine text that I use all the time and I heartily recommend it. Norm -Original Message- From: Calin A. Culianu [SMTP:[EMAIL PROTECTED]] Sent: Tuesday, October 16, 2001 8:39 AM To: [EMAIL PROTECTED] Subject: [rtl] Locking Memory in Kernel Hey, this may be a basic question, but what steps should a programmer take when allocating memory in a real-time module during init_module() to ensure that the memory is A) available more-or-less immediately and needs not be paged-in-on-use and B) the memory stays locked in RAM. -Calin -- [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/ -- [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/ -- [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/ -- [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/
Re: [rtl] Maximum cycling frequency of 200Hz?
I've been running 1300 Hz on P-133 and PMMX-233 for billions of cycles with no observed deviation from the programmed frequency. On the P-133, my RT-kernel code takes about 40% of my CPU's bandwidth but it seems to be less than 10% on the PMMX-233. What do you have your thread doing? Norm - Original Message - From: David Hamilton [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Monday, October 15, 2001 5:44 AM Subject: [rtl] Maximum cycling frequency of 200Hz? I'm running RTLinux 3.1 on a PC with an AMD K6 500Mhz processor (RedHat7.1). I seem to be only able to run a real-time loop at a maximum frequency of 200Hz. Trying to set a lower period in pthread_make_period... or a shorter sleep in nanosleep has no effect beyond 200Hz (5msec)! I've read in other emails about the #define HZ 100 in the linux param.h file, but assumed that only effected context switching within the user space. I've also read about people reaching rates in excess of 1KHz (I'm looking for 1KHz). Can anyone tell me what I have to do to get these higher frequencies, or is it a limitation of my hardware. David -- [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/ -- [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/
Re: [rtl] Can anyone explain why this happened?
I know from hard, sad experience that the normal Linux kernel (at least 2.2.x and I believe 2.4.x too) is able to deal with kernel segfaults easily. It declares a segfault and terminates the current process. If that was part of the initialization phase of the module, then it's stuck until the next reboot (barring heroic measures that involve plausibly fatal kernel table tinkering; a reboot is much easier) and if it was in response to a user-task's call (read/write/open/close/ioctl/...) then the user-task is terminated (if you're maintaining connection counts, you're out of luck because there's no notification of that and you can't unload your module because the count says it's still in use). That's what the normal Linux kernel -- even with RTLinux patches -- does when you're in the kernel and not in real-time mode. When the incident I described occurred I had turned interrupts off with rtl_no_interrupts( saveit ); and I'm not sure if that would surpress a hardware interrupt from the segfault itself. If so, I can see why the hardware would hang: The CPU has raised the SEGFAULT interrupt and is waiting for it to be handled but it can't because interrupts are disabled. Anyway, that's my guess as answering my own question. Norm - Original Message - From: Calin A. Culianu [EMAIL PROTECTED] To: [EMAIL PROTECTED] Cc: rtlinux [EMAIL PROTECTED] Sent: Friday, October 12, 2001 12:10 PM Subject: Re: [rtl] Can anyone explain why this happened? Well, in kernel mode there really isn't any memory protection, so chances are it wasn't a 'segfault' per se, but rather a page fault. I am willing to bet that the page you tried to access wasn't in physical memory at the time and maybe the kernel's swapper tried to get it off the hard disk but got hung due to the interrupt characteristics of the currently running (realtime) thread. This is, however just a guess. I wish I were more familiar with kernel internals (I am getting there!) to say for sure.. but my above theory seems plausible at least. :) However, you raise an interesting issue: Anyone know offhand how intelligent the kernel is about detecting when a kernel thread tries to access memory it has no business touching? I am assuming the only rule is that you can't read memory location '0', but other than that, anything else goes... is that so? -Calin On Thu, 11 Oct 2001, Norm Dresner wrote: Inside a function called by a real-time task, I coded a simple routine to read the contents from a port. Because I wanted not to even try to read from the address if the corresponding board wasn't there, I put an if-statement in front of the i/o read. The code I wanted to write was: ... if ( BoardOK[ boardno ] ) return inw( basePort ); else return( -1 ); But instead I screwed up and wrote ... if( BoardOK[ basePort ] ) // basePort ~ 0x300 while boardno ~ 1-4 return inw( basePort ); else return( -1 ); And the computer would *hang* every time the function was called. I'm obviously addressing memory beyond the end of the array and there's probably not enough static data in the driver to allow addressing 0x300 * sizeof( int ) beyond the end of it without running out of the address range assigned to my driver's data segment either. [I know that the hang in this routine and not after it returned data because I had already commented out that code in an attempt to isolate the problem.] If I was addressing beyond the end of the virtual address space for the kernel, I'd expect to get a segfault, not a hang. And if there was memory there, why didn't I just read a value instead of hanging so solidly that only the reset or power switches would have any effect? I don't know how rtlinux handles a sigfault so I'm hoping that someone else does and can explain why this happened. TIA Norm -- [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/ -- [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/ -- [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/
[rtl] Can anyone explain why this happened?
Inside a function called by a real-time task, I coded a simple routine to read the contents from a port. Because I wanted not to even try to read from the address if the corresponding board wasn't there, I put an if-statement in front of the i/o read. The code I wanted to write was: ... if ( BoardOK[ boardno ] ) return inw( basePort ); else return( -1 ); But instead I screwed up and wrote ... if( BoardOK[ basePort ] ) // basePort ~ 0x300 while boardno ~ 1-4 return inw( basePort ); else return( -1 ); And the computer would *hang* every time the function was called. I'm obviously addressing memory beyond the end of the array and there's probably not enough static data in the driver to allow addressing 0x300 * sizeof( int ) beyond the end of it without running out of the address range assigned to my driver's data segment either. [I know that the hang in this routine and not after it returned data because I had already commented out that code in an attempt to isolate the problem.] If I was addressing beyond the end of the virtual address space for the kernel, I'd expect to get a segfault, not a hang. And if there was memory there, why didn't I just read a value instead of hanging so solidly that only the reset or power switches would have any effect? I don't know how rtlinux handles a sigfault so I'm hoping that someone else does and can explain why this happened. TIA Norm -- [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/
Re: [rtl] fp-how?
Alternately, if you know the approximate range of the number -- you do know the approximate range of the number, don't you? -- you can do some integer math and compute the integer and fractional parts and create an ASCII representation that way. Norm - Original Message - From: Basham, Richard R [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, October 02, 2001 9:44 AM Subject: RE: [rtl] fp-how? David, rtl_printf does not support floating point numbers. You have to pass the data to user space using a fifo or shared memory and print the value from there. Regards, Rich -Original Message- From: David Armstrong [mailto:[EMAIL PROTECTED]] Sent: Tuesday, October 02, 2001 1:58 AM To: '[EMAIL PROTECTED]' Subject: [rtl] fp-how? I am new to rtlinux and a present am trying my hardest to use floating point arithmetic. I have used the function pthread_setfp_np(pthread_self(), 1) within my thread to enable me to carry out floating point operations. But have had no success. I print out the result using rtl_printf. Is there something else I should be doing. I have read the gettingStarted.txt file and followed its instruction and I have tried running the fp example. Regarding the example I followed Phil Wilshire instructions as to how to compile and run the fp programme. However though this was successful he didn't explain what the programme was meant to do our how you new it was working. David Renishaw plc Scotland - --- This email and any attachments are confidential and are for the use of the addressee only. If you are not the addressee, you must not use or disclose the contents to any other person. Please immediately notify the sender and delete the email. Statements and opinions expressed here may not represent those of the company. Email correspondence is monitored by the company. The parent company of the Renishaw Group is Renishaw plc, registered in England no. 1106260. Registered Office: New Mills, Wotton-under-Edge Gloucestershire, GL12 8JR, United Kingdom. Tel +44 (0) 1453 524524 --- -- [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/ -- [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/ -- [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/
Re: [rtl] RT-Linux patch proposal for RTF size queryage
- Original Message - From: Calin A. Culianu [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Saturday, September 29, 2001 9:24 PM Subject: Re: [rtl] RT-Linux patch proposal for RTF size queryage On Fri, 28 Sep 2001, Victor Yodaiken wrote: You're welcome to send a patch and your tone is fine, but ... 1. Stuart is right, it's easy, just put the function in the rtl_fifos code I am not sure what you are referring to... if you are saying that creating a custom function to return fifo size is easy, then yes, I agree with that one.. :) 2. I hate adding functions so my question is always why do you have to have it? Well, because. :) No seriously I think it's a fair feature of a fifo for one to be able to query its size and/or fill. In a uniprocessor situation it's only useful if you can guarantee that no other (real-time) task or ISR will gain control of the CPU between the query and whatever you decide to do as a result of it; yes, there can be a significant number of cases where this guarantee is (almost)absolute, but as a general rule without disabling interrupts -- which is depricated in any real-time system -- it's not particularly useful. In a SMP system, as a general rule, it's useless. Norm Also, I am being particularly anal with respect to my rt-task talking to userland and I want to be absolutely sure that I don't have any failed and/or partial writes.. the only way to really accomplish this is to have the ability to query the fifo size/freeness. I don't *absolutely* need this feature, but if would make me happy if this feature were included. :) -Calin On Fri, Sep 28, 2001 at 04:21:45PM -0400, Calin A. Culianu wrote: I realize the tone of my previous this email seems impatient.. it isn't. Actually if you guys would honor me with your approval, I can gladly submit a patch that defines an interface for my proposed solution (a) below, or one that moves the struct definition of struct rtl_fifo_struct over to the more public 'rtl_fifo.h' header file. (Since the kernel symbol rtl_fifos is already exported). Please allow me to be an rt-linux developer!! :) -Calin -- Forwarded message -- Date: Fri, 28 Sep 2001 15:35:38 -0400 (EDT) From: Calin A. Culianu [EMAIL PROTECTED] To: [EMAIL PROTECTED] Cc: rtl [EMAIL PROTECTED] Subject: RE: [rtl] number of elements in a fifo Well, in kernel mode there's no way to tell how full a fifo is (as of rtl 3.1)! Actually, that macro only occurs in rtl_fifo.c, and furthermore, the exported kernel symbol rtl_fifos that the macro really uses is of type struct rt_fifo_struct, which is a private type inside rtl_fifo.c! Why is kernel symbol 'rtl_fifos' exported when its type is private? It aggravates me!! Can someone on the rt-linux dev team either kindly: a) create a public interface to find out the size and/or the bytes free in an rtf (this is trivial, just make a function that returns rtl_fifos[minor].bufsize, rtl_fifos[minor].len etc). OR b) make struct rtl_fifo_struct a public struct (since the array of fifos is exported into the kernel symbol table anyway). -Calin On Fri, 21 Sep 2001, stuart warren wrote: To read how full the fifo is from userspace... int bytes_in_fifo; ioctl(rtfifo_fd, FIONREAD, bytes_in_fifo); In the kernel you can use... bytes_in_fifo = RTF_LEN(fifo_number); Cheers, Stuart -Original Message- From: fred august [mailto:[EMAIL PROTECTED]] Sent: Thursday, 20 September 2001 6:00 To: rtl Subject: [rtl] number of elements in a fifo Hi, is there a simple way to know how many elements are in a FIFO? This should be in RT, or almost, for a FIFO between a RT thread and a user space one. I need this information in order to dump some of the elements if the FIFO is too full. thanks f ___ ___ Do You Yahoo!? Il tuo indirizzo gratis e per sempre @yahoo.it su http://mail.yahoo.it -- [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/ -- [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/ -- [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/ -- [rtl] --- To unsubscribe: echo unsubscribe rtl | mail [EMAIL
Re: [rtl] doubt regd library calls
Not quite. There is a big difference between Library Calls and System Calls. Some Library calls are nothing much more than calls to your own functions. System Calls are what you're referring to. There are library calls that are safe to make and library calls that call system calls that are not usable in a real-time module. You can safely use some functions from libgcc that make no system calls -- many of the math functions that aren't compiled in-line are like that. But you can't use the normal sprintf (because it uses malloc). Norm - Original Message - From: Calin A. Culianu [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, September 18, 2001 12:06 PM Subject: Re: [rtl] doubt regd library calls No library calls are being made in RTLinux, per se. In fact, such a thing would be quite difficult to do from kernel space. You'd basically have to mimic the entire system call interface in kernel space, and probably do other magic just to be able to statically link a library in to a kernel extension. Yikes! No, what actually happens is that RTLinux has a clean, and quite standard, pthread interface to make the difficult task of writing multi-threaded kernel modules somewhat easier and more manageable for people not used to kernel programming. The result is that you get those pthread_* functions in kernel space, but that is just an interface. What happens under the hood has nothing to do with user-space libraries. -Calin On Thu, 13 Sep 2001, A V wrote: hi everybody, I have some doubt about library calls. I read in OS concepts that kernel space program should not make references to user space processes. Am i right ? In RTLniux, every realtime module runs in Kernel space. And we are making library calls to create threads which runs in User space. but according to OS concepts process running in Kernel space should not refer User space.. Please clarify my doubt.. Regards Venkat __ Terrorist Attacks on U.S. - How can you help? Donate cash, emergency relief information http://dailynews.yahoo.com/fc/US/Emergency_Informa tion/ -- [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/ -- [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/ -- [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/
Re: [rtl] doubt regd library calls
If the function is listed in the documentation as having an RT-Linux version then you are not calling the real user-space routine but an RT-Linux one that has (approximately) the same description and calling sequence. You should never call user-space functions (unless you really know what you are doing) from any kernel task or module and you should never call any normal linux kernel function from within a real-time function, module, device driver, or interrupt handler. Norm - Original Message - From: A V [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, September 13, 2001 11:36 AM Subject: [rtl] doubt regd library calls hi everybody, I have some doubt about library calls. I read in OS concepts that kernel space program should not make references to user space processes. Am i right ? In RTLniux, every realtime module runs in Kernel space. And we are making library calls to create threads which runs in User space. but according to OS concepts process running in Kernel space should not refer User space.. Please clarify my doubt.. Regards Venkat __ Terrorist Attacks on U.S. - How can you help? Donate cash, emergency relief information http://dailynews.yahoo.com/fc/US/Emergency_Informa tion/ -- [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/ -- [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/
Re: [rtl] accessing external devices from rtl
Peter. I think you'll still need to use ioremap() to get a virtual address with which to access the memory -- and don't forget to iounmap() afterwards. If you don't have a copy of Rubini's book, Linux Device Drivers, the QD account is VirtualAddress = ioremap( PhysicalAddress , size ); iounmap( VirtualAddress ); You can't access any ISA-bus memory (or PCI either) with the physical address, you must use a virtual address. Once you re-map the address, you can access it just like any other kernel-addressable memory. If you have any more questions, contact me off-list. Norm - Original Message - From: Peter Grössinger [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, August 30, 2001 12:03 PM Subject: [rtl] accessing external devices from rtl hello, i would like to access an external isa device from an rt linux process. I am running rtl 2.3 - 2.2.14 on a mops pc104. the device is located at address 0xfc which is in the memory hole set by the bios. would anybody know how i can access the memory of the device best ? thank you very much in advance ! regards, peter _ Peter Groessinger Software Development TTTech Computertechnik AG Schoenbrunner Strasse 7, A-1040 Vienna, Austria http://www.tttech.com Phone: +43(1)585 34 34-42, Fax: +43(1)585 34 34-90 mailto: [EMAIL PROTECTED] _ -- [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/ -- [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/
Re: [rtl] port Linux device driver to RTLinux-any book?
Exactly what do you mean by port it to rtl? (notice that CAPS are unnecessary). If all you want to do is run this driver as a linux driver on an rtl-enhanced computer, then there's nothing to do. If you want it to be a real-time driver, then you'll probably have a lot of work. Norm - Original Message - From: Kouklaras Giorgos To: [EMAIL PROTECTED] Sent: Thursday, August 30, 2001 3:59 AM Subject: [rtl] port Linux device driver to RTLinux-any book? I have developed a network device driver for Linux. IS THERE ANY BOOK OR WEB SITE TO GUIDE ME THROUGH THE NESSECERY MODIFICATIONS IN ORDER TO PORT IT TO RTL? Do I have to simply change the names of the functions,structs e.t.c. to the corresponding ones on rtl side? This device driver must be located on RTLinux side of my RT-OS configuration. I hope my question is not too trivial to bother. -- [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/
Re: [rtl] Need Board Recommendations - ADC, Serial I/O
I'll second the problem of using an A-to-D card with a mux. I've had several projects where I've had to use a PC-Labs PCL-818 High Speed Data Acquisition Card. I found that to get complete settling of the mux takes over a millisecond -- an eternity compared to the 3-5 microseconds conversion time. Norm - Original Message - From: Jonas Persson [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Monday, August 27, 2001 4:00 AM Subject: Re: [rtl] Need Board Recommendations - ADC, Serial I/O Hi, I have experiences regarding the ComputerBoards PCI-DAS 1200/jr board. Unfortunately, I cannot recommend you to use it, since the use of a mux close to the ADC makes it impossible to read accurate data at high speeds. Further, the documentation was not complete, so writing a device driver which utilized the boards burst mode was impossible (or maybe just too hard!). However did have use of comedi, since we could rip out the relevant code for the acutal board an utilize it directly. This is a very good idea since the comedi framework is hardly compatible with itself! :-) Anyone: let me know if you find a useful, easy to program data acquisition board that can be used in RTlinux. There are many applications for such a board... Regards, Jonas Persson Stephen D. Cohen wrote: Gang, I am working on a new application that requires joystick input from a high quality joystick. This is done with an ADC card and some digital I/O lines (for buttons). I am looking for a card that is easy to use that has at least two channels of analog input of at least 12 bits each and at least eight lines of digital I/O. Can anyone recommend any particular card for this application? Any options that include source for an RTLinux driver are greatly preferred. :-) I am also looking for an eight-port serial board. Can anyone recommend a board for use with either straight Linux or rt_comm or, preferably, both? I would really like to find a board that uses the same IRQ / port sharing / mapping scheme as the base four ports of the PC architecture. That way it would be pretty simple to extend the rt_comm stuff to handle the additional ports. If anyone has done anything like this or can recommend a card, I would love to hear about it. I can obviously find many references to boards from the likes of Data Translations, Computerboards, etc. What I am looking for is testimonials to ease of use or cards for which drivers are available. I know about Comedi, but I am not really interested in having additional framework - I just want something small and tight to read the channels and buttons when I want the input. Both of these cards need to be PCI cards for the standard IBM-PC architecture. Regards, Steve Cohen -- Stephen D. Cohen Xybion Sensor Positioning Systems 11528 53rd Street North Clearwater, FL 33760 Voice: (727) 299-0150 Fax: (727) 299-0804 [EMAIL PROTECTED] www.xybion.com -- [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/ -- __ Jonas PerssonE-mail: [EMAIL PROTECTED] Project Manager, M.Sc C.ScE http://www.comsys.se/ Energyx AB (publ)Phone: +46-(0)46-286 3051 Delta 5, Scheelevägen 19FFax: +46-(0)46-286 3505 S-223 70 Lund, Sweden -- [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/ -- [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/
Re: [rtl] user space program hangs
I'll second the notion that there are no real problems with fwvm(2) which I used with RTL v1 for over a year with no noticeable degradation. If -- and this is a big IF that I'm going to have to investigate -- the only problem with the Gnome desktop is with the automount features, they can be turned off fairly easily with the configuration manager. Norm - Original Message - From: Ron [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Wednesday, August 22, 2001 3:16 AM Subject: Re: [rtl] user space program hangs The video chip is... (long thread) While I like both the Gnome and KDE desktop projects, they contain a lot of cruff that can cause problems, and not just strange RTL interactions. If you really need X I recommend an older window manager like twm or what I use, an old version of fvwm (old slackware version with the nice motif look to the windows). If you just need to show some graphics, then SVGALIB is the way to go. If you ever used the old msdos libraries from GENUS (gxGraphics) you might want to take a look at Greg Haerr's Microwindows. It also has a MS Windows feel upper layer that may make former windows people feel at home. -- [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/ -- [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/
Re: [rtl] Examples and such
Okay, it's my turn to dine on crow. Once I got back to my saved mailing list archive and re-read the documentation, I discovered that I was trying to compile the current version of rtlinux code with (the equivalent of) a makefile designed for v1-code. There are apparently a bunch of compiler switches and command-line #defines that are setup in rtl.mk.mk that are absolutely necessary for the current .h-files that weren't needed in v1. After including that file into my makefile AND using the CC defined in it instead of my own version of CC, I found that everything compiled with no problem at all. Which brings me to two points:: 1. My original, plaintive cry for help went out over two weeks ago. How come no-one answered it until now? But much more importantly 2. There are some things about what rtl.mk does that see to me to be less than ideal: A. It seems to me that turning off some warnings, e.g. -Wstrict-prototypes -fno-strict-aliasing to avoid a flood of diagnostics isn't the right way to get a clean compile because it mignt suppress diagnostics about my own code that I might have needed to see B. Implementing #defines fromt the compiler command-line -D__KERNEL__ -D__SMP__ -DCPU=586-D__RTL__ -DMODULE -D_LOOSE_KERNEL_NAMES most of which (I believe) only affect the rtl-header files and should have been in rtl.h rather than cluttering up the command-line. Further, some of these ( like __SMP__) might have no applicability to my system and at least one ( CPU=586) could be wrong for some implementations. All of this makes we wonder exactly what woes we're trying to cover up with these things. Norm - Original Message - From: Michael Barabanov [EMAIL PROTECTED] To: Norm Dresner [EMAIL PROTECTED] Cc: rtlinux, [EMAIL PROTECTED] Sent: Sunday, August 19, 2001 7:18 AM Subject: Re: [rtl] Examples and such So examples/v1api/frank doesn't compile? Did you enable CONFIG_RTL_USE_V1_API and recompile RTL? Norm Dresner ([EMAIL PROTECTED]) wrote: Okay, I confesss, I've seen these questions a hundred times. But I'm not at work and my main e-mail computer at home is down and I don't have the archive on the backup e-mail server. So I appologize for asking it yet once again. I was first trying to get an old v1-api program to compile and had no luck, just a flood of diagnostics about things being multiply-defined and/or unknown. So I took a step back and decided to try to emulate one of the examples. After that didn't improve the situation, I tried to compile just one of the examples. Below is the output and source from frank_module. The errors I get there are similar to (some of) what I see in my own program so I feel that if I can get past frank, I'll be a long way toward getting my program compiled too. All help is appreciated. BTW, the system is RH 6.2 w/2.2.18 and RTL 3.0 Norm Dresner Fellow Systems Engineer ARE/SGI Laboratory Administrator Radar Systems Engineering Department MS 520/1154 Voice: (410) 993 - 2096 Mornings in Flight Test; all-day voice-mail (410) 765 - 9235/82 Occasionally in the SGI Lab; all-day voice-mail (410) 969 - 8068 Afternoons at home; answering machine FAX: (410) 993 - 8084 On-site in Flight Test (410) 969 - 8068 Afternoons at home; call first to arrange E-Mail: Mornings: [EMAIL PROTECTED] Afternoons: [EMAIL PROTECTED] here are the errors # cc -I/usr/src/rtlinux/linux/include -I/usr/src/rtlinux-3.0/include -I/usr/sr c/rtlinux-3.0/include/compat -D__KERNEL__ -Wall -Wstrict-prototypes -fno-st rict-aliasing -D__SMP__ -pipe -fno-strength-reduce -m486 -malign-loops=2 -ma lign-jumps=2 -malign-functions=2 -DCPU=586 -g -D__RTL__ -DMODULE -D_LOOSE_KE RNEL_NAMES -O2 -I/usr/src/rtlinux/linux/include -I/usr/src/rtlinux-3.0/inclu de -I/usr/src/rtlinux-3.0/include/compat -I/usr/src/rtlinux-3.0/include/posi x -c frank_module.c -o frank_module.o In file included from frank_module.c:5: /usr/src/rtlinux-3.0/include/rtl_sched.h:89: `RTL_PTHREAD_KEYS_MAX' undeclared here (not in a function) /usr/src/rtlinux-3.0/include/rtl_sched.h: In function `pthread_getspecific': /usr/src/rtlinux-3.0/include/rtl_sched.h:216: warning: control reaches end of non-void function /usr/src/rtlinux-3.0/include/rtl_compat.h: At top level: In file included from /usr/src/rtlinux-3.0/include/rtl_sched.h:380, from frank_module.c:5: /usr/src/rtlinux-3.0/include/rtl_compat.h:41: parse error before `RTIME' /usr/src/rtlinux-3.0/include/rtl_compat.h:42: warning: function declaration isn't a prototype /usr/src/rtlinux-3.0/include/rtl_compat.h: In function `rt_task_make_periodic': /usr/src/rtlinux-3.0/include/rtl_compat.h:44: `start_time' undeclared (first use in this function) /usr/src/rtlinux-3.0/include/rtl_compat.h:44: (Each undeclared
Re: [rtl] Mailing list missing some messages
On Friday 17 August 2001 01:31, Calin Culianu wrote: Hey, what are people doing running MS software anyway? :) Dunno. Maybe they have better nerves than we have? (Not that that would make it possible to do anything *really* interesting...) ;-))) It's not totally my choice at work where I use the Windoze machine for word processing and internet access (because that's the way the company set it up). All serious computation is on either Linux or IRIX (SGI) computers. Norm -- [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/
Re: [rtl] which timer does RTLinux use?
For the x86 architecture, AIUI, the frequencies have to be expressed relative to the motherboard oscillator (1.19...MHz) so I'd guess that sets the resolution. Norm - Original Message - From: fred august [EMAIL PROTECTED] To: rtl [EMAIL PROTECTED] Sent: Thursday, August 16, 2001 1:16 PM Subject: [rtl] which timer does RTLinux use? Hi, I was wondering if anyone could tell me which timer is used by RTLinux to schedule periodic threads, what the maximum frequency is and how good the resolution is. I've tried to push threads to 10KHz and checked a digital output with an oscilloscope and it was perfect. thanks F __ Do You Yahoo!? Il tuo indirizzo gratis e per sempre @yahoo.it su http://mail.yahoo.it -- [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/ -- [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/
Re: [rtl] kernel compile problem
What version of Linux (and gcc) are you using? Norm - Original Message - From: Dan Peters [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, August 03, 2001 12:36 PM Subject: [rtl] kernel compile problem Can somebody tell me why I always get the following error when trying to compile a new kernel. I have tried 2.2.16, 17, with always the same results: make[2]: Entering directory `/home/dpp/linux/arch/i386/lib' cc -D__KERNEL__ -I/home/dpp/linux/include -D__ASSEMBLY__ -D__SMP__ -traditional -c checksum.S -o checksum.o checksum.S:231: badly punctuated parameter list in #define checksum.S:237: badly punctuated parameter list in #define make[2]: *** [checksum.o] Error 1 make[2]: Leaving directory `/home/dpp/linux/arch/i386/lib' make[1]: *** [first_rule] Error 2 make[1]: Leaving directory `/home/dpp/linux/arch/i386/lib' make: *** [_dir_arch/i386/lib] Error 2 Thanks, Dan - End of forwarded message from [EMAIL PROTECTED] - -- [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/ - End of forwarded message from [EMAIL PROTECTED] - -- [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/
Re: [rtl] using the sin function in rtlinux
AIUI, the math coprocessor on an x86 CPU can be used in an RTL-module by declaring that it uses FP math. I don't believe that there are these kinds of restrictions in other architectures. Norm - Original Message - From: Theo ten Brummelaar [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, August 02, 2001 11:59 AM Subject: Re: [rtl] using the sin function in rtlinux Wayne Dunkel wrote: I have included math.h in my source file, but gcc says that the reference to sin is undefined. what should I do? Read a book on programing for the kernel. Functions like sin are not available in kernel space. I would suggest using a lookup table of some sort. Theo -- Dr. Theo ten Brummelaar The CHARA Array-Georgia State University-Mount Wilson Observatory http://www.chara.gsu.edu/~theo Ph: 626-796-5405 Fax: 626-796-6717 - End of forwarded message from [EMAIL PROTECTED] - -- [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/ - End of forwarded message from [EMAIL PROTECTED] - -- [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/
[rtl] Examples and such
Okay, I confesss, I've seen these questions a hundred times. But I'm not at work and my main e-mail computer at home is down and I don't have the archive on the backup e-mail server. So I appologize for asking it yet once again. I was first trying to get an old v1-api program to compile and had no luck, just a flood of diagnostics about things being multiply-defined and/or unknown. So I took a step back and decided to try to emulate one of the examples. After that didn't improve the situation, I tried to compile just one of the examples. Below is the output and source from frank_module. The errors I get there are similar to (some of) what I see in my own program so I feel that if I can get past frank, I'll be a long way toward getting my program compiled too. All help is appreciated. BTW, the system is RH 6.2 w/2.2.18 and RTL 3.0 Norm Dresner Fellow Systems Engineer ARE/SGI Laboratory Administrator Radar Systems Engineering Department MS 520/1154 Voice: (410) 993 - 2096 Mornings in Flight Test; all-day voice-mail (410) 765 - 9235/82 Occasionally in the SGI Lab; all-day voice-mail (410) 969 - 8068 Afternoons at home; answering machine FAX: (410) 993 - 8084 On-site in Flight Test (410) 969 - 8068 Afternoons at home; call first to arrange E-Mail: Mornings: [EMAIL PROTECTED] Afternoons: [EMAIL PROTECTED] here are the errors # cc -I/usr/src/rtlinux/linux/include -I/usr/src/rtlinux-3.0/include -I/usr/sr c/rtlinux-3.0/include/compat -D__KERNEL__ -Wall -Wstrict-prototypes -fno-st rict-aliasing -D__SMP__ -pipe -fno-strength-reduce -m486 -malign-loops=2 -ma lign-jumps=2 -malign-functions=2 -DCPU=586 -g -D__RTL__ -DMODULE -D_LOOSE_KE RNEL_NAMES -O2 -I/usr/src/rtlinux/linux/include -I/usr/src/rtlinux-3.0/inclu de -I/usr/src/rtlinux-3.0/include/compat -I/usr/src/rtlinux-3.0/include/posi x -c frank_module.c -o frank_module.o In file included from frank_module.c:5: /usr/src/rtlinux-3.0/include/rtl_sched.h:89: `RTL_PTHREAD_KEYS_MAX' undeclared here (not in a function) /usr/src/rtlinux-3.0/include/rtl_sched.h: In function `pthread_getspecific': /usr/src/rtlinux-3.0/include/rtl_sched.h:216: warning: control reaches end of non-void function /usr/src/rtlinux-3.0/include/rtl_compat.h: At top level: In file included from /usr/src/rtlinux-3.0/include/rtl_sched.h:380, from frank_module.c:5: /usr/src/rtlinux-3.0/include/rtl_compat.h:41: parse error before `RTIME' /usr/src/rtlinux-3.0/include/rtl_compat.h:42: warning: function declaration isn't a prototype /usr/src/rtlinux-3.0/include/rtl_compat.h: In function `rt_task_make_periodic': /usr/src/rtlinux-3.0/include/rtl_compat.h:44: `start_time' undeclared (first use in this function) /usr/src/rtlinux-3.0/include/rtl_compat.h:44: (Each undeclared identifier is reported only once /usr/src/rtlinux-3.0/include/rtl_compat.h:44: for each function it appears in.) /usr/src/rtlinux-3.0/include/rtl_compat.h:44: `period' undeclared (first use in this function) /usr/src/rtlinux-3.0/include/rtl_compat.h:44: warning: passing arg 1 of `pthread_make_periodic_np' from incompatible pointer type make: *** [frank_module.o] Error 1 ### here's the source code # #include linux/errno.h #include rtl.h #include time.h #include rtl_sched.h #include rtl_fifo.h #include control.h pthread_t tasks[2]; static char *data[] = {Frank , Zappa }; #define TASK_CONTROL_FIFO_OFFSET 4 void *thread_code(void *t) { int fifo = (int) t; int taskno = fifo - 1; struct my_msg_struct msg; while (1) { int ret; int err; ret = pthread_wait_np(); if ((err = rtf_get (taskno + TASK_CONTROL_FIFO_OFFSET, msg, sizeof(msg))) == sizeof(msg)) { rtl_printf(Task %d: executing the \%d\ command to task %d; period %d\n, fifo - 1, msg.command, msg.task, msg.period); switch (msg.command) { case START_TASK: pthread_make_periodic_np(pthread_self(), gethrtime(), msg.period * 1000); break; case STOP_TASK: pthread_suspend_np(pthread_self()); break; default: rtl_printf(RTLinux task: bad command\n); return 0; } } rtf_put(fifo, data[fifo - 1], 6); } return 0; } int my_handler(unsigned int fifo) { struct my_msg_struct msg; int err; while ((err = rtf_get(COMMAND_FIFO, msg, sizeof(msg))) == sizeof(msg)) { rtf_put (msg.task + TASK_CONTROL_FIFO_OFFSET, msg, sizeof(msg)); rtl_printf(FIFO handler: sending the \%d\ command to task %d; period %d\n, msg.command, msg.task, msg.period); pthread_wakeup_np (tasks [msg.task]); } if (err != 0) { return -EINVAL; } return 0; } /* #define DEBUG */ int init_module(void) { int c[5]; pthread_attr_t attr; struct sched_param sched_param; int ret; rtf_destroy(1); rtf_destroy(2); rtf_destroy(3); rtf_destroy(4); rtf_destroy(5); c[0] = rtf_create(1, 4000); c[1] = rtf_create(2, 4000); c[2] = rtf_create(3, 200); /* input control channel */ c[3] = rtf_create(4, 100); /* input control channel */ c[4] = rtf_create(5
Re: [rtl] problems with mmap and read/write on /proc
Dean. While I understand that you're trying to port software with as few changes as possible, I don't see why using RTLinux shared memory (not Linux shared memory) wouldn't give you the functionality you need. Norm - Original Message - From: Dean W. Anneser [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Friday, July 27, 2001 4:18 PM Subject: [rtl] problems with mmap and read/write on /proc Though somewhat off-topic, I am trying to port our simulation/control/data_acq system to RTLinux. Key to the success of this endeavor, is the capability of having one process able to read/write into the process space of another. In the example provided I can both mmap() and read()/write() /proc on our current platform. On Linux 2.4.1 (RH7.1) however, neither worked. A couple of years ago, when I first tried this with RH5.2 (I don't remember the Linux version) I remember seeing a similar (if not identical) disclaimer to what's in the current proc(5) manpage. The last sentence gave me hope the capability I was seeking was to be implemented imminently. memThis is not the same as the mem (1:1) device, despite the fact that it has the same device numbers. The /dev/mem device is the physical memory before any address translation is done, but the mem file here is the memory of the process that accesses it. This cannot be mmap(2)'ed currently, and will not be until a general mmap(2) is added to the kernel. (This might have happened by the time you read this.) Either Linux can in some form support this and I'm doing something wrong (and the documentation is out-of-date); or it is currently not yet possible through /proc. Thank you for taking the time to read this note. Any help or pointers would be very much appreciated (I hope someone else has crossed this bridge before me). Dean W. Anneser Software Engineering Fellow Real-Time Test Systems Pratt Whitney Aircraft 400 Main St., m.s. 161-05 East Hartford, CT 06108 email: [EMAIL PROTECTED] phone: 860.565.9372fax: 860.557.3482 One test result is worth one thousand expert opinions - Wernher von Braun example code: Use mmap.c to view the parameter iii in program tst.c, while tst.c is running in background: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= mmap.c =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #include stdio.h #include fcntl.h #include unistd.h #include sys/types.h #include sys/mman.h #include sys/types.h #include sys/stat.h #include sys/utsname.h #define MMAP 1 #define RW 2 void main(int argc, char *argv[]) { int i, j, k; int iii = 0; int *piii; char tmp[256]; int fd; caddr_t p; struct utsname sysname; struct stat statinfo; int bytes_read = 0; int page_base; int page_offset; int page_size; int pid = 0; int addr = 0; int use = MMAP; int ret = 0; int argi = 0; while (++argi argc) { if (strcmp(argv[argi], -pid) == 0) sscanf(argv[++argi], %d, pid); else if (strcmp(argv[argi], -addr) == 0) sscanf(argv[++argi], %x, addr); else if (strcmp(argv[argi], -use) == 0) { if (strcmp(argv[++argi], mmap) == 0) use = MMAP; else use = RW; } else { printf(unrecognized option: %s\n, argv[argi]); printf(usage: mmap -pid pid -addr addr\n); exit(1); } } uname(sysname); if ((pid == 0) || (addr == 0)) { printf(usage: mmap -pid pid -addr addr\n); exit(1); } if (strcmp(sysname.sysname, Linux) == 0) sprintf(tmp, /proc/%d/mem, pid); /* Linux */ else sprintf(tmp, /proc/%d/as, pid); /* PowerMAX_OS or SunOS */ if ((fd = open(tmp, O_RDWR)) == -1) { printf(open failure on %s\n, tmp); exit(1); } if (fstat(fd, statinfo) == -1) { printf(fstat failed on %s\n, tmp); exit(1); } if (use == RW) { while (bytes_read != -1) { if ((ret = lseek(fd, addr, SEEK_SET)) == -1) { printf(lseek() error = %d\n, ret); exit(1); } if ((bytes_read = read(fd, iii, sizeof(int))) = 0) { printf(read() error = %d\n, bytes_read); exit(1); } printf(bytes_read = %d, iii = %d\r, bytes_read, iii); fflush(stdout); sleep(1); } } else { page_size = getpagesize(); page_base = (addr / page_size) * page_size; page_offset = addr % page_size; if ((p = (caddr_t)mmap(0, page_size, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, page_base)) == (caddr_t)-1) { printf(mmap failure on %s\n, tmp); printf( statinfo.st_size == %d\n, statinfo.st_size); printf( page_size == %#x\n, page_size); printf( page_base == %#x\n,
Re: [rtl] Can't Unload Modules - in use
Janet, Here's the output from the lsmod command on my system here: Module Size Used by lvi 130360 rtl_sched 40936 0 (lvi) rtl_time10164 0 [rtl_sched] rtl25984 0 [rtl_sched rtl_time] The only order that will work is rmmodlvi# depends on nothing rmmodrtl_time# depends on nothing rmmodrtl_sched #was used by rtl_time rmmodrtl#finally unused BUT... The counts under used-column show the usage count as reflected by MOD_INC_USE_COUNT and MOD_DEC_USE_COUNT (if you use them). If these aren't zero, you can't remove the module. If you don't use them, IIRC, they should always be zero. In all of my drivers that use the MOD_xxx_USE_COUNT mechanism for counting usage, I provide an ioctl-mechanism for setting the USE_COUNT to zero regardless of what's actually going on. This is -- of course -- a last-resort trick, but it does allow me to remove modules which didn't get to DEC_ because a user-program terminated with extreme prejudice and never closed the open device(s). That's the extent of what I know about it. You might find more in Rubini and you'll find a lot in the kernel source code (a court of last resort IMHO); Norman Dresner Fellow Systems Engineer (SGI) Advanced Signal Processing Laboratory Administrator Radar Systems Engineering Department Electronic Systems and Sensors Segment Northrop Grumman Corporation Baltimore-Washington International Airport 7323 Aviation Boulevard Baltimore Maryland 21240 Voice: (410) 993 - 2096 Mornings; all-day voice-mail (410) 969 - 8068 Afternoons with answering machine FAX: (410) 993 - 8084 On-site (410) 969 - 8068 Afternoons; call first to arrange E-Mail: Mornings: mailto:[EMAIL PROTECTED] Afternoons: mailto:[EMAIL PROTECTED] - Original Message - From: Estabridis, Janet P [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Thursday, May 31, 2001 10:28 AM Subject: [rtl] Can't Unload Modules - in use Hi, Sorry I am not at my machine to get the exact message and I haven't gotten to check the archives, but I figure someone can steer me in the correct direction. I am using RTLV2.3 with kernel 2.2.14 I have four modules, three of them just contain routines that the main modules calls. bit.o vig.o tspi.o rt_main.o When I try and remove the modules with rmmod I get that it can't be removed because the modules are in use. I use lsmod and try and remove them in the correct order, but still it won't let me remove any of them. I have to re-boot. So, the big question is - What am I doing wrong ? Do my modules that only have routines need to have init_module and cleanup_module ? Do I need to use the linker to create one big rt_main.o ? I tried that but got some errors. Thanks in advance = Janet Estabridis -- [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/ -- [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/
Re: rtl-digest V1 RE: [rtl] Problems Dual Booting (RT)Linux
I've tried to dual boot RTL 3.0 over Linux 2.2.18 and RTL 0.9 over 2.0.36. While I can boot both systems, I can't access (that is load) the modules in the "2nd" system. [In this context, the first system is the one whose LILO I've last run and the second system is the other.] I'm almost positive that reconfiguring both systems to compile into the kernel the various "common stuff" that I now have modular would probably get around this problem, but that's not the way I wanted to use it. When I boot the 2.2.18 I can mount the 2.0.36 but not conversely because 2.2.18 uses some fancy features. Norman Dresner Fellow Systems Engineer (SGI) Advanced Signal Processing Laboratory Administrator Radar Systems Engineering Department Electronic Systems and Sensors Segment Northrop Grumman Corporation MS 520 Box 746 Baltimore MD 21203 Voice: (410) 993 - 2096 Mornings; all-day voice-mail (410) 969 - 8068 Afternoons with answering machine FAX: (410) 993 - 8084 On-site (410) 969 - 8068 Afternoons; call first to arrange E-Mail: Mornings: mailto:[EMAIL PROTECTED] Afternoons: mailto:[EMAIL PROTECTED] - Original Message - From: David Olofson [EMAIL PROTECTED] To: [EMAIL PROTECTED] Sent: Tuesday, March 27, 2001 4:56 PM Subject: Re: rtl-digest V1 RE: [rtl] Problems Dual Booting (RT)Linux On Tuesday 27 March 2001 22:13, KULECZ, WALTER (JSC-SD) wrote: It's beginning to look like setting both systems up as /dev/hdb and physically swapping HD's is going to be the only way to make this work. Since I still have to support programs that use the old system, I'm open to all suggestions. I've seen a multiboot device for ~$80 at Microcenter. Basically its a switch box that fits in a drive bay and lets you choose one of three IDE drives to boot from. The one you boot from would be hda. I assume the other two are not accessible. But I've never tried it. I've probably missed something, but what's wrong with telling LILO to use different root systems for the boot alternatives, rather than just different kernels? file://David - M A I A -. | Multimedia Application Integration Architecture | | A Free/Open Source Plugin API for Professional Multimedia | `-- http://www.linuxaudiodev.com/maia -' .- David Olofson ---. | Audio Hacker - Open Source Advocate - Singer - Songwriter | `-- [EMAIL PROTECTED] -' -- [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/ -- [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/
Re: [rtl] Real-Time development environment
1. The more things can be standardized, the less they have to be reinvented with each new implementation. I approve of /usr/lib/xxx where xxx is something mnemonic. I've already done that for each major project I have on my development machines. 2. I have my own "standard" header files. For user programs it's called libc.h and for modules it's device-libc.h. I've used these names since 1983 and I don't have to think about what I want to include when I start a new project. It's one of the best "inventions" I've ever made. 3. It's too easy to get a dynamic major number and just as easy to look in /proc/devices (even with a script file) that it doesn't justify the potential confusion (or worse) when collisions occur. Norm At 11:25 AM 7/26/2000 -0700, David Schleef wrote: I'd like to get some comments on some of the following directions: 1. Creation of /usr/lib/realtime/include and population with header files. Currently, RTAI/RTLinux neutral projects (like RTnet and Comedi) don't have an adequate place to install header files for compilation with kernel modules. /usr/include is not appropriate, because it conflicts with existing files. (For example, RTnet can't use sockets.h, etc. because it aleady exists.) Comedi (with comedi.h) can use #ifdef __KERNEL__, but I don't feel that is a full solution. Also, I'd like to see RTAI and RTLinux header files installed into /usr/lib/realtime/include/rtai and .../rtlinux, assuming that the respective maintainers are interested in the required amount of source-compatibility. (Don't need to be perfect here-- we're all still learning.) Anything that has a user-space interface, such as fifos, will still want to install a /usr/include header file. (People familiar with cross compiling will realise that /usr/lib/realtime is probably the appropriate directory for this.) 2. Development of some standard header files, such as stdlib.h, and a few of the libc functions that people have asked about on the mailing list. (I think this just needs someone to create the project.) 3. Allocation of a real-time misc device major number. It appears that an increasing number of projects need access to a ioctl()-like interface, like Tomasz's shared memory and RTnet. Currently, both of these use unallocated/experimental Misc-device numbers, which eventually will lead to conflicts. I'd like to get these numbers permanently allocated, and I think a new major specifically for this purpose is a good idea, since it allows greater flexibility than using major 10, including autoloading of appropriate modules. Anyway, i don't have too strong of an opinion on any of this, just that it seems like a good way to solve some of the problems I've been having, and generally making things neater and cleaner. let me know if you have better ways to solve similar problems. dave... -- [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/ -- [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/