Re: [rtl] pci device driver

2002-02-10 Thread Norm Dresner

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

2002-02-07 Thread Norm Dresner

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

2002-01-28 Thread Norm Dresner

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

2002-01-28 Thread Norm Dresner

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

2002-01-23 Thread Norm Dresner

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

2002-01-16 Thread Norm Dresner

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?

2001-12-21 Thread Norm Dresner

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 ?

2001-12-13 Thread Norm Dresner

- 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.

2001-12-07 Thread Norm Dresner

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?

2001-12-07 Thread Norm Dresner

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

2001-11-25 Thread Norm Dresner

- 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

2001-11-24 Thread Norm Dresner

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

2001-11-24 Thread Norm Dresner

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

2001-11-15 Thread Norm Dresner

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

2001-11-14 Thread Norm Dresner

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?

2001-11-14 Thread Norm Dresner

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

2001-11-13 Thread Norm Dresner

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

2001-11-12 Thread Norm Dresner

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

2001-10-30 Thread Norm Dresner

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

2001-10-29 Thread Norm Dresner

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

2001-10-25 Thread Norm Dresner

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

2001-10-25 Thread Norm Dresner

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

2001-10-22 Thread Norm Dresner

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

2001-10-17 Thread Norm Dresner

- 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

2001-10-17 Thread Norm Dresner

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?

2001-10-15 Thread Norm Dresner

   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?

2001-10-12 Thread Norm Dresner

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?

2001-10-11 Thread Norm Dresner

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?

2001-10-02 Thread Norm Dresner

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

2001-09-30 Thread Norm Dresner

- 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

2001-09-19 Thread Norm Dresner

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

2001-09-17 Thread Norm Dresner

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

2001-08-30 Thread Norm Dresner

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?

2001-08-30 Thread Norm Dresner

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

2001-08-27 Thread Norm Dresner

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

2001-08-22 Thread Norm Dresner

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

2001-08-20 Thread Norm Dresner

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

2001-08-17 Thread Norm Dresner

 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?

2001-08-16 Thread Norm Dresner

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

2001-08-04 Thread Norm Dresner

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

2001-08-03 Thread Norm Dresner

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

2001-08-01 Thread Norm Dresner

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

2001-07-28 Thread Norm Dresner

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

2001-06-01 Thread Norm Dresner

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

2001-03-27 Thread Norm Dresner

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

2000-07-26 Thread Norm Dresner

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/