Re: ntdev digest: September 19, 2000

Hello,

Could someone please point me to a good example of signalling a user-level
application that an event {such as an interrupt} was recieved? We have
considered that a semaphore object should be used. Who should create the
Semaphore object {The driver of the user-level app}? If someone knows of an
example of this technique it could save me a bit of time…

For instance, I have an interrupt handler installed in the driver. The
driver ISR should be dispatched when an interrupt arrives, I read registers
on the board and determine it is our interrupt, now I want to release the
semaphore so all processess waiting for it will un-block. The idea is that
we have a high-priority process running in user-mode land who would then
inquire through an IOCTL what caused the interrupt and dispatch the
high-level code to handle it.

Please reply either to the list and to my EMail address…
mailto:xxxxx@sonic.com

Thank you,
Michael Uman
Sr. Software Engineer
Sonic Solutions

You may not release a semaphore nor signal an event while you are at
interrupt level.
The only thing you can do in an ISR is schedule a DPC.
You may set events or semaphores from your DPC routine which will
execute very soon after you exit your ISR.
Thanks
Sanford Hayes
Livingston & Co. Inc.
xxxxx@livco.com
www.livco.com

This doc in MSDN may help:
[How Drivers Notify User-Mode Pgms of Asynchronous Events]

Steve Huang

----- Original Message -----
From: Michael Uman
To: NT Developers Interest List
Sent: Thursday, September 21, 2000 8:03 AM
Subject: [ntdev] Re: ntdev digest: September 19, 2000

> Hello,
>
> Could someone please point me to a good example of signalling a user-level
> application that an event {such as an interrupt} was recieved? We have
> considered that a semaphore object should be used. Who should create the
> Semaphore object {The driver of the user-level app}? If someone knows of an
> example of this technique it could save me a bit of time…
>
> For instance, I have an interrupt handler installed in the driver. The
> driver ISR should be dispatched when an interrupt arrives, I read registers
> on the board and determine it is our interrupt, now I want to release the
> semaphore so all processess waiting for it will un-block. The idea is that
> we have a high-priority process running in user-mode land who would then
> inquire through an IOCTL what caused the interrupt and dispatch the
> high-level code to handle it.
>
> Please reply either to the list and to my EMail address…
> mailto:xxxxx@sonic.com
>
> Thank you,
> Michael Uman
> Sr. Software Engineer
> Sonic Solutions

http://support.microsoft.com/support/kb/articles/q117/3/08.asp

http://support.microsoft.com/support/kb/articles/q228/7/85.asp

http://support.microsoft.com/support/kb/articles/Q176/4/15.ASP

-----Original Message-----
From: Michael Uman [mailto:xxxxx@sonic.com]
Sent: Wednesday, September 20, 2000 5:04 PM
To: NT Developers Interest List
Subject: [ntdev] Re: ntdev digest: September 19, 2000

Hello,

Could someone please point me to a good example of signalling a user-level
application that an event {such as an interrupt} was recieved? We have
considered that a semaphore object should be used. Who should create the
Semaphore object {The driver of the user-level app}? If someone knows of an
example of this technique it could save me a bit of time…

For instance, I have an interrupt handler installed in the driver. The
driver ISR should be dispatched when an interrupt arrives, I read registers
on the board and determine it is our interrupt, now I want to release the
semaphore so all processess waiting for it will un-block. The idea is that
we have a high-priority process running in user-mode land who would then
inquire through an IOCTL what caused the interrupt and dispatch the
high-level code to handle it.

Please reply either to the list and to my EMail address…
mailto:xxxxx@sonic.com

Thank you,
Michael Uman
Sr. Software Engineer
Sonic Solutions


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)