IFSMgr_QueueEvent


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.