The Linux kernel in which the Serial Driver is installed is 2.2.18
In a C program (see attachment) a serial device (ie. /dev/ttyS0)
is opened and then fcntl is used to do the following commands:
F_SETOWN (arg pid), F_SETFL (arg O_ASYNC) and F_SETSIG (arg SIGIO).
The program then sets up a sigaction structure to call a sigaction handler
routine whenever a SIGIO is detected. The application we are writing is
time critical so that accurate time-stamps for data received can be
generated.
This program works as expected with the serial driver that linux provides.
I need to use a Serial Driver that handles multiple serial ports on multiple
expansion cards that support shared IRQs. Your Serial Driver was installed
and tested. It has been confirmed that data is being received on these
serial ports but apparently the Serial Driver does not support sending a
SIGIO when data is detected on a serial port.
Is this a known deficiency or is it a bug?
I have no experience with writing device drivers so I am hoping that
someone will take a look into this and let me know what the status
is as soon as possible (deadline approches).
Thanks in advance for any response.
C program that requires SIGIO to be sent by Serial Driver
Logged In: YES
user_id=141198
I could not reproduce it on my system using linux 2.2.18
with serial 5.05 (slightly modified) compiled in. I
connected a null-modem between /dev/ttyS0 and /dev/ttyS1,
ran your sigact program on /dev/ttyS0, did a 'stty
/dev/ttyS1 19200' and 'echo hello > /dev/ttyS1'. Other stty
settings were the default. Your sigact program reports
receiving signal 29 each time I do the above echo, but the
number of characters read each time cycles between 6 and 1
characters (which I suppose is due to the line discipline).
BTW, the asynchronous notification is performed by the tty
code, not by the serial driver itself.