diff --git a/reactos/include/ddk/exfuncs.h b/reactos/include/ddk/exfuncs.h index 3dda28ba517..fd126c305df 100644 --- a/reactos/include/ddk/exfuncs.h +++ b/reactos/include/ddk/exfuncs.h @@ -46,6 +46,32 @@ ExAcquireResourceSharedLite ( BOOLEAN Wait ); BOOLEAN +FASTCALL +ExAcquireRundownProtection ( + PVOID ProcessRundownProtect + ); +BOOLEAN +FASTCALL +ExAcquireRundownProtectionEx ( + IN PVOID ProcessRundownProtect, + IN PVOID Unknown + ); +PVOID +FASTCALL +ExfAcquirePushLockExclusive ( + PVOID Lock + ); +PVOID +FASTCALL +ExfAcquirePushLockShared ( + PVOID Lock + ); +PVOID +FASTCALL +ExfReleasePushLock ( + PVOID Lock + ); +BOOLEAN STDCALL ExAcquireSharedStarveExclusive ( PERESOURCE Resource, @@ -120,6 +146,15 @@ ExAllocatePoolWithTag ( IN ULONG Tag ); +PVOID +NTAPI +ExAllocatePoolWithTagPriority( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag, + IN EX_POOL_PRIORITY Priority + ); + VOID STDCALL ExConvertExclusiveToSharedLite ( @@ -152,6 +187,15 @@ ExDisableResourceBoostLite ( PERESOURCE Resource ); +VOID +STDCALL +ExEnumHandleTable ( + PULONG HandleTable, + PVOID Callback, + PVOID Param, + PHANDLE Handle OPTIONAL + ); + NTSTATUS STDCALL ExExtendZone ( @@ -199,6 +243,28 @@ ExFreePool ( #define ExGetCurrentResourceThread() \ ((ERESOURCE_THREAD)KeGetCurrentThread()) +LONGLONG +FASTCALL +ExfInterlockedCompareExchange64( + IN OUT LONGLONG volatile *Destination, + IN PLONGLONG ExChange, + IN PLONGLONG Comperand + ); + +VOID +STDCALL +ExGetCurrentProcessorCounts ( + PVOID IdleThreadTime, + PVOID SystemTime, + PVOID Number + ); + +VOID +STDCALL +ExGetCurrentProcessorCpuUsage ( + PVOID RetVal + ); + ULONG STDCALL ExGetExclusiveWaiterCount ( @@ -242,6 +308,12 @@ ExInitializeResourceLite ( PERESOURCE Resource ); +VOID +FASTCALL +ExInitializeRundownProtection ( + PVOID ProcessRundown + ); + /* * VOID * ExInitializeSListHead ( @@ -333,6 +405,7 @@ ExInterlockedDecrementLong ( PLONG Addend, PKSPIN_LOCK Lock ); + ULONG STDCALL ExInterlockedExchangeUlong ( @@ -340,6 +413,7 @@ ExInterlockedExchangeUlong ( ULONG Value, PKSPIN_LOCK Lock ); + NTSTATUS STDCALL ExInterlockedExtendZone ( @@ -349,6 +423,12 @@ ExInterlockedExtendZone ( PKSPIN_LOCK Lock ); +PSLIST_ENTRY +FASTCALL +ExInterlockedFlushSList ( + IN PSLIST_HEADER ListHead + ); + /* * PVOID * ExInterlockedFreeToZone ( @@ -498,6 +578,14 @@ ExQueueWorkItem ( PWORK_QUEUE_ITEM WorkItem, WORK_QUEUE_TYPE QueueType ); + +SIZE_T +STDCALL +ExQueryPoolBlockSize ( + IN PVOID PoolBlock, + OUT PBOOLEAN QuotaCharged + ); + VOID STDCALL ExRaiseAccessViolation ( @@ -513,6 +601,21 @@ STDCALL ExRaiseStatus ( NTSTATUS Status ); +VOID +STDCALL +ExRaiseException ( + PEXCEPTION_RECORD pExcptRec + ); +VOID +STDCALL +ExRaiseHardError ( + IN NTSTATUS ErrorStatus, + IN ULONG NumberOfParameters, + IN PUNICODE_STRING UnicodeStringParameterMask OPTIONAL, + IN PVOID *Parameters, + IN HARDERROR_RESPONSE_OPTION ResponseOption, + OUT PHARDERROR_RESPONSE Response + ); PVOID STDCALL @@ -527,6 +630,12 @@ STDCALL ExReinitializeResourceLite ( PERESOURCE Resource ); +VOID +FASTCALL +ExReInitializeRundownProtection ( + PVOID ProcessRundown + ); + /* ReactOS Specific: begin */ VOID FASTCALL @@ -566,7 +675,22 @@ ExReleaseResourceForThreadLite ( PERESOURCE Resource, ERESOURCE_THREAD ResourceThreadId ); - +BOOLEAN +FASTCALL +ExReleaseRundownProtection ( + IN PVOID ProcessRundownProtect + ); +BOOLEAN +FASTCALL +ExReleaseRundownProtectionEx ( + IN PVOID ProcessRundownProtect, + IN PVOID Unknown + ); +VOID +FASTCALL +ExRundownCompleted ( + PVOID ProcessRundown + ); VOID STDCALL ExSetResourceOwnerPointer ( @@ -574,6 +698,23 @@ ExSetResourceOwnerPointer ( IN PVOID OwnerPointer ); +VOID +STDCALL +ExSetTimerResolution ( + IN ULONG DesiredTime, + IN BOOLEAN SetResolution + ); + +STDCALL +BOOLEAN +ExVerifySuite( + SUITE_TYPE SuiteType + ); + +BOOLEAN +STDCALL +ExSystemExceptionFilter(); + VOID STDCALL ExSystemTimeToLocalTime ( @@ -599,6 +740,20 @@ ExUnregisterCallback ( IN PVOID CallbackRegistration ); +typedef GUID UUID; + +STDCALL +NTSTATUS +ExUuidCreate( + OUT UUID *Uuid + ); + +PVOID +FASTCALL +ExWaitForRundownProtectionRelease ( + PVOID ProcessRundownProtect + ); + PSLIST_ENTRY FASTCALL InterlockedPopEntrySList ( diff --git a/reactos/include/ddk/extypes.h b/reactos/include/ddk/extypes.h index 9d9f82468a7..f335dc8bf96 100644 --- a/reactos/include/ddk/extypes.h +++ b/reactos/include/ddk/extypes.h @@ -1,4 +1,4 @@ -/* $Id: extypes.h,v 1.21 2003/11/14 15:19:35 ekohl Exp $ */ +/* $Id: extypes.h,v 1.22 2004/06/23 21:02:35 ion Exp $ */ #ifndef __INCLUDE_DDK_EXTYPES_H #define __INCLUDE_DDK_EXTYPES_H @@ -137,6 +137,55 @@ typedef struct _PAGED_LOOKASIDE_LIST FAST_MUTEX Obsoleted; } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST; +typedef enum _EX_POOL_PRIORITY { + LowPoolPriority, + LowPoolPrioritySpecialPoolOverrun = 8, + LowPoolPrioritySpecialPoolUnderrun = 9, + NormalPoolPriority = 16, + NormalPoolPrioritySpecialPoolOverrun = 24, + NormalPoolPrioritySpecialPoolUnderrun = 25, + HighPoolPriority = 32, + HighPoolPrioritySpecialPoolOverrun = 40, + HighPoolPrioritySpecialPoolUnderrun = 41 + + } EX_POOL_PRIORITY; + +typedef enum _SUITE_TYPE { + SmallBusiness, + Enterprise, + BackOffice, + CommunicationServer, + TerminalServer, + SmallBusinessRestricted, + EmbeddedNT, + DataCenter, + SingleUserTS, + Personal, + Blade, + MaxSuiteType +} SUITE_TYPE; + +typedef enum _HARDERROR_RESPONSE_OPTION { + OptionAbortRetryIgnore, + OptionOk, + OptionOkCancel, + OptionRetryCancel, + OptionYesNo, + OptionYesNoCancel, + OptionShutdownSystem +} HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION; + +typedef enum _HARDERROR_RESPONSE { + ResponseReturnToCaller, + ResponseNotHandled, + ResponseAbort, + ResponseCancel, + ResponseIgnore, + ResponseNo, + ResponseOk, + ResponseRetry, + ResponseYes +} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE; /* callback object (not functional in NT4)*/ diff --git a/reactos/ntoskrnl/include/internal/ke.h b/reactos/ntoskrnl/include/internal/ke.h index c474b9f1f42..49d122d2ae1 100644 --- a/reactos/ntoskrnl/include/internal/ke.h +++ b/reactos/ntoskrnl/include/internal/ke.h @@ -53,6 +53,34 @@ DbgBreakPointNoBugCheck(VOID); VOID STDCALL KeRescheduleThread(); + +STDCALL +VOID +KeProfileInterrupt( + PKTRAP_FRAME TrapFrame +); + +STDCALL +VOID +KeProfileInterruptWithSource( + IN PKTRAP_FRAME TrapFrame, + IN KPROFILE_SOURCE Source +); + +/*STDCALL +BOOLEAN +KiIpiServiceRoutine( + IN PKTRAP_FRAME TrapFrame, + IN PKEXCEPTION_FRAME ExceptionFrame +);*/ + +STDCALL +VOID +KeUpdateSystemTime( + IN PKTRAP_FRAME TrapFrame, + IN ULONG Increment +); + VOID KiUpdateSystemTime (KIRQL oldIrql, ULONG Eip); KIRQL KeAcquireDispatcherDatabaseLock(VOID); @@ -71,17 +99,13 @@ VOID KeDumpStackFrames(PULONG Frame); BOOLEAN KiTestAlert(VOID); VOID KeRemoveAllWaitsThread(struct _ETHREAD* Thread, NTSTATUS WaitStatus, BOOL Unblock); PULONG KeGetStackTopThread(struct _ETHREAD* Thread); -VOID KeContextToTrapFrame(PCONTEXT Context, - PKTRAP_FRAME TrapFrame); +VOID KeContextToTrapFrame(PCONTEXT Context, PKTRAP_FRAME TrapFrame); VOID KiDeliverNormalApc(VOID); BOOLEAN STDCALL KeRemoveQueueApc (PKAPC Apc); PLIST_ENTRY STDCALL KeRundownQueue(IN PKQUEUE Queue); -NTSTATUS STDCALL -KeRaiseUserException(IN NTSTATUS ExceptionCode); - /* INITIALIZATION FUNCTIONS *************************************************/ VOID KeInitExceptions(VOID); @@ -138,6 +162,12 @@ KiDumpTrapFrame(PKTRAP_FRAME Tf, ULONG ExceptionNr, ULONG cr2); VOID KiUpdateProcessThreadTime(VOID); +STDCALL +VOID +KeUpdateRunTime( + IN PKTRAP_FRAME TrapFrame +); + #endif /* not __ASM__ */ #define MAXIMUM_PROCESSORS 32 diff --git a/reactos/ntoskrnl/include/internal/ps.h b/reactos/ntoskrnl/include/internal/ps.h index ad4d3799c80..78247d95e6a 100644 --- a/reactos/ntoskrnl/include/internal/ps.h +++ b/reactos/ntoskrnl/include/internal/ps.h @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: ps.h,v 1.58 2004/03/14 18:11:25 ekohl Exp $ +/* $Id: ps.h,v 1.59 2004/06/23 21:02:16 ion Exp $ * * FILE: ntoskrnl/ke/kthread.c * PURPOSE: Process manager definitions @@ -63,7 +63,7 @@ typedef struct _KAPC_STATE UCHAR KernelApcInProgress; UCHAR KernelApcPending; USHORT UserApcPending; -} KAPC_STATE, *PKAPC_STATE; +} KAPC_STATE, *PKAPC_STATE, *__restrict PRKAPC_STATE; #include @@ -505,6 +505,20 @@ NTSTATUS PsResumeThread(PETHREAD Thread, PULONG PreviousCount); VOID KeInitializeThread(PKPROCESS Process, PKTHREAD Thread, BOOLEAN First); NTSTATUS KeReleaseThread(PETHREAD Thread); + +STDCALL +VOID +KeStackAttachProcess ( + IN PKPROCESS Process, + OUT PRKAPC_STATE ApcState + ); + +STDCALL +VOID +KeUnstackDetachProcess ( + IN PRKAPC_STATE ApcState + ); + VOID STDCALL PiDeleteProcess(PVOID ObjectBody); VOID PsReapThreads(VOID); VOID PsUnfreezeOtherThread(PETHREAD Thread);