ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ke.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 /* INCLUDES *****************************************************************/
00004 
00005 #include "arch/ke.h"
00006 
00007 /* INTERNAL KERNEL TYPES ****************************************************/
00008 
00009 typedef struct _WOW64_PROCESS
00010 {
00011   PVOID Wow64;
00012 } WOW64_PROCESS, *PWOW64_PROCESS;
00013 
00014 typedef struct _KPROFILE_SOURCE_OBJECT
00015 {
00016     KPROFILE_SOURCE Source;
00017     LIST_ENTRY ListEntry;
00018 } KPROFILE_SOURCE_OBJECT, *PKPROFILE_SOURCE_OBJECT;
00019 
00020 typedef enum _CONNECT_TYPE
00021 {
00022     NoConnect,
00023     NormalConnect,
00024     ChainConnect,
00025     UnknownConnect
00026 } CONNECT_TYPE, *PCONNECT_TYPE;
00027 
00028 typedef struct _DISPATCH_INFO
00029 {
00030     CONNECT_TYPE Type;
00031     PKINTERRUPT Interrupt;
00032     PKINTERRUPT_ROUTINE NoDispatch;
00033     PKINTERRUPT_ROUTINE InterruptDispatch;
00034     PKINTERRUPT_ROUTINE FloatingDispatch;
00035     PKINTERRUPT_ROUTINE ChainedDispatch;
00036     PKINTERRUPT_ROUTINE *FlatDispatch;
00037 } DISPATCH_INFO, *PDISPATCH_INFO;
00038 
00039 typedef struct _DEFERRED_REVERSE_BARRIER
00040 {
00041     ULONG Barrier;
00042     ULONG TotalProcessors;
00043 } DEFERRED_REVERSE_BARRIER, *PDEFERRED_REVERSE_BARRIER;
00044 
00045 typedef struct _KI_SAMPLE_MAP
00046 {
00047     LARGE_INTEGER PerfStart;
00048     LARGE_INTEGER PerfEnd;
00049     LONGLONG PerfDelta;
00050     LARGE_INTEGER PerfFreq;
00051     LONGLONG TSCStart;
00052     LONGLONG TSCEnd;
00053     LONGLONG TSCDelta;
00054     ULONG MHz;
00055 } KI_SAMPLE_MAP, *PKI_SAMPLE_MAP;
00056 
00057 typedef struct _KTIMER_TABLE_ENTRY
00058 {
00059     LIST_ENTRY Entry;
00060     ULARGE_INTEGER Time;
00061 } KTIMER_TABLE_ENTRY, *PKTIMER_TABLE_ENTRY;
00062 
00063 #define MAX_TIMER_DPCS                      16
00064 
00065 typedef struct _DPC_QUEUE_ENTRY
00066 {
00067     PKDPC Dpc;
00068     PKDEFERRED_ROUTINE Routine;
00069     PVOID Context;
00070 } DPC_QUEUE_ENTRY, *PDPC_QUEUE_ENTRY;
00071 
00072 typedef struct _KNMI_HANDLER_CALLBACK
00073 {
00074     struct _KNMI_HANDLER_CALLBACK* Next;
00075     PNMI_CALLBACK Callback;
00076     PVOID Context;
00077     PVOID Handle;
00078 } KNMI_HANDLER_CALLBACK, *PKNMI_HANDLER_CALLBACK;
00079 
00080 typedef PCHAR
00081 (NTAPI *PKE_BUGCHECK_UNICODE_TO_ANSI)(
00082     IN PUNICODE_STRING Unicode,
00083     IN PCHAR Ansi,
00084     IN ULONG Length
00085 );
00086 
00087 extern PKNMI_HANDLER_CALLBACK KiNmiCallbackListHead;
00088 extern KSPIN_LOCK KiNmiCallbackListLock;
00089 extern PVOID KeUserApcDispatcher;
00090 extern PVOID KeUserCallbackDispatcher;
00091 extern PVOID KeUserExceptionDispatcher;
00092 extern PVOID KeRaiseUserExceptionDispatcher;
00093 extern LARGE_INTEGER KeBootTime;
00094 extern ULONGLONG KeBootTimeBias;
00095 extern BOOLEAN ExCmosClockIsSane;
00096 extern USHORT KeProcessorArchitecture;
00097 extern USHORT KeProcessorLevel;
00098 extern USHORT KeProcessorRevision;
00099 extern ULONG KeFeatureBits;
00100 extern KNODE KiNode0;
00101 extern PKNODE KeNodeBlock[1];
00102 extern UCHAR KeNumberNodes;
00103 extern UCHAR KeProcessNodeSeed;
00104 extern ETHREAD KiInitialThread;
00105 extern EPROCESS KiInitialProcess;
00106 extern PULONG KiInterruptTemplateObject;
00107 extern PULONG KiInterruptTemplateDispatch;
00108 extern PULONG KiInterruptTemplate2ndDispatch;
00109 extern ULONG KiUnexpectedEntrySize;
00110 extern ULONG_PTR KiDoubleFaultStack;
00111 extern EX_PUSH_LOCK KernelAddressSpaceLock;
00112 extern ULONG KiMaximumDpcQueueDepth;
00113 extern ULONG KiMinimumDpcRate;
00114 extern ULONG KiAdjustDpcThreshold;
00115 extern ULONG KiIdealDpcRate;
00116 extern BOOLEAN KeThreadDpcEnable;
00117 extern LARGE_INTEGER KiTimeIncrementReciprocal;
00118 extern UCHAR KiTimeIncrementShiftCount;
00119 extern ULONG KiTimeLimitIsrMicroseconds;
00120 extern ULONG KiServiceLimit;
00121 extern LIST_ENTRY KeBugcheckCallbackListHead, KeBugcheckReasonCallbackListHead;
00122 extern KSPIN_LOCK BugCheckCallbackLock;
00123 extern KDPC KiTimerExpireDpc;
00124 extern KTIMER_TABLE_ENTRY KiTimerTableListHead[TIMER_TABLE_SIZE];
00125 extern FAST_MUTEX KiGenericCallDpcMutex;
00126 extern LIST_ENTRY KiProfileListHead, KiProfileSourceListHead;
00127 extern KSPIN_LOCK KiProfileLock;
00128 extern LIST_ENTRY KiProcessListHead;
00129 extern LIST_ENTRY KiProcessInSwapListHead, KiProcessOutSwapListHead;
00130 extern LIST_ENTRY KiStackInSwapListHead;
00131 extern KEVENT KiSwapEvent;
00132 extern PKPRCB KiProcessorBlock[];
00133 extern ULONG KiMask32Array[MAXIMUM_PRIORITY];
00134 extern ULONG_PTR KiIdleSummary;
00135 extern PVOID KeUserApcDispatcher;
00136 extern PVOID KeUserCallbackDispatcher;
00137 extern PVOID KeUserExceptionDispatcher;
00138 extern PVOID KeRaiseUserExceptionDispatcher;
00139 extern ULONG KeTimeIncrement;
00140 extern ULONG KeTimeAdjustment;
00141 extern BOOLEAN KiTimeAdjustmentEnabled;
00142 extern LONG KiTickOffset;
00143 extern ULONG_PTR KiBugCheckData[5];
00144 extern ULONG KiFreezeFlag;
00145 extern ULONG KiDPCTimeout;
00146 extern PGDI_BATCHFLUSH_ROUTINE KeGdiFlushUserBatch;
00147 extern ULONGLONG BootCycles, BootCyclesEnd;
00148 extern ULONG ProcessCount;
00149 extern VOID __cdecl KiInterruptTemplate(VOID);
00150 
00151 /* MACROS *************************************************************************/
00152 
00153 #define AFFINITY_MASK(Id) KiMask32Array[Id]
00154 #define PRIORITY_MASK(Id) KiMask32Array[Id]
00155 
00156 /* Tells us if the Timer or Event is a Syncronization or Notification Object */
00157 #define TIMER_OR_EVENT_TYPE 0x7L
00158 
00159 /* One of the Reserved Wait Blocks, this one is for the Thread's Timer */
00160 #define TIMER_WAIT_BLOCK 0x3L
00161 
00162 #ifdef _M_ARM // FIXME: remove this once our headers are cleaned up
00163 //
00164 // A system call ID is formatted as such:
00165 // .________________________________________________________________.
00166 // | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
00167 // |--------------|-------------------------------------------------|
00168 // | TABLE NUMBER |                  TABLE OFFSET                   |
00169 // \----------------------------------------------------------------/
00170 //
00171 //
00172 // The table number is then used as an index into the service descriptor table.
00173 #define TABLE_NUMBER_BITS 3
00174 #define TABLE_OFFSET_BITS 12
00175 
00176 //
00177 // There are 2 tables (kernel and shadow, used by Win32K)
00178 //
00179 #define NUMBER_SERVICE_TABLES 2
00180 #define NTOS_SERVICE_INDEX   0
00181 #define WIN32K_SERVICE_INDEX 1
00182 
00183 //
00184 // NB. From assembly code, the table number must be computed as an offset into
00185 //     the service descriptor table.
00186 //
00187 //     Each entry into the table is 16 bytes long on 32-bit architectures, and
00188 //     32 bytes long on 64-bit architectures.
00189 //
00190 //     Thus, Table Number 1 is offset 16 (0x10) on x86, and offset 32 (0x20) on
00191 //     x64.
00192 //
00193 #ifdef _WIN64
00194 #define BITS_PER_ENTRY 5 // (1 << 5) = 32 bytes
00195 #else
00196 #define BITS_PER_ENTRY 4 // (1 << 4) = 16 bytes
00197 #endif
00198 
00199 //
00200 // We want the table number, but leave some extra bits to we can have the offset
00201 // into the descriptor table.
00202 //
00203 #define SERVICE_TABLE_SHIFT (12 - BITS_PER_ENTRY)
00204 
00205 //
00206 // Now the table number (as an offset) is corrupted with part of the table offset
00207 // This mask will remove the extra unwanted bits, and give us the offset into the
00208 // descriptor table proper.
00209 //
00210 #define SERVICE_TABLE_MASK  (((1 << TABLE_NUMBER_BITS) - 1) << BITS_PER_ENTRY)
00211 
00212 //
00213 // To get the table offset (ie: the service call number), just keep the 12 bits
00214 //
00215 #define SERVICE_NUMBER_MASK ((1 << TABLE_OFFSET_BITS) - 1)
00216 
00217 //
00218 // We'll often need to check if this is a graphics call. This is done by comparing
00219 // the table number offset with the known Win32K table number offset.
00220 // This is usually index 1, so table number offset 0x10 (x86) or 0x20 (x64)
00221 //
00222 #define SERVICE_TABLE_TEST  (WIN32K_SERVICE_INDEX << BITS_PER_ENTRY)
00223 
00224 #endif
00225 
00226 #define KTS_SYSCALL_BIT (((KTRAP_STATE_BITS) { { .SystemCall   = TRUE } }).Bits)
00227 #define KTS_PM_BIT      (((KTRAP_STATE_BITS) { { .PreviousMode   = TRUE } }).Bits)
00228 #define KTS_SEG_BIT     (((KTRAP_STATE_BITS) { { .Segments  = TRUE } }).Bits)
00229 #define KTS_VOL_BIT     (((KTRAP_STATE_BITS) { { .Volatiles = TRUE } }).Bits)
00230 #define KTS_FULL_BIT    (((KTRAP_STATE_BITS) { { .Full = TRUE } }).Bits)
00231 
00232 /* INTERNAL KERNEL FUNCTIONS ************************************************/
00233 
00234 VOID
00235 NTAPI
00236 CPUID(
00237     IN ULONG InfoType,
00238     OUT PULONG CpuInfoEax,
00239     OUT PULONG CpuInfoEbx,
00240     OUT PULONG CpuInfoEcx,
00241     OUT PULONG CpuInfoEdx
00242 );
00243 
00244 LONGLONG
00245 FASTCALL
00246 RDMSR(
00247     IN ULONG Register
00248 );
00249 
00250 VOID
00251 NTAPI
00252 WRMSR(
00253     IN ULONG Register,
00254     IN LONGLONG Value
00255 );
00256 
00257 /* Finds a new thread to run */
00258 LONG_PTR
00259 FASTCALL
00260 KiSwapThread(
00261     IN PKTHREAD Thread,
00262     IN PKPRCB Prcb
00263 );
00264 
00265 VOID
00266 NTAPI
00267 KeReadyThread(
00268     IN PKTHREAD Thread
00269 );
00270 
00271 BOOLEAN
00272 NTAPI
00273 KeSetDisableBoostThread(
00274     IN OUT PKTHREAD Thread,
00275     IN BOOLEAN Disable
00276 );
00277 
00278 BOOLEAN
00279 NTAPI
00280 KeSetDisableBoostProcess(
00281     IN PKPROCESS Process,
00282     IN BOOLEAN Disable
00283 );
00284 
00285 BOOLEAN
00286 NTAPI
00287 KeSetAutoAlignmentProcess(
00288     IN PKPROCESS Process,
00289     IN BOOLEAN Enable
00290 );
00291 
00292 KAFFINITY
00293 NTAPI
00294 KeSetAffinityProcess(
00295     IN PKPROCESS Process,
00296     IN KAFFINITY Affinity
00297 );
00298 
00299 VOID
00300 NTAPI
00301 KeBoostPriorityThread(
00302     IN PKTHREAD Thread,
00303     IN KPRIORITY Increment
00304 );
00305 
00306 VOID
00307 NTAPI
00308 KeBalanceSetManager(IN PVOID Context);
00309 
00310 VOID
00311 NTAPI
00312 KiReadyThread(IN PKTHREAD Thread);
00313 
00314 ULONG
00315 NTAPI
00316 KeSuspendThread(PKTHREAD Thread);
00317 
00318 BOOLEAN
00319 NTAPI
00320 KeReadStateThread(IN PKTHREAD Thread);
00321 
00322 BOOLEAN
00323 FASTCALL
00324 KiSwapContext(
00325     IN KIRQL WaitIrql,
00326     IN PKTHREAD CurrentThread
00327 );
00328 
00329 VOID
00330 NTAPI
00331 KiAdjustQuantumThread(IN PKTHREAD Thread);
00332 
00333 VOID
00334 FASTCALL
00335 KiExitDispatcher(KIRQL OldIrql);
00336 
00337 VOID
00338 FASTCALL
00339 KiDeferredReadyThread(IN PKTHREAD Thread);
00340 
00341 PKTHREAD
00342 FASTCALL
00343 KiIdleSchedule(
00344     IN PKPRCB Prcb
00345 );
00346 
00347 VOID
00348 FASTCALL
00349 KiProcessDeferredReadyList(
00350     IN PKPRCB Prcb
00351 );
00352 
00353 KAFFINITY
00354 FASTCALL
00355 KiSetAffinityThread(
00356     IN PKTHREAD Thread,
00357     IN KAFFINITY Affinity
00358 );
00359 
00360 PKTHREAD
00361 FASTCALL
00362 KiSelectNextThread(
00363     IN PKPRCB Prcb
00364 );
00365 
00366 BOOLEAN
00367 FASTCALL
00368 KiInsertTimerTable(
00369     IN PKTIMER Timer,
00370     IN ULONG Hand
00371 );
00372 
00373 VOID
00374 FASTCALL
00375 KiTimerListExpire(
00376     IN PLIST_ENTRY ExpiredListHead,
00377     IN KIRQL OldIrql
00378 );
00379 
00380 BOOLEAN
00381 FASTCALL
00382 KiInsertTreeTimer(
00383     IN PKTIMER Timer,
00384     IN LARGE_INTEGER Interval
00385 );
00386 
00387 VOID
00388 FASTCALL
00389 KiCompleteTimer(
00390     IN PKTIMER Timer,
00391     IN PKSPIN_LOCK_QUEUE LockQueue
00392 );
00393 
00394 /* gmutex.c ********************************************************************/
00395 
00396 VOID
00397 FASTCALL
00398 KiAcquireGuardedMutex(
00399     IN OUT PKGUARDED_MUTEX GuardedMutex
00400 );
00401 
00402 VOID
00403 FASTCALL
00404 KiAcquireFastMutex(
00405     IN PFAST_MUTEX FastMutex
00406 );
00407 
00408 /* gate.c **********************************************************************/
00409 
00410 VOID
00411 FASTCALL
00412 KeInitializeGate(PKGATE Gate);
00413 
00414 VOID
00415 FASTCALL
00416 KeSignalGateBoostPriority(PKGATE Gate);
00417 
00418 VOID
00419 FASTCALL
00420 KeWaitForGate(
00421     PKGATE Gate,
00422     KWAIT_REASON WaitReason,
00423     KPROCESSOR_MODE WaitMode
00424 );
00425 
00426 /* ipi.c ********************************************************************/
00427 
00428 VOID
00429 FASTCALL
00430 KiIpiSend(
00431     KAFFINITY TargetSet,
00432     ULONG IpiRequest
00433 );
00434 
00435 VOID
00436 NTAPI
00437 KiIpiSendPacket(
00438     IN KAFFINITY TargetProcessors,
00439     IN PKIPI_WORKER WorkerFunction,
00440     IN PKIPI_BROADCAST_WORKER BroadcastFunction,
00441     IN ULONG_PTR Context,
00442     IN PULONG Count
00443 );
00444 
00445 VOID
00446 FASTCALL
00447 KiIpiSignalPacketDone(
00448     IN PKIPI_CONTEXT PacketContext
00449 );
00450 
00451 VOID
00452 FASTCALL
00453 KiIpiSignalPacketDoneAndStall(
00454     IN PKIPI_CONTEXT PacketContext,
00455     IN volatile PULONG ReverseStall
00456 );
00457 
00458 /* next file ***************************************************************/
00459 
00460 UCHAR
00461 NTAPI
00462 KeFindNextRightSetAffinity(
00463     IN UCHAR Number,
00464     IN ULONG Set
00465 );
00466 
00467 VOID
00468 NTAPI
00469 DbgBreakPointNoBugCheck(VOID);
00470 
00471 VOID
00472 NTAPI
00473 KeInitializeProfile(
00474     struct _KPROFILE* Profile,
00475     struct _KPROCESS* Process,
00476     PVOID ImageBase,
00477     SIZE_T ImageSize,
00478     ULONG BucketSize,
00479     KPROFILE_SOURCE ProfileSource,
00480     KAFFINITY Affinity
00481 );
00482 
00483 BOOLEAN
00484 NTAPI
00485 KeStartProfile(
00486     struct _KPROFILE* Profile,
00487     PVOID Buffer
00488 );
00489 
00490 BOOLEAN
00491 NTAPI
00492 KeStopProfile(struct _KPROFILE* Profile);
00493 
00494 ULONG
00495 NTAPI
00496 KeQueryIntervalProfile(KPROFILE_SOURCE ProfileSource);
00497 
00498 VOID
00499 NTAPI
00500 KeSetIntervalProfile(
00501     KPROFILE_SOURCE ProfileSource,
00502     ULONG Interval
00503 );
00504 
00505 VOID
00506 NTAPI
00507 KeProfileInterrupt(
00508     PKTRAP_FRAME TrapFrame
00509 );
00510 
00511 VOID
00512 NTAPI
00513 KeProfileInterruptWithSource(
00514     IN PKTRAP_FRAME TrapFrame,
00515     IN KPROFILE_SOURCE Source
00516 );
00517 
00518 VOID
00519 NTAPI
00520 KeUpdateRunTime(
00521     PKTRAP_FRAME TrapFrame,
00522     KIRQL Irql
00523 );
00524 
00525 VOID
00526 NTAPI
00527 KiExpireTimers(
00528     PKDPC Dpc,
00529     PVOID DeferredContext,
00530     PVOID SystemArgument1,
00531     PVOID SystemArgument2
00532 );
00533 
00534 VOID
00535 NTAPI
00536 KeInitializeThread(
00537     IN PKPROCESS Process,
00538     IN OUT PKTHREAD Thread,
00539     IN PKSYSTEM_ROUTINE SystemRoutine,
00540     IN PKSTART_ROUTINE StartRoutine,
00541     IN PVOID StartContext,
00542     IN PCONTEXT Context,
00543     IN PVOID Teb,
00544     IN PVOID KernelStack
00545 );
00546 
00547 VOID
00548 NTAPI
00549 KeUninitThread(
00550     IN PKTHREAD Thread
00551 );
00552 
00553 NTSTATUS
00554 NTAPI
00555 KeInitThread(
00556     IN OUT PKTHREAD Thread,
00557     IN PVOID KernelStack,
00558     IN PKSYSTEM_ROUTINE SystemRoutine,
00559     IN PKSTART_ROUTINE StartRoutine,
00560     IN PVOID StartContext,
00561     IN PCONTEXT Context,
00562     IN PVOID Teb,
00563     IN PKPROCESS Process
00564 );
00565 
00566 VOID
00567 NTAPI
00568 KiInitializeContextThread(
00569     PKTHREAD Thread,
00570     PKSYSTEM_ROUTINE SystemRoutine,
00571     PKSTART_ROUTINE StartRoutine,
00572     PVOID StartContext,
00573     PCONTEXT Context
00574 );
00575 
00576 VOID
00577 NTAPI
00578 KeStartThread(
00579     IN OUT PKTHREAD Thread
00580 );
00581 
00582 BOOLEAN
00583 NTAPI
00584 KeAlertThread(
00585     IN PKTHREAD Thread,
00586     IN KPROCESSOR_MODE AlertMode
00587 );
00588 
00589 ULONG
00590 NTAPI
00591 KeAlertResumeThread(
00592     IN PKTHREAD Thread
00593 );
00594 
00595 ULONG
00596 NTAPI
00597 KeResumeThread(
00598     IN PKTHREAD Thread
00599 );
00600 
00601 PVOID
00602 NTAPI
00603 KeSwitchKernelStack(
00604     IN PVOID StackBase,
00605     IN PVOID StackLimit
00606 );
00607 
00608 VOID
00609 NTAPI
00610 KeRundownThread(VOID);
00611 
00612 NTSTATUS
00613 NTAPI
00614 KeReleaseThread(PKTHREAD Thread);
00615 
00616 VOID
00617 NTAPI
00618 KiSuspendRundown(
00619     IN PKAPC Apc
00620 );
00621 
00622 VOID
00623 NTAPI
00624 KiSuspendNop(
00625     IN PKAPC Apc,
00626     IN PKNORMAL_ROUTINE *NormalRoutine,
00627     IN PVOID *NormalContext,
00628     IN PVOID *SystemArgument1,
00629     IN PVOID *SystemArgument2
00630 );
00631 
00632 VOID
00633 NTAPI
00634 KiSuspendThread(
00635     IN PVOID NormalContext,
00636     IN PVOID SystemArgument1,
00637     IN PVOID SystemArgument2
00638 );
00639 
00640 LONG
00641 NTAPI
00642 KeQueryBasePriorityThread(IN PKTHREAD Thread);
00643 
00644 VOID
00645 FASTCALL
00646 KiSetPriorityThread(
00647     IN PKTHREAD Thread,
00648     IN KPRIORITY Priority
00649 );
00650 
00651 VOID
00652 FASTCALL
00653 KiUnlinkThread(
00654     IN PKTHREAD Thread,
00655     IN LONG_PTR WaitStatus
00656 );
00657 
00658 VOID
00659 NTAPI
00660 KeDumpStackFrames(PULONG Frame);
00661 
00662 BOOLEAN
00663 NTAPI
00664 KiTestAlert(VOID);
00665 
00666 VOID
00667 FASTCALL
00668 KiUnwaitThread(
00669     IN PKTHREAD Thread,
00670     IN LONG_PTR WaitStatus,
00671     IN KPRIORITY Increment
00672 );
00673 
00674 VOID
00675 NTAPI
00676 KeInitializeProcess(
00677     struct _KPROCESS *Process,
00678     KPRIORITY Priority,
00679     KAFFINITY Affinity,
00680     PULONG_PTR DirectoryTableBase,
00681     IN BOOLEAN Enable
00682 );
00683 
00684 VOID
00685 NTAPI
00686 KeSetQuantumProcess(
00687     IN PKPROCESS Process,
00688     IN UCHAR Quantum
00689 );
00690 
00691 KPRIORITY
00692 NTAPI
00693 KeSetPriorityAndQuantumProcess(
00694     IN PKPROCESS Process,
00695     IN KPRIORITY Priority,
00696     IN UCHAR Quantum OPTIONAL
00697 );
00698 
00699 ULONG
00700 NTAPI
00701 KeForceResumeThread(IN PKTHREAD Thread);
00702 
00703 VOID
00704 NTAPI
00705 KeThawAllThreads(
00706     VOID
00707 );
00708 
00709 VOID
00710 NTAPI
00711 KeFreezeAllThreads(
00712     VOID
00713 );
00714 
00715 BOOLEAN
00716 NTAPI
00717 KeDisableThreadApcQueueing(IN PKTHREAD Thread);
00718 
00719 VOID
00720 FASTCALL
00721 KiWaitTest(
00722     PVOID Object,
00723     KPRIORITY Increment
00724 );
00725 
00726 VOID
00727 NTAPI
00728 KeContextToTrapFrame(
00729     PCONTEXT Context,
00730     PKEXCEPTION_FRAME ExeptionFrame,
00731     PKTRAP_FRAME TrapFrame,
00732     ULONG ContextFlags,
00733     KPROCESSOR_MODE PreviousMode
00734 );
00735 
00736 VOID
00737 NTAPI
00738 Ke386SetIOPL(VOID);
00739 
00740 VOID
00741 NTAPI
00742 KiCheckForKernelApcDelivery(VOID);
00743 
00744 LONG
00745 NTAPI
00746 KiInsertQueue(
00747     IN PKQUEUE Queue,
00748     IN PLIST_ENTRY Entry,
00749     BOOLEAN Head
00750 );
00751 
00752 VOID
00753 NTAPI
00754 KiTimerExpiration(
00755     IN PKDPC Dpc,
00756     IN PVOID DeferredContext,
00757     IN PVOID SystemArgument1,
00758     IN PVOID SystemArgument2
00759 );
00760 
00761 ULONG
00762 NTAPI
00763 KeSetProcess(
00764     struct _KPROCESS* Process,
00765     KPRIORITY Increment,
00766     BOOLEAN InWait
00767 );
00768 
00769 VOID
00770 NTAPI
00771 KeInitializeEventPair(PKEVENT_PAIR EventPair);
00772 
00773 VOID
00774 NTAPI
00775 KiInitializeUserApc(
00776     IN PKEXCEPTION_FRAME Reserved,
00777     IN PKTRAP_FRAME TrapFrame,
00778     IN PKNORMAL_ROUTINE NormalRoutine,
00779     IN PVOID NormalContext,
00780     IN PVOID SystemArgument1,
00781     IN PVOID SystemArgument2
00782 );
00783 
00784 PLIST_ENTRY
00785 NTAPI
00786 KeFlushQueueApc(
00787     IN PKTHREAD Thread,
00788     IN KPROCESSOR_MODE PreviousMode
00789 );
00790 
00791 VOID
00792 NTAPI
00793 KiAttachProcess(
00794     struct _KTHREAD *Thread,
00795     struct _KPROCESS *Process,
00796     PKLOCK_QUEUE_HANDLE ApcLock,
00797     struct _KAPC_STATE *SavedApcState
00798 );
00799 
00800 VOID
00801 NTAPI
00802 KiSwapProcess(
00803     struct _KPROCESS *NewProcess,
00804     struct _KPROCESS *OldProcess
00805 );
00806 
00807 BOOLEAN
00808 NTAPI
00809 KeTestAlertThread(IN KPROCESSOR_MODE AlertMode);
00810 
00811 BOOLEAN
00812 NTAPI
00813 KeRemoveQueueApc(PKAPC Apc);
00814 
00815 VOID
00816 FASTCALL
00817 KiActivateWaiterQueue(IN PKQUEUE Queue);
00818 
00819 ULONG
00820 NTAPI
00821 KeQueryRuntimeProcess(IN PKPROCESS Process,
00822                       OUT PULONG UserTime);
00823 
00824 /* INITIALIZATION FUNCTIONS *************************************************/
00825 
00826 BOOLEAN
00827 NTAPI
00828 KeInitSystem(VOID);
00829 
00830 VOID
00831 NTAPI
00832 KeInitExceptions(VOID);
00833 
00834 VOID
00835 NTAPI
00836 KeInitInterrupts(VOID);
00837 
00838 VOID
00839 NTAPI
00840 KiInitializeBugCheck(VOID);
00841 
00842 VOID
00843 NTAPI
00844 KiSystemStartup(
00845     IN PLOADER_PARAMETER_BLOCK LoaderBlock
00846 );
00847 
00848 BOOLEAN
00849 NTAPI
00850 KiDeliverUserApc(PKTRAP_FRAME TrapFrame);
00851 
00852 VOID
00853 NTAPI
00854 KiMoveApcState(
00855     PKAPC_STATE OldState,
00856     PKAPC_STATE NewState
00857 );
00858 
00859 VOID
00860 NTAPI
00861 KiAddProfileEvent(
00862     KPROFILE_SOURCE Source,
00863     ULONG Pc
00864 );
00865 
00866 VOID
00867 NTAPI
00868 KiDispatchException(
00869     PEXCEPTION_RECORD ExceptionRecord,
00870     PKEXCEPTION_FRAME ExceptionFrame,
00871     PKTRAP_FRAME Tf,
00872     KPROCESSOR_MODE PreviousMode,
00873     BOOLEAN SearchFrames
00874 );
00875 
00876 VOID
00877 NTAPI
00878 KeTrapFrameToContext(
00879     IN PKTRAP_FRAME TrapFrame,
00880     IN PKEXCEPTION_FRAME ExceptionFrame,
00881     IN OUT PCONTEXT Context
00882 );
00883 
00884 DECLSPEC_NORETURN
00885 VOID
00886 NTAPI
00887 KeBugCheckWithTf(
00888     ULONG BugCheckCode,
00889     ULONG_PTR BugCheckParameter1,
00890     ULONG_PTR BugCheckParameter2,
00891     ULONG_PTR BugCheckParameter3,
00892     ULONG_PTR BugCheckParameter4,
00893     PKTRAP_FRAME Tf
00894 );
00895 
00896 BOOLEAN
00897 NTAPI
00898 KiHandleNmi(VOID);
00899 
00900 VOID
00901 NTAPI
00902 KeFlushCurrentTb(VOID);
00903 
00904 BOOLEAN
00905 NTAPI
00906 KeInvalidateAllCaches(VOID);
00907 
00908 VOID
00909 FASTCALL
00910 KeZeroPages(IN PVOID Address,
00911             IN ULONG Size);
00912 
00913 BOOLEAN
00914 FASTCALL
00915 KeInvalidAccessAllowed(IN PVOID TrapInformation OPTIONAL);
00916 
00917 VOID
00918 NTAPI
00919 KeRosDumpStackFrames(
00920     PULONG_PTR Frame,
00921     ULONG FrameCount
00922 );
00923 
00924 VOID
00925 NTAPI
00926 KeSetSystemTime(
00927     IN PLARGE_INTEGER NewSystemTime,
00928     OUT PLARGE_INTEGER OldSystemTime,
00929     IN BOOLEAN FixInterruptTime,
00930     IN PLARGE_INTEGER HalTime
00931 );
00932 
00933 ULONG
00934 NTAPI
00935 KeV86Exception(
00936     ULONG ExceptionNr,
00937     PKTRAP_FRAME Tf,
00938     ULONG address
00939 );
00940 
00941 VOID
00942 NTAPI
00943 KiStartUnexpectedRange(
00944     VOID
00945 );
00946 
00947 VOID
00948 NTAPI
00949 KiEndUnexpectedRange(
00950     VOID
00951 );
00952 
00953 NTSTATUS
00954 NTAPI
00955 KiRaiseException(
00956     IN PEXCEPTION_RECORD ExceptionRecord,
00957     IN PCONTEXT Context,
00958     IN PKEXCEPTION_FRAME ExceptionFrame,
00959     IN PKTRAP_FRAME TrapFrame,
00960     IN BOOLEAN SearchFrames
00961 );
00962 
00963 NTSTATUS
00964 NTAPI
00965 KiContinue(
00966     IN PCONTEXT Context,
00967     IN PKEXCEPTION_FRAME ExceptionFrame,
00968     IN PKTRAP_FRAME TrapFrame
00969 );
00970 
00971 DECLSPEC_NORETURN
00972 VOID
00973 FASTCALL
00974 KiServiceExit(
00975     IN PKTRAP_FRAME TrapFrame,
00976     IN NTSTATUS Status
00977 );
00978 
00979 DECLSPEC_NORETURN
00980 VOID
00981 FASTCALL
00982 KiServiceExit2(
00983     IN PKTRAP_FRAME TrapFrame
00984 );
00985 
00986 #ifndef _M_AMD64
00987 VOID
00988 FASTCALL
00989 KiInterruptDispatch(
00990     IN PKTRAP_FRAME TrapFrame,
00991     IN PKINTERRUPT Interrupt
00992 );
00993 #endif
00994 
00995 VOID
00996 FASTCALL
00997 KiChainedDispatch(
00998     IN PKTRAP_FRAME TrapFrame,
00999     IN PKINTERRUPT Interrupt
01000 );
01001 
01002 VOID
01003 NTAPI
01004 KiInitializeMachineType(
01005     VOID
01006 );
01007 
01008 VOID
01009 NTAPI
01010 KiSetupStackAndInitializeKernel(
01011     IN PKPROCESS InitProcess,
01012     IN PKTHREAD InitThread,
01013     IN PVOID IdleStack,
01014     IN PKPRCB Prcb,
01015     IN CCHAR Number,
01016     IN PLOADER_PARAMETER_BLOCK LoaderBlock
01017 );
01018 
01019 VOID
01020 NTAPI
01021 KiInitSpinLocks(
01022     IN PKPRCB Prcb,
01023     IN CCHAR Number
01024 );
01025 
01026 LARGE_INTEGER
01027 NTAPI
01028 KiComputeReciprocal(
01029     IN LONG Divisor,
01030     OUT PUCHAR Shift
01031 );
01032 
01033 VOID
01034 NTAPI
01035 KiInitSystem(
01036     VOID
01037 );
01038 
01039 VOID
01040 FASTCALL
01041 KiInsertQueueApc(
01042     IN PKAPC Apc,
01043     IN KPRIORITY PriorityBoost
01044 );
01045 
01046 NTSTATUS
01047 NTAPI
01048 KiCallUserMode(
01049     IN PVOID *OutputBuffer,
01050     IN PULONG OutputLength
01051 );
01052 
01053 VOID
01054 NTAPI
01055 KiInitMachineDependent(VOID);
01056 
01057 BOOLEAN
01058 NTAPI
01059 KeFreezeExecution(IN PKTRAP_FRAME TrapFrame,
01060                   IN PKEXCEPTION_FRAME ExceptionFrame);
01061 
01062 VOID
01063 NTAPI
01064 KeThawExecution(IN BOOLEAN Enable);
01065 
01066 VOID
01067 FASTCALL
01068 KeAcquireQueuedSpinLockAtDpcLevel(
01069     IN OUT PKSPIN_LOCK_QUEUE LockQueue
01070 );
01071 
01072 VOID
01073 FASTCALL
01074 KeReleaseQueuedSpinLockFromDpcLevel(
01075     IN OUT PKSPIN_LOCK_QUEUE LockQueue
01076 );
01077 
01078 VOID
01079 NTAPI
01080 KiRestoreProcessorControlState(
01081     IN PKPROCESSOR_STATE ProcessorState
01082 );
01083 
01084 VOID
01085 NTAPI
01086 KiSaveProcessorControlState(
01087     OUT PKPROCESSOR_STATE ProcessorState
01088 );
01089 
01090 VOID
01091 NTAPI
01092 KiSaveProcessorState(
01093     IN PKTRAP_FRAME TrapFrame,
01094     IN PKEXCEPTION_FRAME ExceptionFrame
01095 );
01096 
01097 VOID
01098 FASTCALL
01099 KiRetireDpcList(
01100     IN PKPRCB Prcb
01101 );
01102 
01103 VOID
01104 NTAPI
01105 KiQuantumEnd(
01106     VOID
01107 );
01108 
01109 VOID
01110 FASTCALL
01111 KiIdleLoop(
01112     VOID
01113 );
01114 
01115 DECLSPEC_NORETURN
01116 VOID
01117 FASTCALL
01118 KiSystemFatalException(
01119     IN ULONG ExceptionCode,
01120     IN PKTRAP_FRAME TrapFrame
01121 );
01122 
01123 PVOID
01124 NTAPI
01125 KiPcToFileHeader(IN PVOID Eip,
01126                  OUT PLDR_DATA_TABLE_ENTRY *LdrEntry,
01127                  IN BOOLEAN DriversOnly,
01128                  OUT PBOOLEAN InKernel);
01129 
01130 PVOID
01131 NTAPI
01132 KiRosPcToUserFileHeader(IN PVOID Eip,
01133                         OUT PLDR_DATA_TABLE_ENTRY *LdrEntry);
01134 
01135 PCHAR
01136 NTAPI
01137 KeBugCheckUnicodeToAnsi(
01138     IN PUNICODE_STRING Unicode,
01139     OUT PCHAR Ansi,
01140     IN ULONG Length
01141 );
01142 
01143 #include "ke_x.h"

Generated on Sun May 27 2012 04:33:22 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.