IFSMgr_QueueEvent( pevent pev, )
This service queues an event that is to be called at the earliest time it is safe to do so, such as no pending hardware interrupts. Unlike the IFSMgr_SchedEvent timeout mentioned above, there is no timeout before the event function is called.
pev
Supplies pointer to an event structure.
Event Structure: | |
Value | Meaning |
ev_handle | Must be 0. This field is only for IFS manager use. |
ev_flags | Supplies event type. |
Event Type: | |
Value | Meaning |
EVF_TASKTIME | Event must be called at task time only. The IFS manager allocates an IO request packet for these events. No IO request packets are allocated for events that are not to be called at task time. |
EVF_VMEVENT | This is a VM event i.e. it has to run in a specific VM that is passed in. |
EVF_NOTCRIT | This causes a priority event to be scheduled to run on a thread that does not own the critical section. This flag should be used for events that can cause context switches and do not need a critical section to run in. This flag cannot be usedt in combination with EVF_VMEVENT but can be used in combination with EVF_TASKTIME. |
EVF_NOTNESTEXEC | This causes a restricted event to be scheduled that runs only when there is no nested execution in progress. It can be scheduled as a global or a VM event i.e. EVF_VMEVENT can be passed in combination with this flag. In additon, EVF_TASKTIME can also be specified to indicate whether an IOREQ is needed or not. An event that can cause a nested execution to happen should use this flag. Otherwise, it can lead to deadlock situations. |
ev_func
Supplies pointer to event function.
ev_VMHand
Supplies VM handle, needed only if flag EVF_VMEVENT is set.
The event function is called back in exactly the same fashion as described in section 8.11.6.5 above.