VOID
IoCompleteRequest(
IN PIRP Irp,
IN CCHAR PriorityBoost
);
why give a priority boost?
2. why give a different priority to different events? why does sound get 8 where cd-rom gets 1?
#define EVENT_INCREMENT 1#define IO_CD_ROM_INCREMENT 1#define IO_DISK_INCREMENT 1#define IO_KEYBOARD_INCREMENT 6#define IO_MAILSLOT_INCREMENT 2#define IO_MOUSE_INCREMENT 6#define IO_NAMED_PIPE_INCREMENT 2#define IO_NETWORK_INCREMENT 2#define IO_PARALLEL_INCREMENT 1#define IO_SERIAL_INCREMENT 2#define IO_SOUND_INCREMENT 8#define IO_VIDEO_INCREMENT 1#define SEMAPHORE_INCREMENT 1
assaf
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Read any classic OS book like Deytel or such. Any app awakened by the hardware event usually gets a priority boost.
The boost to IoCompleteRequest specifies the boost for KeSetEvent for Irp->UserEvent.
Sound is 6 since it is a hard realtime thing.
I cannot understand why serial is 2 - it is also nearly realtime, the FIFO is too short.
Max
----- Original Message -----
From: Assaf Wodeslavsky
To: NT Developers Interest List
Sent: Monday, December 24, 2001 2:10 PM
Subject: [ntdev] why give priority boost to threads comming out of wait?
VOID
IoCompleteRequest(
IN PIRP Irp,
IN CCHAR PriorityBoost
);
why give a priority boost?
2. why give a different priority to different events? why does sound get 8 where cd-rom gets 1?
#define EVENT_INCREMENT 1#define IO_CD_ROM_INCREMENT 1#define IO_DISK_INCREMENT 1#define IO_KEYBOARD_INCREMENT 6#define IO_MAILSLOT_INCREMENT 2#define IO_MOUSE_INCREMENT 6#define IO_NAMED_PIPE_INCREMENT 2#define IO_NETWORK_INCREMENT 2#define IO_PARALLEL_INCREMENT 1#define IO_SERIAL_INCREMENT 2#define IO_SOUND_INCREMENT 8#define IO_VIDEO_INCREMENT 1#define SEMAPHORE_INCREMENT 1
assaf
You are currently subscribed to ntdev as: xxxxx@storagecraft.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
So that the Io-bound thread processes its IO in a timely fashion? NT
simply exposes a mechanism for a driver to specify a priority boost, if
appropriate. The classic example is an application feeding a sound card.
However NT is not a realtime OS, so these values should be considered
hints.
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Assaf Wodeslavsky
Sent: Monday, December 24, 2001 6:10 AM
To: NT Developers Interest List
Subject: [ntdev] why give priority boost to threads comming out of wait?
VOID
IoCompleteRequest(
IN PIRP Irp,
IN CCHAR PriorityBoost
);
why give a priority boost?
2. why give a different priority to different events?
why does sound get 8 where cd-rom gets 1?
#define EVENT_INCREMENT 1
#define IO_CD_ROM_INCREMENT 1
#define IO_DISK_INCREMENT 1
#define IO_KEYBOARD_INCREMENT 6
#define IO_MAILSLOT_INCREMENT 2
#define IO_MOUSE_INCREMENT 6
#define IO_NAMED_PIPE_INCREMENT 2
#define IO_NETWORK_INCREMENT 2
#define IO_PARALLEL_INCREMENT 1
#define IO_SERIAL_INCREMENT 2
#define IO_SOUND_INCREMENT 8
#define IO_VIDEO_INCREMENT 1
#define SEMAPHORE_INCREMENT 1
assaf
You are currently subscribed to ntdev as: xxxxx@hollistech.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
MessageBTW - I have an idea of how to make NT really RTOS, this would require patching functions like KiReadyThread with JMPs to my own code, and, for sure, replacing KiLockDispatcherDatabase with CLI to allow events (at least some special “realtime events”) to be signaled from the ISRs.
I’ve heard some Israelian company ships RT addon for NT. Is it implemented this way?
Also - I know one person experienced in RT OSes like ones used in ADSL hardware and such. I told him some details on NT architecture, and he asked - “why NT needs DPCs? To increase latencies? Normal OSes have only threads and ISRs, and ISRs are allowed to signal events”.
Linux runs the dispatcher under CLI, which allows ISRs to signal events, but nevertheless Linux has DPCs aka “bottom halves” and runs, for instance, the network indication path up to sockets from them.
Max
----- Original Message -----
From: Mark Roddy
To: NT Developers Interest List
Sent: Thursday, December 27, 2001 2:53 AM
Subject: [ntdev] RE: why give priority boost to threads comming out of wait?
So that the Io-bound thread processes its IO in a timely fashion? NT simply exposes a mechanism for a driver to specify a priority boost, if appropriate. The classic example is an application feeding a sound card. However NT is not a realtime OS, so these values should be considered hints.
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Assaf Wodeslavsky
Sent: Monday, December 24, 2001 6:10 AM
To: NT Developers Interest List
Subject: [ntdev] why give priority boost to threads comming out of wait?
VOID
IoCompleteRequest(
IN PIRP Irp,
IN CCHAR PriorityBoost
);
why give a priority boost?
2. why give a different priority to different events? why does sound get 8 where cd-rom gets 1?
#define EVENT_INCREMENT 1#define IO_CD_ROM_INCREMENT 1#define IO_DISK_INCREMENT 1#define IO_KEYBOARD_INCREMENT 6#define IO_MAILSLOT_INCREMENT 2#define IO_MOUSE_INCREMENT 6#define IO_NAMED_PIPE_INCREMENT 2#define IO_NETWORK_INCREMENT 2#define IO_PARALLEL_INCREMENT 1#define IO_SERIAL_INCREMENT 2#define IO_SOUND_INCREMENT 8#define IO_VIDEO_INCREMENT 1#define SEMAPHORE_INCREMENT 1
assaf
You are currently subscribed to ntdev as: xxxxx@hollistech.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: xxxxx@storagecraft.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com