Subversion Repositories Kolibri OS

Rev

Rev 548 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 548 Rev 702
Line 151... Line 151...
151
;       priority is < eax (really al [0-255])
151
;       priority is < eax (really al [0-255])
152
;       eax==255 -> run all init routines
152
;       eax==255 -> run all init routines
153
;       eax==15  -> run init routines whose priority is <= 15
153
;       eax==15  -> run init routines whose priority is <= 15
154
;
154
;
155
*/
155
*/
-
 
156
#if defined(M_I86)
-
 
157
void _WCI86FAR __FInitRtns( unsigned limit ) {
-
 
158
    __InitRtns( limit );
156
 
159
}
-
 
160
#endif
157
void __InitRtns( unsigned limit ) {
161
void __InitRtns( unsigned limit ) {
158
    __type_rtp local_limit;
162
    __type_rtp local_limit;
159
    struct rt_init _WCI86NEAR *pnext;
163
    struct rt_init _WCI86NEAR *pnext;
160
    save_ds();
164
    save_ds();
161
    save_es();
165
    save_es();
Line 173... Line 177...
173
            #endif
177
            #endif
174
            pnext = (struct rt_init _WCI86NEAR*)&_End_XI;
178
            pnext = (struct rt_init _WCI86NEAR*)&_End_XI;
175
            working_limit = local_limit;
179
            working_limit = local_limit;
Line 176... Line 180...
176
 
180
 
177
            // walk list of routines
181
            // walk list of routines
178
            while( pcur < (struct rt_init _WCI86NEAR*)&_End_XI )
-
 
179
            {
182
            while( pcur < (struct rt_init _WCI86NEAR*)&_End_XI ) {
180
                // if this one hasn't been called
183
                // if this one hasn't been called
181
                if( pcur->rtn_type != PDONE ) {
184
                if( pcur->rtn_type != PDONE ) {
182
                    // if the priority is better than best so far
185
                    // if the priority is better than best so far
183
                    if( pcur->priority <= working_limit )
-
 
184
                    {
186
                    if( pcur->priority <= working_limit ) {
185
                        // remember this one
187
                        // remember this one
186
                        pnext = pcur;
188
                        pnext = pcur;
187
                        working_limit = pcur->priority;
189
                        working_limit = pcur->priority;
188
                    }
190
                    }
Line 222... Line 224...
222
#if defined(M_I86)
224
#if defined(M_I86)
223
void _WCI86FAR __FFiniRtns( unsigned min_limit, unsigned max_limit ) {
225
void _WCI86FAR __FFiniRtns( unsigned min_limit, unsigned max_limit ) {
224
    __FiniRtns( min_limit, max_limit );
226
    __FiniRtns( min_limit, max_limit );
225
}
227
}
226
#endif
228
#endif
227
 
-
 
228
void __FiniRtns( unsigned min_limit, unsigned max_limit )
229
void __FiniRtns( unsigned min_limit, unsigned max_limit ) {
229
{
-
 
230
    __type_rtp local_min_limit;
230
    __type_rtp local_min_limit;
231
    __type_rtp local_max_limit;
231
    __type_rtp local_max_limit;
232
    struct rt_init _WCI86NEAR *pnext;
232
    struct rt_init _WCI86NEAR *pnext;
233
    save_ds();
233
    save_ds();
234
    save_es();
234
    save_es();