Filter manager SWIs:
Filter_RegisterPreFilter
Add a new pre filter to the list of pre filters.
Entry:
R0 - Pointer to 0 terminated filter name. R1 - Addresss of filter. R2 - Value to be passed in R12. R3 - Task handle of task to which filter is applied. or 0 for all tasks.
Exit:
Registers preserved.
The address pointed to by R1 will be called whenever the task who'shandle is passed in R3 calls Wimp_Poll with R12 equal to the value of R2 when this SWI is called.
The routine pointed to by R1 will be called with:
R0 = Event mask as passed to Wimp_Poll R1 -> Event block as passed to Wimp_Poll R2 = Task handle of task that called Wimp_Poll.
On Exit:
It may clear bits in r0 to provide a new event mask.
It must preserve all other registers.
Filter_RegisterPostFilter
Add a new post filter to the list of post filters.
Entry:
R0 - Pointer to 0 terminated filter name. R1 - Addresss of filter. R2 - Value to be passed in R12. R3 - Task handle of task to which filter is applied. or 0 for all tasks. R4 - Event mask ( 1 bit masks the event out as for Wimp_Poll).
Exit:
Registers preserved.
The address pointed to by R1 will be called whenever the Wimp isabout to return to the task who's handle is passed in R3 from Wimp_Poll with R12 equal to the value of R2 when this SWI is called.
On entry to the routine pointed to by R1:
R0 - Event reason code (as from Wimp Poll) R1 -> User's event buffer. R2 = Task handle for task to which the return is made. Task paged in.
On Exit:
The routine may modify the reason code in r0 and the contents of the buffer pointed to by R1 to provide a new event.
It must preserve R1 and R2.
Filter_DeRegisterPreFilter
Remove a pre filter from the list of pre filters.
Entry:
R0 - Pointer to 0 terminated filter name. R1 - Addresss of filter. R2 - Value to be passed in R12. R3 - Task handle of task to which filter was applied.
All must be the same as those passed to RegisterPreFilterExit:
Registers preserved. Filter de-registered.
Filter_DeRegisterPostFilter
Remove a pre filter from the list of pre filters.
Entry:
R0 - Pointer to 0 terminated filter name. R1 - Addresss of filter. R2 - Value to be passed in R12. R3 - Task handle of task to which filter was applied.
All must be the same as those passed to RegisterPreFilterExit:
Registers preserved. Filter de-registered.