IFSMgr_SchedEvent


IFSMgr_SchedEvent(
 pevent pev,
 unsigned long time
 )

This service schedules a timeout for the time passed in and calls the event function passed in by the FSD when the timeout event occurs. Note that the event function may not be called immediately when the timeout occurs. If there are hardware interrupts or high priority events in progress, the event function will be called at the earliest possible time it is safe to do so. The event is always scheduled i.e the callback will not be done immediately and it runs only when interrupts have been enabled in the VM.

pev

Supplies pointer to an event structure.

Event Structure:

Value

Meaning

ev_handle

Must be 0. This field is for use by the IFS manager only.

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 the EVF_VMEVENT flag is set.

time

Supplies the timeout, specified in milliseconds. The event will be generated only after the timeout has expired.