IRQL

Hello All,

I am bit new to NT driver field and the term ‘irql’ is quiet confusing for me. I know it stands for Interrupt Request level, but how different from interrupts and/or priorities in Windows? Or basically what is basic need of irql?

Thanks,

AL


Do you Yahoo!?
Yahoo! Web Hosting - establish your business online

The notion of IRQL is a per-CPU notion, a kind of CPU state. The difference between PASSIVE and APC levels is also per-thread - when the thread is preempted, its IRQL is saved to KTHREAD and will be restored later to a CPU state when the thread will be picked for execution once more.

PASSIVE_LEVEL - usual thread execution, can be interrupted by special kernel APCs (IopCompleteRequest)
APC_LEVEL - the same but special kernel APCs are delayed till IRQL will lower.
DISPATCH_LEVEL - thread preemption is suspended till IRQL will lower, cannot touch anything pageable and cannot wait on mutexes or events. DPCs (including the timer callbacks) and any code holding a spinlock runs on DISPATCH_LEVEL.

DISPATCH_LEVEL - associated with a particular IRQ, same as DISPATCH_LEVEL but some IRQs are masked off on the interrupt controller. ISRs, KeSynchronizeExecution callbacks and any code holding interrupt spinlock (I mean XP’s KeAcquireInterruptSpinLock) runs on this level.

Max

----- Original Message -----
From: Allan B
To: NT Developers Interest List
Sent: Friday, March 14, 2003 1:52 AM
Subject: [ntdev] IRQL

Hello All,

I am bit new to NT driver field and the term ‘irql’ is quiet confusing for me. I know it stands for Interrupt Request level, but how different from interrupts and/or priorities in Windows? Or basically what is basic need of irql?

Thanks,

AL


Do you Yahoo!?
Yahoo! Web Hosting - establish your business online — You are currently subscribed to ntdev as: xxxxx@storagecraft.com To unsubscribe send a blank email to xxxxx@lists.osr.com

Hi Al,
Yea… that one confused me a bit at first. There are really two
different IRQL’s… Most of the time in the DDK doc’s the term are
referring to the thread execution priority of the kernel at a given time.

Software IRQL:

PASSIVE_LEVEL 0 // Passive release level
LOW_LEVEL 0 // Lowest interrupt level
APC_LEVEL 1 // APC interrupt level
DISPATCH_LEVEL 2 // Dispatcher level

I found this for you: http://www.tuningsoft.com/documents/irql.htm

I hope this helps.

-Justin

At 02:52 PM 3/13/2003, you wrote:

Hello All,

I am bit new to NT driver field and the term ‘irql’ is quiet confusing for
me. I know it stands for Interrupt Request level, but how different from
interrupts and/or priorities in Windows? Or basically what is basic need
of irql?

Thanks,

AL

Do you Yahoo!?
http:</http:>Yahoo!
Web Hosting - establish your business online — You are currently
subscribed to ntdev as: zeppelin@io.com To unsubscribe send a blank email
to xxxxx@lists.osr.com

Thanks Justin,

I think, this is what I was looking for.

Thanks,

AL


Do you Yahoo!?
Yahoo! Web Hosting - establish your business online