[rtl] ANNOUNCMENT 3ed Real Time Linux Workshop
Third Real-Time Linux Workshop 26-29.11.2001 Crowne Plaza in Milan San Donato Milano, Italy As followup to the meetings of developers and users of real-time linux in Vienna and Orlando, the Third Real Time Linux Workshop is held in the framework of the Embedded Linux Expo Conference and the Real-Time Embedded Computing Conference, Summit Milan, organized by ACTIVE Exhibitions Europe. This Summit will offer two days of tutorials, four tracks of conferences over two days, interesting keynotes, exhibitions and more. The contribution of the Real Time Linux Foundation to this outstanding event will be: - technical keynotes, - kick start sessions, - paper presentations, - work in progress reports, - real time linux tutorials, For any further information take a look at the Real-Time Linux Foundation, http://www.realtimelinuxfoundation.org/, by following Contents-Events- Real Time Linux Workshop 2001. For all events of the summit, organisational details and registration, please go to ACTIVE Exhibitions Europe's Summit Milan page, http://www.rtcgroup.com/summitmilan/invitation.html. -- [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] Intel Hardware Performance Counters
Check this out: http://oprofile.sourceforge.net/ This provides for hardware counter manipulation. Karim Chunky Kibbles wrote: On Sat, Oct 20, 2001 at 12:20:17AM -0400, Christopher D. Carothers wrote: Gary -- use the rdtsc instruction which stands for read timestamp counter. This instruction will return the number of cycles the processor has been up since it was last rebooted. It is 64 bits so the processor will turn to slag before it overflows. Below is the inline assembly language that will compile under gcc. __inline__ unsigned long long int rdtsc() { unsigned long long int x; __asm__ volatile (.byte 0x0f, 0x31 : =A (x)); return x; } Note, that to get the seconds you need to divide by the speed of the processor. Inside the kernel you can get the speed directly by using the cpu_khz variable and multiple by 1000.0. Final word, on SMP boxes each processor will have it own counter register and because of clock drift (and slightly offset boot times) these clocks will vary -- however, my experience is that for high-end/high-speed systems this amount is not that noticeable -- but they will differ... Hope that helps, Chris Fabulous. I'm using it to find out exactly how long a given RT task takes by adding these bits to the schedulers. But I also have to ask. There are other counters, there, that I've read about. There are 67 things that they can count, and they can do it at no cost to the system. eg, cache hitsmisses, cycles since counter was started, etc, etc. I'm also interested in these as a more general thing. The number of ticks is all well and good, but I'd also like to know other stuff. Thank-you very much, Gary (-; PS It's getting added later today (= -- [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/ -- === Karim Yaghmour [EMAIL PROTECTED] Embedded and Real-Time Linux Expert === -- [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] Error with sem_getvalue function
This is a bug report for fsmlabs regarding RTLinux3.1 (at least) The semaphore function .. int sem_getvalue(sem_t* sem, int* sval) is supposed to write the semaphore value to the int pointed to by sval, and return an error code. Instead, it doesn't write anything to sval, and returns the semaphore value. I've looked at the code in /schedulers/rtl_sema.c and the function is given by int sem_getvalue(sem_t* sem, int* sval) { return sem-value; } which is incorrect. 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] Problem using multiple serial ports
Hi there! Using dev/ttyS0 in my program works perfect, but I would like to use /dev/ttyS1, /dev/ttyS2 and /dev/ttyS3 as well. To avoid any trouble, I assigned a different interrupt to each of the four serial pots: ttyS0 4 ttyS1 3 ttyS2 5 ttyS3 7 and I used the usual i/o-addresses. All is set using setserial. Then I set uart=none for all four serial ports. Now what is the proper call of rt_com_setup() for these four? I thought the first parameter has to be 0, 1, 2 and 3 according to the digit in ttyS*. Is this correct? The hardware is definitely set up alright, as the board I am using can be jumpered very conveniently to any setting desired. I also tested it in Win98. There COM1 to COM3 worked perfect, just COM4 had a problem, because Win98 refused to use Interrupt 7 for anything but a printer. What do you think the problem might be? How can I use more than one serial port? All I can tell is that rt_com_setup() returns -1. My system: Pentuim 75, 32 MB RAM RTLinux 2.2.18 RT_Com 3.0 Thank you very much in advance for helping! Michael C. Riedl -- [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] kernel-module version mismatch
Hi ! I am new to rt-linux and also new to writing modules. I first have installed mandrake 8.0 (kernel 2.4.3-20mdk) and thereafter i installed kernel 2.4.4 and after that i installed rtlinux v3.1 (kernel 2.4.4-rtl). I can run many of the examples from rt-linux without any problems what so ever. I have written a very little and simple module under mandrake 8.0, which work fine there. I now wanted to try my module under rt-linux (even though i haven't used any of rt-function-calls in rt-linux and the module isn't realtime). I compile my sourcefile (ioex.c) whith gcc -c ioex.c, then i want to load the module with insmod ioex.o and then i get following statement : ioex.o: kernel-module version mismatch ioex.o was compiled for kernel version 2.4.3-20mdk (my mandrake 8.0) while this kernel is version 2.4.4-rtl I think that it must be gcc that is using some files from 2.4.3-20mdk, instead of some from 2.4.4-rtl. Can someone please help me with my problem (how to tell gcc to use the rigth files)? I can load the module with insmod -f ioex.o but i would be glad to load it without forcing. 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/
Re: [rtl] kernel-module version mismatch
Hi ! I am new to rt-linux and also new to writing modules. I first have installed mandrake 8.0 (kernel 2.4.3-20mdk) and thereafter i installed kernel 2.4.4 and after that i installed rtlinux v3.1 (kernel 2.4.4-rtl). I can run many of the examples from rt-linux without any problems what so ever. I have written a very little and simple module under mandrake 8.0, which work fine there. I now wanted to try my module under rt-linux (even though i haven't used any of rt-function-calls in rt-linux and the module isn't realtime). I compile my sourcefile (ioex.c) whith gcc -c ioex.c, then i want to load the module with insmod ioex.o and then i get following statement : ioex.o: kernel-module version mismatch ioex.o was compiled for kernel version 2.4.3-20mdk (my mandrake 8.0) while this kernel is version 2.4.4-rtl I think that it must be gcc that is using some files from 2.4.3-20mdk, instead of some from 2.4.4-rtl. Can someone please help me with my problem (how to tell gcc to use the rigth files)? I can load the module with insmod -f ioex.o but i would be glad to load it without forcing. that happens when you have the link in /usr/include/linux pointing to the wrong kernel version - normaly /usr/include/linux - ../src/linux/include/linux /usr/include/asm - ../src/linux/include/asm so you need to make shure that these links are corect AND that in /usr/src/ linux should be a link to the corect linux tree (make shure its not a directory) linux - linux-2.4.4-rtl (or how ever you named the directory) cd linux and atleast run make menuconfig so that modversion.h is built. then go to the rtlinux-3.X/directory and ln -s /usr/src/linux linux (now rtlinux can find the corect kernel tree) make distclean make config make dep make now your modules should be for your 2.4.4-rtl kernel. hofrat -- [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] modified rt_com
Attached is a modified form of the rt_com stuff that includes a number of changes that we needed but perhaps someone else will find them useful also. It was based on the rt_com that came with rtlinux-3.0 that I downloaded in February so it is possible the latest already includes some/all of these changes or conflicting ones. I would have checked the latest but the number of FTP users is maxed out every time I try to download from the main FTP site and none of the mirrors appear to be up to date. Changes: rt_com_write returns the number of characters written rather than void. The number of characters written could be less than the value the user passed to rt_com_write because the buffer could be full and it now checks for the buffer being full. Changing the maximum number of serial ports connected to should now involve only changing one #define. The default value is 8. The IOPORT and IRQ numbers to use can be set with module parameters. i.e. /sbin/insmod rt_com.o IOPORT=0x3F8,0x2F8 IRQ=4,3 NUM_SERIAL_PORTS=2 The actual number of serial ports doesn't have to equal the compiled in maximum. Multiple serial ports can be placed on the same irq. ( With the Hostess 550 8 port serial card we had no choice but to put them all on the same irq.) To build the driver; untar edit the Makefile so that the first include will find the directory where rtl.mk is located and run make rt_com.o If you have any comments or questions for me please send them offlist to [EMAIL PROTECTED] , since I only follow this list very intermittantly. --Will new_rt_com.tar.gz
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/
[rtl] disk write performance question
Hi all. This is a bit peripheral to rtlinux, but hopefully someone here can help me out. I have written a data acquistion application using an rtlinux module, and, while everything works well when I am not saving data to disk, during disk writes I get pauses in the display. This is, as far as I understand it, a result of disk write buffering, and I'm wondering if there is anything I can do about it. I've tried fflush-ing the file and using setvbuf to set the file to non-buffered mode, but neither of those had any effect on the pauses. During the pauses the cpu usage goes up from about 50% to 100% (most of it dedicated to the system). Is there any way for me to force a larger number of small disk writes so I can minimize the gaps in the display? Thanks, Loren -- [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 with sem_getvalue function
Thanks. On Mon, Oct 22, 2001 at 02:13:13PM +0100, David Hamilton wrote: This is a bug report for fsmlabs regarding RTLinux3.1 (at least) The semaphore function .. int sem_getvalue(sem_t* sem, int* sval) is supposed to write the semaphore value to the int pointed to by sval, and return an error code. Instead, it doesn't write anything to sval, and returns the semaphore value. I've looked at the code in /schedulers/rtl_sema.c and the function is given by int sem_getvalue(sem_t* sem, int* sval) { return sem-value; } which is incorrect. 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/