SWIs 3.54 KB
Newer Older
Neil Turton's avatar
Neil Turton committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

Filter Manager service calls:

Service_FilterManagerInstalled
------------------------------
 in     R0 = Version number of Filter Manager *100, ie. 1.23 => 123
        R1 = Service_FilterManagerInstalled
 out    all must be preserved, must never be claimed

This service call is broadcast to allow modules that install a Filter
to be reinstalled when the filter manager is reloaded / re-inited.

The SWI is issued on a callback, so the SWI interface is valid for
registering filters.


Service_FilterManagerDying
--------------------------
 in     R1 = Service_FilterManagerDying
 out    all must be preserved, must never be claimed

This is broadcast when the filter manager has unlinked all filters from
its active lists (just before the module dies) to allow the filter owners
to tidy any internal state.


Filter manager SWIs:


Filter_RegisterPreFilter

 Add a new pre filter to the list of pre filters.

 Entry:
        R0 - Pointer to 0 terminated filter name. 
Robert Sprowson's avatar
Robert Sprowson committed
36
        R1 - Address of filter.
Neil Turton's avatar
Neil Turton committed
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
        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's
handle 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. 
Robert Sprowson's avatar
Robert Sprowson committed
69
        R1 - Address of filter.
Neil Turton's avatar
Neil Turton committed
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
        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 is
about 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. 
Robert Sprowson's avatar
Robert Sprowson committed
107
        R1 - Address of filter.
Neil Turton's avatar
Neil Turton committed
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
        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 RegisterPreFilter
 Exit:
        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. 
Robert Sprowson's avatar
Robert Sprowson committed
123
        R1 - Address of filter.
Neil Turton's avatar
Neil Turton committed
124 125 126
        R2 - Value to be passed in R12.
        R3 - Task handle of task to which filter was applied.

Robert Sprowson's avatar
Robert Sprowson committed
127
        All must be the same as those passed to RegisterPostFilter
Neil Turton's avatar
Neil Turton committed
128 129 130 131 132 133
 Exit:
        Registers preserved.
        Filter de-registered.