|
Definition at line 96 of file kiinit.c.
References _KSERVICE_TABLE_DESCRIPTOR::Base, _KSERVICE_TABLE_DESCRIPTOR::Count, ExInitializeCallData(), FALSE, Index, KeBugCheckCallbackListHead, KeBugCheckCallbackLock, KeInitializeDpc(), KeInitializeEvent, KeInitializeSpinLock(), KeServiceDescriptorTable, KeServiceDescriptorTableShadow, KiArgumentTable, KiDispatcherReadyListHead, KiFlushSingleCallData, KiProcessInSwapListHead, KiProcessOutSwapListHead, KiProfileListHead, KiProfileLock, KiProfileSourceListHead, KiServiceLimit, KiServiceTable, KiSetEventCallData, KiStackInSwapListHead, KiSwapEvent, KiTimerExpiration(), KiTimerExpireDpc, KiTimerTableListHead, KiWaitInListHead, KiWaitOutListHead, KiWaitSingleCallData, _KSERVICE_TABLE_DESCRIPTOR::Limit, NIL, NULL, _KSERVICE_TABLE_DESCRIPTOR::Number, NUMBER_SERVICE_TABLES, PKDEFERRED_ROUTINE, and TIMER_TABLE_SIZE.
Referenced by KiInitializeKernel().
00102 :
00103
00104 This function initializes architecture independent kernel structures.
00105
00106 Arguments:
00107
00108 None.
00109
00110 Return Value:
00111
00112 None.
00113
00114 --*/
00115
00116 {
00117
00118 ULONG Index;
00119
00120
00121
00122
00123
00124 for ( Index = 0; Index < MAXIMUM_PRIORITY; Index += 1) {
00125 InitializeListHead(&KiDispatcherReadyListHead[Index]);
00126 }
00127
00128
00129
00130
00131
00132 InitializeListHead(&KeBugCheckCallbackListHead);
00133 KeInitializeSpinLock(&KeBugCheckCallbackLock);
00134
00135
00136
00137
00138
00139 KeInitializeDpc(&KiTimerExpireDpc,
00140 (PKDEFERRED_ROUTINE)KiTimerExpiration, NIL);
00141
00142
00143
00144
00145
00146 KeInitializeSpinLock(&KiProfileLock);
00147 InitializeListHead(&KiProfileListHead);
00148
00149
00150
00151
00152
00153 InitializeListHead(&KiProfileSourceListHead);
00154
00155
00156
00157
00158
00159
00160 for ( Index = 0; Index < TIMER_TABLE_SIZE; Index += 1) {
00161 InitializeListHead(&KiTimerTableListHead[Index]);
00162 }
00163
00164
00165
00166
00167
00168
00169
00170 KeInitializeEvent(&KiSwapEvent,
00171 SynchronizationEvent,
00172 FALSE);
00173
00174 InitializeListHead(&KiProcessInSwapListHead);
00175 InitializeListHead(&KiProcessOutSwapListHead);
00176 InitializeListHead(&KiStackInSwapListHead);
00177 InitializeListHead(&KiWaitInListHead);
00178 InitializeListHead(&KiWaitOutListHead);
00179
00180
00181
00182
00183
00184 KeServiceDescriptorTable[0]. Base = & KiServiceTable[0];
00185 KeServiceDescriptorTable[0]. Count = NULL;
00186 KeServiceDescriptorTable[0]. Limit = KiServiceLimit;
00187 #if defined(_IA64_)
00188
00189
00190
00191
00192
00193
00194 KeServiceDescriptorTable[0].TableBaseGpOffset =
00195 (LONG)(*( KiServiceTable-1) - (ULONG_PTR) KiServiceTable);
00196 #endif
00197 KeServiceDescriptorTable[0]. Number = & KiArgumentTable[0];
00198 for ( Index = 1; Index < NUMBER_SERVICE_TABLES; Index += 1) {
00199 KeServiceDescriptorTable[ Index]. Limit = 0;
00200 }
00201
00202
00203
00204
00205
00206
00207 RtlCopyMemory(KeServiceDescriptorTableShadow,
00208 KeServiceDescriptorTable,
00209 sizeof(KeServiceDescriptorTable));
00210
00211
00212
00213
00214
00215 #if defined(_COLLECT_FLUSH_SINGLE_CALLDATA_)
00216
00217 ExInitializeCallData(&KiFlushSingleCallData);
00218
00219 #endif
00220
00221 #if defined(_COLLECT_SET_EVENT_CALLDATA_)
00222
00223 ExInitializeCallData(&KiSetEventCallData);
00224
00225 #endif
00226
00227 #if defined(_COLLECT_WAIT_SINGLE_CALLDATA_)
00228
00229 ExInitializeCallData(&KiWaitSingleCallData);
00230
00231 #endif
00232
00233 return;
00234 }
|