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.