Hello all,
First all let me say thanks for all the help to this point. This group
has always responded quickly to my questions. You are all doinga great
job getting the Xenomai system out there and building a comminity
around it.
I have been writing an RTDM driver and came across two issues. I am
using Xenomai 2.0 with a 2.6.14.3 Kernel. I have attached a driver and
test application to demonstrate the issues. The test driver creates an
RT_QUEUE with a simple ioctl() send/recv interface. (This driver is for
demonstration only, it does nothing useful) The test application is
used to run simple open/close/send/recv operations on the device. The
driver is created for exclusive access.
The driver and test application can be built with the given make files.
Once built you can run the test application with no arguments to get
the program usage.
Issue 1: It appears there is a null reference bug in the RTDM code.
Load the driver module and then run test 2 of the test application.
When the second device open is executed you get a kernel oops instead
of a device busy error status. (Please ignore this question if this is
fixed in the latest version of 2.0.x. I am in the process of building a
new test box with the latest version.)
Issue 2: I am trying to figure out how signals are received and
processed in realtime tasks. Here is the scenario. Run test 4. The test
application creates a realtime task that waits indefinitely on the
RT_QUEUE. The application will wait for a signal from the user
(SIGINT). When the signal is sent I can see the kernel log indicate
that the driver was interrupted on the queue receive. I would expect
the realtime task to get an EINTR back from the ioctl(), but the task
never gets control back after the signal. What am I missing here?
Any advice or direction is appreciated.
Thanks in advance,
Sean