l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
November 4: Social gathering
Next Installfest:
TBD
Latest News:
Oct. 24: LUGOD election season has begun!
Page last updated:
2003 Sep 14 22:48

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] Driver Question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] Driver Question



I think I may have mis-stated the problem, my apologies. I'll try again...

In this case the app is a real-time simulation and the hardware provides a
user interface for entering data and a set of switch states. Most of the
time the driver will interact with the hardware updating displays, states,
etc. These interrupts never get to the app level, however when the operator
depresses one of any number of push buttons specific data is read into the
driver's kernel space and this data needs to get to the app. So rather than
have the app checking or polling to see if data is available it seems it
would be more efficient to issue some signal to an app function to read the
data from kernel to user space. I've been browsing thru the keyboard drivers
and others to try an find an example, no luck so far. In a nutsell, then

operator pushes a button, hardware generates an interrupt which launches
driver, driver reads data clears interrupt,
next, how to notify app that data is available and should be read

Thinking some sort of app function that sleeps and is alerted by some ioctl
signal or whatever. How does the keyboard work? Would not this be a similar
implementation?

Regards
John W


----- Original Message -----
From: "Mark K. Kim" <markslist@cbreak.org>
To: <vox-tech@lists.lugod.org>
Sent: Sunday, September 14, 2003 9:45 PM
Subject: Re: [vox-tech] Driver Question


> The app is supposed to block ("freeze") if the data hasn't been read by
> the driver.  It stays blocked ("frozen") until the data is available.
>
> The app can choose to not block in such situation, by using the "select"
> or "poll" system call.  If the file descriptor is set to non-blocking
> mode, and if no data is available, then the read() system call returns -1
> and sets "errno" to "EAGAIN".  You probably have to implement these
> features into the driver.
>
> Have fun~!
>
> -Mark
>
>
> On Sun, 14 Sep 2003, John Wojnaroski wrote:
>
> > Hi,
> >
> > Building a driver for a hardware board and things are looking good...
Using
> > the O'Reilly book by Rubini and Corbet as a guide, but have a bit of a
> > question??
> >
> > The driver is interrupt driven when the board posts data to the port and
> > that works fine. Data is retreived and stored in kernel space and the
app
> > can use "result = read(fd, mesg, sizeof data)" to access the file (a
char
> > device). But I can't seem to figure out how to notify the app that the
> > driver has read the data.
> >
> > Rather than polling would just like to read when data has been updated (
> > kind of like a keyboard using a callback function)
> >
> > Any thoughts, hints, references would be appreciated.
> >
> > Thanks
> > John W
> >
> > _______________________________________________
> > vox-tech mailing list
> > vox-tech@lists.lugod.org
> > http://lists.lugod.org/mailman/listinfo/vox-tech
> >
>
> --
> Mark K. Kim
> http://www.cbreak.org/
> PGP key available on the website
> PGP key fingerprint: 7324 BACA 53AD E504 A76E  5167 6822 94F0 F298 5DCE
>
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech

_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech



LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
EDGE Tech Corp.
For donating some give-aways for our meetings.