From 19e66992de706ca901f4a27c96d95d1e95c687da Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Mon, 12 Jun 2000 14:57:10 +0000 Subject: [PATCH] Added cache manager prototypes. Fixed Io macros. Fixed and exported more hal functions. svn path=/trunk/; revision=1180 --- reactos/include/ddk/ccfuncs.h | 320 +++++++++++++++++++++++++++- reactos/include/ddk/cctypes.h | 72 +++++++ reactos/include/ddk/iofuncs.h | 240 +++++++++++++++++---- reactos/include/internal/hal/ddk.h | 102 ++++++++- reactos/include/internal/i386/hal.h | 1 + reactos/ntoskrnl/hal/x86/dma.c | 64 ++++-- reactos/ntoskrnl/hal/x86/irq.c | 19 +- reactos/ntoskrnl/hal/x86/irqhand.c | 4 +- reactos/ntoskrnl/io/cancel.c | 9 +- reactos/ntoskrnl/io/dpc.c | 3 +- reactos/ntoskrnl/io/error.c | 17 +- reactos/ntoskrnl/io/ioctrl.c | 8 +- reactos/ntoskrnl/io/irp.c | 134 +----------- reactos/ntoskrnl/io/process.c | 5 +- reactos/ntoskrnl/ntoskrnl.def | 65 +++--- reactos/ntoskrnl/ntoskrnl.edf | 63 +++--- 16 files changed, 839 insertions(+), 287 deletions(-) diff --git a/reactos/include/ddk/ccfuncs.h b/reactos/include/ddk/ccfuncs.h index 7a7f67493e3..4a7a920cf46 100644 --- a/reactos/include/ddk/ccfuncs.h +++ b/reactos/include/ddk/ccfuncs.h @@ -1,10 +1,328 @@ + #ifndef _NTOS_CCFUNCS_H #define _NTOS_CCFUNCS_H -/* $Id: ccfuncs.h,v 1.4 2000/03/05 19:17:37 ea Exp $ */ +/* $Id: ccfuncs.h,v 1.5 2000/06/12 14:51:26 ekohl Exp $ */ + +/* exported variables */ +/* +CcFastMdlReadWait +CcFastReadNotPossible +CcFastReadWait +*/ + +BOOLEAN +STDCALL +CcCanIWrite ( + IN PFILE_OBJECT FileObject, + IN ULONG BytesToWrite, + IN BOOLEAN Wait, + IN BOOLEAN Retrying + ); + +BOOLEAN +STDCALL +CcCopyRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus + ); + +BOOLEAN +STDCALL +CcCopyWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN PVOID Buffer + ); + +VOID +STDCALL +CcDeferWrite ( + IN PFILE_OBJECT FileObject, + IN PCC_POST_DEFERRED_WRITE PostRoutine, + IN PVOID Context1, + IN PVOID Context2, + IN ULONG BytesToWrite, + IN BOOLEAN Retrying + ); + +BOOLEAN +STDCALL +CcFastCopyRead ( + IN PFILE_OBJECT FileObject, + IN ULONG FileOffset, + IN ULONG Length, + IN ULONG PageCount, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus + ); + +BOOLEAN +STDCALL +CcFastCopyWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN PVOID Buffer + ); + +VOID +STDCALL +CcFlushCache ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN PLARGE_INTEGER FileOffset OPTIONAL, + IN ULONG Length, + OUT PIO_STATUS_BLOCK IoStatus OPTIONAL + ); + +LARGE_INTEGER +STDCALL +CcGetDirtyPages ( + IN PVOID LogHandle, + IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine, + IN PVOID Context1, + IN PVOID Context2 + ); + +PFILE_OBJECT +STDCALL +CcGetFileObjectFromBcb ( + IN PVOID Bcb + ); + +PFILE_OBJECT +STDCALL +CcGetFileObjectFromSectionPtrs ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer + ); + +LARGE_INTEGER +STDCALL +CcGetLsnForFileObject ( + IN PFILE_OBJECT FileObject, + OUT PLARGE_INTEGER OldestLsn OPTIONAL + ); + +VOID +STDCALL +CcInitializeCacheMap ( + IN PFILE_OBJECT FileObject, + IN PCC_FILE_SIZES FileSizes, + IN BOOLEAN PinAccess, + IN PCACHE_MANAGER_CALLBACKS CallBacks, + IN PVOID LazyWriterContext + ); + +BOOLEAN +STDCALL +CcIsThereDirtyData ( + IN PVPB Vpb + ); + +BOOLEAN +STDCALL +CcMapData ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + OUT PVOID * Bcb, + OUT PVOID * Buffer + ); + +VOID +STDCALL +CcMdlRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + OUT PMDL * MdlChain, + OUT PIO_STATUS_BLOCK IoStatus + ); + VOID STDCALL CcMdlReadComplete ( IN PFILE_OBJECT FileObject, IN PMDL MdlChain ); + +VOID +STDCALL +CcMdlWriteComplete ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain + ); + +BOOLEAN +STDCALL +CcPinMappedData ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + OUT PVOID * Bcb + ); + +BOOLEAN +STDCALL +CcPinRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + OUT PVOID * Bcb, + OUT PVOID * Buffer + ); + +VOID +STDCALL +CcPrepareMdlWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + OUT PMDL * MdlChain, + OUT PIO_STATUS_BLOCK IoStatus + ); + +BOOLEAN +STDCALL +CcPreparePinWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Zero, + IN BOOLEAN Wait, + OUT PVOID * Bcb, + OUT PVOID * Buffer + ); + +BOOLEAN +STDCALL +CcPurgeCacheSection ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN PLARGE_INTEGER FileOffset OPTIONAL, + IN ULONG Length, + IN BOOLEAN UninitializeCacheMaps + ); + +#define CcReadAhead(FO,FOFF,LEN) \ +{ \ + if ((LEN) >= 256) \ + { \ + CcScheduleReadAhead((FO),(FOFF),(LEN)); \ + } \ +} + +VOID +STDCALL +CcRepinBcb ( + IN PVOID Bcb + ); + +VOID +STDCALL +CcScheduleReadAhead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length + ); + +VOID +STDCALL +CcSetAdditionalCacheAttributes ( + IN PFILE_OBJECT FileObject, + IN BOOLEAN DisableReadAhead, + IN BOOLEAN DisableWriteBehind + ); + +VOID +STDCALL +CcSetBcbOwnerPointer ( + IN PVOID Bcb, + IN PVOID Owner + ); + +VOID +STDCALL +CcSetDirtyPageThreshold ( + IN PFILE_OBJECT FileObject, + IN ULONG DirtyPageThreshold + ); + +VOID +STDCALL +CcSetDirtyPinnedData ( + IN PVOID Bcb, + IN PLARGE_INTEGER Lsn OPTIONAL + ); + +VOID +STDCALL +CcSetFileSizes ( + IN PFILE_OBJECT FileObject, + IN PCC_FILE_SIZES FileSizes + ); + +VOID +STDCALL +CcSetLogHandleForFile ( + IN PFILE_OBJECT FileObject, + IN PVOID LogHandle, + IN PFLUSH_TO_LSN FlushToLsnRoutine + ); + +VOID +STDCALL +CcSetReadAheadGranularity ( + IN PFILE_OBJECT FileObject, + IN ULONG Granularity + ); + +BOOLEAN +STDCALL +CcUninitializeCacheMap ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER TruncateSize OPTIONAL, + IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL + ); + +VOID +STDCALL +CcUnpinData ( + IN PVOID Bcb + ); + +VOID +STDCALL +CcUnpinDataForThread ( + IN PVOID Bcb, + IN ERESOURCE_THREAD ResourceThreadId + ); + +VOID +STDCALL +CcUnpinRepinnedBcb ( + IN PVOID Bcb, + IN BOOLEAN WriteThrough, + IN PIO_STATUS_BLOCK IoStatus + ); + +BOOLEAN +STDCALL +CcZeroData ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER StartOffset, + IN PLARGE_INTEGER EndOffset, + IN BOOLEAN Wait + ); + #endif + +/* EOF */ \ No newline at end of file diff --git a/reactos/include/ddk/cctypes.h b/reactos/include/ddk/cctypes.h index 148ed6b4a1d..7dc8ce3a5e9 100644 --- a/reactos/include/ddk/cctypes.h +++ b/reactos/include/ddk/cctypes.h @@ -1,4 +1,76 @@ #ifndef __INCLUDE_DDK_CCTYPES_H #define __INCLUDE_DDK_CCTYPES_H +typedef struct _CACHE_UNINITIALIZE_EVENT +{ + struct _CACHE_UNINITIALIZE_EVENT * Next; + KEVENT Event; +} CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT; + +typedef struct _CC_FILE_SIZES +{ + LARGE_INTEGER AllocationSize; + LARGE_INTEGER FileSize; + LARGE_INTEGER ValidDataLength; +} CC_FILE_SIZES, *PCC_FILE_SIZES; + + +typedef VOID (*PCC_POST_DEFERRED_WRITE)(IN PVOID Context1, IN PVOID Context2); + +typedef struct _PUBLIC_BCB +{ + CSHORT NodeTypeCode; + CSHORT NodeByteSize; + ULONG MappedLength; + LARGE_INTEGER MappedFileOffset; +} PUBLIC_BCB, *PPUBLIC_BCB; + +typedef VOID (*PDIRTY_PAGE_ROUTINE) ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN PLARGE_INTEGER OldestLsn, + IN PLARGE_INTEGER NewestLsn, + IN PVOID Context1, + IN PVOID Context2 +); + +typedef BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE) ( + IN PVOID Context, + IN BOOLEAN Wait +); + +typedef VOID (*PRELEASE_FROM_LAZY_WRITE) ( + IN PVOID Context +); + +typedef BOOLEAN (*PACQUIRE_FOR_READ_AHEAD) ( + IN PVOID Context, + IN BOOLEAN Wait +); + +typedef VOID (*PRELEASE_FROM_READ_AHEAD) ( + IN PVOID Context +); + +typedef struct _CACHE_MANAGER_CALLBACKS +{ + PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite; + PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite; + PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead; + PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead; +} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS; + +/* this is already defined in iotypes.h */ +/* +typedef struct _SECTION_OBJECT_POINTERS +{ + PVOID DataSectionObject; + PVOID SharedCacheMap; + PVOID ImageSectionObject; +} SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS; +*/ + +typedef VOID (*PFLUSH_TO_LSN)(IN PVOID LogHandle, IN LARGE_INTEGER Lsn); + #endif /* __INCLUDE_DDK_CCTYPES_H */ diff --git a/reactos/include/ddk/iofuncs.h b/reactos/include/ddk/iofuncs.h index 6409a52077f..78c1e41dc1d 100644 --- a/reactos/include/ddk/iofuncs.h +++ b/reactos/include/ddk/iofuncs.h @@ -1,6 +1,6 @@ #ifndef _INCLUDE_DDK_IOFUNCS_H #define _INCLUDE_DDK_IOFUNCS_H -/* $Id: iofuncs.h,v 1.12 2000/06/09 20:02:05 ekohl Exp $ */ +/* $Id: iofuncs.h,v 1.13 2000/06/12 14:51:26 ekohl Exp $ */ /* --- EXPORTED BY NTOSKRNL --- */ @@ -75,27 +75,27 @@ IoAllocateAdapterChannel ( /********************************************************************** * NAME EXPORTED * IoAllocateController@16 - * + * * DESCRIPTION - * Sets up a call to a driver supplied controller object as + * Sets up a call to a driver supplied controller object as * soon as it is available. - * + * * ARGUMENTS * ControllerObject * Driver created controller object; - * + * * DeviceObject * Target device; - * + * * ExecutionObject * Routine to be called; - * + * * Context * Driver determined context to be based to the * routine. * * RETURN VALUE - * None. + * None. * * REVISIONS * @@ -113,17 +113,17 @@ IoAllocateController ( * IoAllocateErrorLogEntry@8 * * DESCRIPTION - * Allocates an error log packet. - * + * Allocates an error log packet. + * * ARGUMENTS * IoObject * Object which found the error; * * EntrySize * Size in bytes of the packet to be allocated. - * + * * RETURN VALUE - * On success, a pointer to the allocated packet. + * On success, a pointer to the allocated packet. * On failure, it returns NULL. */ PVOID @@ -191,13 +191,22 @@ IoAllocateMdl ( PIRP Irp ); -/* - * FUNCTION: Creates a symbolic link between the ARC name of a physical - * device and the name of the corresponding device object - * ARGUMENTS: - * ArcName = ARC name of the device - * DeviceName = Name of the device object - * NOTES: +/********************************************************************** + * NAME MACRO + * IoAssignArcName + * + * DESCRIPTION + * Creates a symbolic link between the ARC name of a physical + * device and the name of the corresponding device object + * + * ARGUMENTS + * ArcName + * ARC name of the device + * + * DeviceName + * Name of the device object + * + * NOTES * VOID * IoAssignArcName ( * PUNICODE_STRING ArcName, @@ -209,28 +218,28 @@ IoAllocateMdl ( /********************************************************************** * NAME EXPORTED - * IoAssignResources@24 - * + * IoAssignResources@24 + * * DESCRIPTION - * Takes a list of requested hardware resources and allocates - * them. - * + * Takes a list of requested hardware resources and allocates + * them. + * * ARGUMENTS * RegisterPath * ? - * + * * DriverClassName * ? - * + * * DriverObject * Driver object passed to the DriverEntry routine; - * + * * DeviceObject * ? - * + * * RequestedResources * List of resources. - * + * * RETURN VALUE */ NTSTATUS @@ -589,6 +598,26 @@ STDCALL IoGetConfigurationInformation ( VOID ); + +/* + * FUNCTION: Gets a pointer to the callers location in the I/O stack in + * the given IRP + * ARGUMENTS: + * Irp = Points to the IRP + * RETURNS: A pointer to the stack location + * + * NOTES: + * PIO_STACK_LOCATION + * IoGetCurrentIrpStackLocation (PIRP Irp) + */ +#define IoGetCurrentIrpStackLocation(Irp) \ + (&(Irp)->Stack[(ULONG)((Irp)->CurrentLocation)]) + +/* original macro */ +/* +#define IoGetCurrentIrpStackLocation(Irp) \ + ((Irp)->Tail.Overlay.CurrentStackLocation) +*/ PEPROCESS STDCALL IoGetCurrentProcess ( @@ -612,11 +641,36 @@ STDCALL IoGetFileObjectGenericMapping ( VOID ); + +#define IoGetFunctionCodeFromCtlCode(ControlCode) \ + ((ControlCode >> 2) & 0x00000FFF) + PVOID STDCALL IoGetInitialStack ( VOID ); + +/* + * FUNCTION: Gives a higher level driver access to the next lower driver's + * I/O stack location + * ARGUMENTS: + * Irp = points to the irp + * RETURNS: A pointer to the stack location + * + * NOTES: + * PIO_STACK_LOCATION + * IoGetNextIrpStackLocation (PIRP Irp) + */ +#define IoGetNextIrpStackLocation(Irp) \ + (&(Irp)->Stack[(Irp)->CurrentLocation-1]) + +/* original macro */ +/* +#define IoGetNextIrpStackLocation(Irp) \ + ((Irp)->Tail.Overlay.CurrentStackLocation-1) +*/ + PDEVICE_OBJECT STDCALL IoGetRelatedDeviceObject ( @@ -638,6 +692,12 @@ STDCALL IoGetTopLevelIrp ( VOID ); + +#define IoInitializeDpcRequest(DeviceObject, DpcRoutine) \ + (KeInitializeDpc(&(DeviceObject)->Dpc, \ + (PKDEFERRED_ROUTINE)(DpcRoutine), \ + (DeviceObject))) + /* * FUNCTION: Initalizes an irp allocated by the caller * ARGUMENTS: @@ -659,6 +719,21 @@ IoInitializeTimer ( PIO_TIMER_ROUTINE TimerRoutine, PVOID Context ); + +/* + * NOTES: + * BOOLEAN + * IsErrorUserInduced (NTSTATUS Status) + */ +#define IoIsErrorUserInduced(Status) \ + ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \ + ((Status) == STATUS_IO_TIMEOUT) || \ + ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \ + ((Status) == STATUS_NO_MEDIA_IN_DRIVE) || \ + ((Status) == STATUS_VERIFY_REQUIRED) || \ + ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \ + ((Status) == STATUS_WRONG_VOLUME))) + BOOLEAN STDCALL IoIsOperationSynchronous ( @@ -675,6 +750,20 @@ IoMakeAssociatedIrp ( PIRP Irp, CCHAR StackSize ); + +/* + * FUNCTION: Marks the specified irp, indicating further processing will + * be required by other driver routines + * ARGUMENTS: + * Irp = Irp to mark + * NOTES: + * VOID + * IoMarkIrpPending (PIRP Irp) + */ +#define IoMarkIrpPending(Irp) \ + (IoGetCurrentIrpStackLocation(Irp)->Control |= SL_PENDING_RETURNED) + + NTSTATUS STDCALL IoOpenDeviceInstanceKey ( @@ -684,10 +773,14 @@ IoOpenDeviceInstanceKey ( DWORD Unknown3, DWORD Unknown4 ); -NTSTATUS STDCALL IoPageRead (PFILE_OBJECT FileObject, - PMDL Mdl, - PLARGE_INTEGER Offset, - PIO_STATUS_BLOCK StatusBlock); +NTSTATUS +STDCALL +IoPageRead ( + PFILE_OBJECT FileObject, + PMDL Mdl, + PLARGE_INTEGER Offset, + PIO_STATUS_BLOCK StatusBlock + ); NTSTATUS STDCALL IoQueryDeviceDescription ( @@ -806,6 +899,30 @@ IoReportResourceUsage ( BOOLEAN OverrideConflict, PBOOLEAN ConflictDetected ); + +#define IoRequestDpc(DeviceObject, Irp, Context) \ + (KeInsertQueueDpc(&(DeviceObject)->Dpc,(Irp),(Context))) + +#define IoSetCancelRoutine(Irp, NewCancelRoutine) \ + ((PDRIVER_CANCEL)InterlockedExchange((PULONG)&(Irp)->CancelRoutine, \ + (ULONG)(NewCancelRoutine))); + +#define IoSetCompletionRoutine (Irp,Routine,Context,Success,Error,Cancel) \ + { \ + PIO_STACK_LOCATION param; \ + assert((Success)||(Error)||(Cancel)?(Routine)!=NULL:TRUE); \ + param = IoGetNextIrpStackLocation((Irp)); \ + param->CompletionRoutine=(Routine); \ + param->CompletionContext=(Context); \ + param->Control = 0; \ + if ((Success)) \ + param->Control = SL_INVOKE_ON_SUCCESS; \ + if ((Error)) \ + param->Control |= SL_INVOKE_ON_ERROR; \ + if ((Cancel)) \ + param->Control |= SL_INVOKE_ON_CANCEL; \ + } + VOID STDCALL IoSetDeviceToVerify ( @@ -826,6 +943,13 @@ IoSetInformation ( IN ULONG Length, OUT PVOID FileInformation ); + +#define IoSetNextIrpStackLocation(Irp) \ +{ \ + (Irp)->CurrentLocation--; \ + (Irp)->Tail.Overlay.CurrentStackLocation--; \ +} + VOID STDCALL IoSetShareAccess ( @@ -844,6 +968,24 @@ STDCALL IoSetTopLevelIrp ( IN PIRP Irp ); + +/* + * FUNCTION: Determines the size of an IRP + * ARGUMENTS: + * StackSize = number of stack locations in the IRP + * RETURNS: The size of the IRP in bytes +USHORT +IoSizeOfIrp (CCHAR StackSize) + */ +#define IoSizeOfIrp(StackSize) \ + ((USHORT)(sizeof(IRP)+(((StackSize)-1)*sizeof(IO_STACK_LOCATION)))) + +/* original macro */ +/* +#define IoSizeOfIrp(StackSize) \ + ((USHORT)(sizeof(IRP)+((StackSize)*sizeof(IO_STACK_LOCATION)))) +*/ + /* * FUNCTION: Dequeues the next IRP from the device's associated queue and * calls its StartIo routine @@ -860,7 +1002,7 @@ IoStartNextPacket ( VOID STDCALL IoStartNextPacketByKey ( - PDEVICE_OBJECT DeviceObject, + PDEVICE_OBJECT DeviceObject, BOOLEAN Cancelable, ULONG Key ); @@ -1051,30 +1193,40 @@ IoWritePartitionTable ( * FUNCTION: Returns a pointer to the callers * stack location in the irp */ +/* PIO_STACK_LOCATION IoGetCurrentIrpStackLocation ( IRP * irp ); +*/ +/* ULONG IoGetFunctionCodeFromCtlCode ( ULONG ControlCode ); +*/ /* * FUNCTION: */ +/* PIO_STACK_LOCATION IoGetNextIrpStackLocation ( IRP * irp ); +*/ +/* VOID IoInitializeDpcRequest ( PDEVICE_OBJECT DeviceObject, PIO_DPC_ROUTINE DpcRoutine ); +*/ +/* BOOLEAN IoIsErrorUserInduced ( NTSTATUS Status ); +*/ BOOLEAN IoIsTotalDeviceFailure ( NTSTATUS Status @@ -1087,21 +1239,28 @@ IoIsTotalDeviceFailure ( * must mark it pending otherwise the I/O manager will complete it on * return from the dispatch routine. */ +/* VOID IoMarkIrpPending ( PIRP Irp ); +*/ +/* VOID IoRequestDpc ( PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context ); +*/ +/* PDRIVER_CANCEL IoSetCancelRoutine ( PIRP Irp, PDRIVER_CANCEL CancelRoutine ); +*/ +/* VOID IoSetCompletionRoutine ( PIRP Irp, @@ -1111,29 +1270,34 @@ IoSetCompletionRoutine ( BOOLEAN InvokeOnError, BOOLEAN InvokeOnCancel ); +*/ +/* VOID IoSetNextIrpStackLocation ( PIRP Irp ); +*/ /* * FUNCTION: Determines the size of an IRP * ARGUMENTS: * StackSize = number of stack locations in the IRP * RETURNS: The size of the IRP in bytes */ +/* USHORT IoSizeOfIrp ( CCHAR StackSize ); +*/ #if 0 // Preliminary guess NTKERNELAPI NTSTATUS IoQueryFileVolumeInformation ( - IN PFILE_OBJECT FileObject, - IN FS_INFORMATION_CLASS FsInformationClass, - IN ULONG Length, - OUT PVOID FsInformation, + IN PFILE_OBJECT FileObject, + IN FS_INFORMATION_CLASS FsInformationClass, + IN ULONG Length, + OUT PVOID FsInformation, OUT PULONG ReturnedLength ); #endif diff --git a/reactos/include/internal/hal/ddk.h b/reactos/include/internal/hal/ddk.h index c7de5f20873..040127adb4b 100644 --- a/reactos/include/internal/hal/ddk.h +++ b/reactos/include/internal/hal/ddk.h @@ -1,4 +1,4 @@ -/* $Id: ddk.h,v 1.14 2000/04/08 19:06:29 ekohl Exp $ +/* $Id: ddk.h,v 1.15 2000/06/12 14:52:05 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -84,7 +84,17 @@ HalAdjustResourceList ( PCM_RESOURCE_LIST Resources ); +NTSTATUS +STDCALL +HalAllocateAdapterChannel ( + IN PADAPTER_OBJECT AdapterObject, + ULONG Unknown2, + ULONG Unknown3, + ULONG Unknown4 + ); + PVOID +STDCALL HalAllocateCommonBuffer ( PADAPTER_OBJECT AdapterObject, ULONG Length, @@ -92,6 +102,13 @@ HalAllocateCommonBuffer ( BOOLEAN CacheEnabled ); +PVOID +STDCALL +HalAllocateCrashDumpRegisters ( + IN PADAPTER_OBJECT AdapterObject, + IN OUT PULONG NumberOfMapRegisters + ); + BOOLEAN STDCALL HalAllProcessorsStarted ( @@ -111,12 +128,38 @@ HalAssignSlotResources ( PCM_RESOURCE_LIST *AllocatedResources ); +/* +HalBeginSystemInterrupt +*/ + +/* +HalCalibratePerformanceCounter +*/ + +/* +FASTCALL +HalClearSoftwareInterrupt +*/ + +/* +HalDisableSystemInterrupt +*/ + VOID STDCALL HalDisplayString ( IN PCH String ); +/* +HalEnableSystemInterrupt +*/ + +/* +HalEndSystemInterrupt +*/ + +/* Is this function really exported ?? */ VOID HalExamineMBR ( PDEVICE_OBJECT DeviceObject, @@ -125,7 +168,21 @@ HalExamineMBR ( PVOID Buffer ); +BOOLEAN +STDCALL +HalFlushCommonBuffer ( + ULONG Unknown1, + ULONG Unknown2, + ULONG Unknown3, + ULONG Unknown4, + ULONG Unknown5, + ULONG Unknown6, + ULONG Unknown7, + ULONG Unknown8 + ); + VOID +STDCALL HalFreeCommonBuffer ( PADAPTER_OBJECT AdapterObject, ULONG Length, @@ -135,6 +192,7 @@ HalFreeCommonBuffer ( ); PADAPTER_OBJECT +STDCALL HalGetAdapter ( PDEVICE_DESCRIPTION DeviceDescription, PULONG NumberOfMapRegisters @@ -161,11 +219,16 @@ HalGetBusDataByOffset ( ULONG Length ); +/* Is this function really exported ?? */ ULONG HalGetDmaAlignmentRequirement ( VOID ); +/* +HalGetEnvironmentVariable +*/ + ULONG STDCALL HalGetInterruptVector ( @@ -211,11 +274,15 @@ HalQueryRealTimeClock ( PTIME_FIELDS Time ); +/* Is this function really exported ?? */ VOID HalQuerySystemInformation(VOID); ULONG -HalReadDmaCounter(PADAPTER_OBJECT AdapterObject); +STDCALL +HalReadDmaCounter ( + PADAPTER_OBJECT AdapterObject + ); VOID STDCALL @@ -223,6 +290,17 @@ HalReportResourceUsage ( VOID ); +VOID +STDCALL +HalRequestIpi ( + ULONG Unknown + ); + +/* +FASTCALL +HalRequestSoftwareInterrupt +*/ + VOID STDCALL HalReturnToFirmware ( @@ -257,12 +335,24 @@ HalSetDisplayParameters ( ULONG CursorPosY ); +/* +HalSetEnvironmentVariable +*/ + +/* +HalSetProfileInterval +*/ + VOID STDCALL HalSetRealTimeClock ( PTIME_FIELDS Time ); +/* +HalSetTimeIncrement +*/ + BOOLEAN STDCALL HalStartNextProcessor ( @@ -270,6 +360,14 @@ HalStartNextProcessor ( ULONG Unknown2 ); +/* +HalStartProfileInterrupt +*/ + +/* +HalStopProfileInterrupt +*/ + ULONG FASTCALL HalSystemVectorDispatchEntry ( diff --git a/reactos/include/internal/i386/hal.h b/reactos/include/internal/i386/hal.h index a7b2d5416b5..6cf1424848b 100644 --- a/reactos/include/internal/i386/hal.h +++ b/reactos/include/internal/i386/hal.h @@ -84,6 +84,7 @@ HalpInitBusHandlers (VOID); VOID HalpCalibrateStallExecution(VOID); /* irq.c */ +VOID HalpDispatchInterrupt (ULONG irq); VOID HalpInitIRQs (VOID); diff --git a/reactos/ntoskrnl/hal/x86/dma.c b/reactos/ntoskrnl/hal/x86/dma.c index 514f7e6242f..020ec9ffc16 100644 --- a/reactos/ntoskrnl/hal/x86/dma.c +++ b/reactos/ntoskrnl/hal/x86/dma.c @@ -1,4 +1,5 @@ -/* +/* $Id: dma.c,v 1.6 2000/06/12 14:53:38 ekohl Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/hal/x86/dma.c @@ -50,11 +51,15 @@ ULONG HalGetDmaAlignmentRequirement() return(1); } -#if 0 -PVOID HalAllocateCommonBuffer(PADAPTER_OBJECT AdapterObject, - ULONG Length, - PPHYSICAL_ADDRESS LogicalAddress, - BOOLEAN CacheEnabled) + +PVOID +STDCALL +HalAllocateCommonBuffer ( + PADAPTER_OBJECT AdapterObject, + ULONG Length, + PPHYSICAL_ADDRESS LogicalAddress, + BOOLEAN CacheEnabled + ) /* * FUNCTION: Allocates memory that is visible to both the processor(s) and * a dma device @@ -68,7 +73,8 @@ PVOID HalAllocateCommonBuffer(PADAPTER_OBJECT AdapterObject, * RETURNS: The base virtual address of the memory allocated * NULL on failure */ -{/* +{ +/* PVOID Buffer; PHYSICAL_ADDRESS highest_address; @@ -85,15 +91,36 @@ PVOID HalAllocateCommonBuffer(PADAPTER_OBJECT AdapterObject, LogicalAddress->HighPart = 0; LogicalAddress->LowPart = MmGetPhysicalAddress(Buffer); return(Buffer);*/ + return NULL; } -VOID HalFreeCommonBuffer(PADAPTER_OBJECT AdapterObject, - ULONG Length, - PHYSICAL_ADDRESS LogicalAddress, - PVOID VirtualAddress, - BOOLEAN CacheEnabled) +BOOLEAN +STDCALL +HalFlushCommonBuffer ( + ULONG Unknown1, + ULONG Unknown2, + ULONG Unknown3, + ULONG Unknown4, + ULONG Unknown5, + ULONG Unknown6, + ULONG Unknown7, + ULONG Unknown8 + ) { - MmFreeContiguousMemory(VirtualAddress); + return TRUE; +} + +VOID +STDCALL +HalFreeCommonBuffer ( + PADAPTER_OBJECT AdapterObject, + ULONG Length, + PHYSICAL_ADDRESS LogicalAddress, + PVOID VirtualAddress, + BOOLEAN CacheEnabled + ) +{ + MmFreeContiguousMemory (VirtualAddress); } PADAPTER_OBJECT @@ -119,10 +146,15 @@ HalGetAdapter ( adapter = ExAllocatePool(NonPagedPool,sizeof(ADAPTER_OBJECT)); RtlCopyMemory(&adapter->desc,DeviceDescription,sizeof(DEVICE_DESCRIPTION)); */ + return NULL; } -#endif -ULONG HalReadDmaCounter(PADAPTER_OBJECT AdapterObject) + +ULONG +STDCALL +HalReadDmaCounter ( + PADAPTER_OBJECT AdapterObject + ) { UNIMPLEMENTED; } @@ -134,3 +166,5 @@ ULONG KeGetDcacheFillSize() { return(1); } + +/* EOF */ diff --git a/reactos/ntoskrnl/hal/x86/irq.c b/reactos/ntoskrnl/hal/x86/irq.c index 0c13a8e1431..06f030d32c4 100644 --- a/reactos/ntoskrnl/hal/x86/irq.c +++ b/reactos/ntoskrnl/hal/x86/irq.c @@ -1,4 +1,4 @@ -/* $Id: irq.c,v 1.12 2000/06/04 19:49:37 ekohl Exp $ +/* $Id: irq.c,v 1.13 2000/06/12 14:53:38 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -92,7 +92,9 @@ static KSPIN_LOCK isr_table_lock = {0,}; #define PRESENT (0x8000) #define I486_INTERRUPT_GATE (0xe00) -asmlinkage VOID KiInterruptDispatch(ULONG irq) +asmlinkage +VOID +HalpDispatchInterrupt (ULONG irq) /* * FUNCTION: Calls the irq specific handler for an irq * ARGUMENTS: @@ -127,7 +129,8 @@ asmlinkage VOID KiInterruptDispatch(ULONG irq) } else { - DPRINT("KiInterruptDispatch(irq %d)\n",irq); + DPRINT("HalpDispatchInterrupt(irq %d)\n",irq); +// KiInterruptDispatch (irq); /* * Iterate the list until one of the isr tells us its device interrupted */ @@ -371,20 +374,20 @@ IoDisconnectInterrupt(PKINTERRUPT InterruptObject) } #if 0 -ULONG +BOOLEAN STDCALL HalDisableSystemInterrupt ( - ULONG Unknown0, - ULONG Unknown1 + ULONG Vector, + KIRQL Irql ) { } -ULONG +BOOLEAN STDCALL HalEnableSystemInterrupt ( - ULONG Unknown0, + ULONG Vector, ULONG Unknown1, ULONG Unknown2 ) diff --git a/reactos/ntoskrnl/hal/x86/irqhand.c b/reactos/ntoskrnl/hal/x86/irqhand.c index ebaf3dc7bb8..b8a75ec5cb8 100644 --- a/reactos/ntoskrnl/hal/x86/irqhand.c +++ b/reactos/ntoskrnl/hal/x86/irqhand.c @@ -28,7 +28,7 @@ "orb $1<<"##x",%al\n\t" \ "outb %al,$0x21\n\t" \ "pushl $"##x"\n\t" \ - "call _KiInterruptDispatch\n\t"\ + "call _HalpDispatchInterrupt\n\t"\ "popl %eax\n\t" \ "popl %eax\n\t" \ "popl %es\n\t" \ @@ -51,7 +51,7 @@ "orb $1<<("##x"-8),%al\n\t" \ "outb %al,$0xa1\n\t" \ "pushl $"##x"\n\t" \ - "call _KiInterruptDispatch\n\t"\ + "call _HalpDispatchInterrupt\n\t"\ "popl %eax\n\t" \ "popl %eax\n\t" \ "popl %es\n\t" \ diff --git a/reactos/ntoskrnl/io/cancel.c b/reactos/ntoskrnl/io/cancel.c index 7d935ff4c9f..47350e88b6d 100644 --- a/reactos/ntoskrnl/io/cancel.c +++ b/reactos/ntoskrnl/io/cancel.c @@ -1,4 +1,4 @@ -/* $Id: cancel.c,v 1.4 2000/03/26 19:38:21 ea Exp $ +/* $Id: cancel.c,v 1.5 2000/06/12 14:57:10 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -64,11 +64,4 @@ VOID STDCALL IoReleaseCancelSpinLock(KIRQL Irql) KeReleaseSpinLock(&CancelSpinLock,Irql); } -PDRIVER_CANCEL IoSetCancelRoutine(PIRP Irp, PDRIVER_CANCEL CancelRoutine) -{ - return((PDRIVER_CANCEL)InterlockedExchange((PULONG)&Irp->CancelRoutine, - (ULONG)CancelRoutine)); -} - - /* EOF */ diff --git a/reactos/ntoskrnl/io/dpc.c b/reactos/ntoskrnl/io/dpc.c index f5889bfc01a..e6eeb20ceb3 100644 --- a/reactos/ntoskrnl/io/dpc.c +++ b/reactos/ntoskrnl/io/dpc.c @@ -15,7 +15,7 @@ #include /* FUNCTIONS *****************************************************************/ - +#if 0 VOID IoInitializeDpcRequest(PDEVICE_OBJECT DeviceObject, PIO_DPC_ROUTINE DpcRoutine) { @@ -29,3 +29,4 @@ VOID IoRequestDpc(PDEVICE_OBJECT DeviceObject, { KeInsertQueueDpc(&DeviceObject->Dpc,Irp,Context); } +#endif diff --git a/reactos/ntoskrnl/io/error.c b/reactos/ntoskrnl/io/error.c index ce9cb4e74c4..3b4a9db2f25 100644 --- a/reactos/ntoskrnl/io/error.c +++ b/reactos/ntoskrnl/io/error.c @@ -1,4 +1,4 @@ -/* $Id: error.c,v 1.2 2000/03/26 19:38:22 ea Exp $ +/* $Id: error.c,v 1.3 2000/06/12 14:57:10 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -17,21 +17,6 @@ /* FUNCTIONS *****************************************************************/ -BOOLEAN IoIsErrorUserInduced(NTSTATUS Status) -{ - switch(Status) - { - case STATUS_DEVICE_NOT_READY: - case STATUS_IO_TIMEOUT: - case STATUS_MEDIA_WRITE_PROTECTED: - case STATUS_NO_MEDIA_IN_DRIVE: - case STATUS_VERIFY_REQUIRED: - case STATUS_UNRECOGNIZED_MEDIA: - case STATUS_WRONG_VOLUME: - return(TRUE); - } - return(FALSE); -} VOID STDCALL IoSetHardErrorOrVerifyDevice(PIRP Irp, PDEVICE_OBJECT DeviceObject) { diff --git a/reactos/ntoskrnl/io/ioctrl.c b/reactos/ntoskrnl/io/ioctrl.c index 8fdbdaa9537..b8b28fd746f 100644 --- a/reactos/ntoskrnl/io/ioctrl.c +++ b/reactos/ntoskrnl/io/ioctrl.c @@ -1,4 +1,4 @@ -/* $Id: ioctrl.c,v 1.10 2000/05/13 13:51:02 dwelch Exp $ +/* $Id: ioctrl.c,v 1.11 2000/06/12 14:57:10 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -22,12 +22,6 @@ /* FUNCTIONS *****************************************************************/ -ULONG IoGetFunctionCodeFromCtlCode(ULONG ControlCode) -{ - UNIMPLEMENTED; -} - - NTSTATUS STDCALL NtDeviceIoControlFile (IN HANDLE DeviceHandle, IN HANDLE Event, IN PIO_APC_ROUTINE UserApcRoutine, diff --git a/reactos/ntoskrnl/io/irp.c b/reactos/ntoskrnl/io/irp.c index b2394304915..5e1b620744a 100644 --- a/reactos/ntoskrnl/io/irp.c +++ b/reactos/ntoskrnl/io/irp.c @@ -1,4 +1,4 @@ -/* $Id: irp.c,v 1.27 2000/03/26 19:38:25 ea Exp $ +/* $Id: irp.c,v 1.28 2000/06/12 14:57:10 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -83,42 +83,6 @@ IoMakeAssociatedIrp (PIRP Irp, CCHAR StackSize) } -/********************************************************************** - * NAME INTERNAL - * IoMarkIrpPending - */ -VOID -IoMarkIrpPending (PIRP Irp) -/* - * FUNCTION: Marks the specified irp, indicating further processing will - * be required by other driver routines - * ARGUMENTS: - * Irp = Irp to mark - */ -{ -// DPRINT("IoGetCurrentIrpStackLocation(Irp) %x\n", -// IoGetCurrentIrpStackLocation(Irp)); - IoGetCurrentIrpStackLocation(Irp)->Control |= SL_PENDING_RETURNED; -} - - -/********************************************************************** - * NAME INTERNAL - * IoSizeOfIrp - */ -USHORT -IoSizeOfIrp (CCHAR StackSize) -/* - * FUNCTION: Determines the size of an IRP - * ARGUMENTS: - * StackSize = number of stack locations in the IRP - * RETURNS: The size of the IRP in bytes - */ -{ - return(sizeof(IRP)+((StackSize-1)*sizeof(IO_STACK_LOCATION))); -} - - VOID STDCALL IoInitializeIrp (PIRP Irp, USHORT PacketSize, CCHAR StackSize) @@ -140,63 +104,6 @@ IoInitializeIrp (PIRP Irp, USHORT PacketSize, CCHAR StackSize) } -/********************************************************************** - * NAME INTERNAL - * IoGetCurrentIrpStackLocation - */ -PIO_STACK_LOCATION -IoGetCurrentIrpStackLocation (PIRP Irp) -/* - * FUNCTION: Gets a pointer to the callers location in the I/O stack in - * the given IRP - * ARGUMENTS: - * Irp = Points to the IRP - * RETURNS: A pointer to the stack location - */ -{ -// DPRINT("IoGetCurrentIrpStackLocation: Irp %08lx CurLoc %d StkCnt %d\n", -// Irp, -// Irp->CurrentLocation, -// Irp->StackCount); - - return(&Irp->Stack[(ULONG)Irp->CurrentLocation]); -} - - -/********************************************************************** - * NAME INTERNAL - * IoSetNextIrpStackLocation - */ -VOID -IoSetNextIrpStackLocation (PIRP Irp) -{ - Irp->CurrentLocation--; - Irp->Tail.Overlay.CurrentStackLocation--; -} - - -/********************************************************************** - * NAME INTERNAL - * IoGetNextIrpStackLocation - */ -PIO_STACK_LOCATION -IoGetNextIrpStackLocation (PIRP Irp) -/* - * FUNCTION: Gives a higher level driver access to the next lower driver's - * I/O stack location - * ARGUMENTS: - * Irp = points to the irp - * RETURNS: A pointer to the stack location - */ -{ -// DPRINT("IoGetNextIrpStackLocation(Irp %x)\n",Irp); - - assert(Irp!=NULL); -// DPRINT("Irp %x Irp->StackPtr %x\n",Irp,Irp->CurrentLocation); - return(&Irp->Stack[Irp->CurrentLocation-1]); -} - - NTSTATUS FASTCALL IofCallDriver (PDEVICE_OBJECT DeviceObject, PIRP Irp) @@ -279,36 +186,6 @@ IoAllocateIrp (CCHAR StackSize, BOOLEAN ChargeQuota) } -/********************************************************************** - * NAME INTERNAL - * IoSetCompletionRoutine - */ -VOID -IoSetCompletionRoutine (PIRP Irp, - PIO_COMPLETION_ROUTINE CompletionRoutine, - PVOID Context, - BOOLEAN InvokeOnSuccess, - BOOLEAN InvokeOnError, - BOOLEAN InvokeOnCancel) -{ - IO_STACK_LOCATION* param = IoGetNextIrpStackLocation(Irp); - - param->CompletionRoutine=CompletionRoutine; - param->CompletionContext=Context; - if (InvokeOnSuccess) - { - param->Control = param->Control | SL_INVOKE_ON_SUCCESS; - } - if (InvokeOnError) - { - param->Control = param->Control | SL_INVOKE_ON_ERROR; - } - if (InvokeOnCancel) - { - param->Control = param->Control | SL_INVOKE_ON_CANCEL; - } -} - VOID IopCompleteRequest(struct _KAPC* Apc, PKNORMAL_ROUTINE* NormalRoutine, PVOID* NormalContext, @@ -474,7 +351,10 @@ IoSetTopLevelIrp ( IN PIRP Irp ) { - UNIMPLEMENTED; + PETHREAD Thread; + + Thread = PsGetCurrentThread (); + Thread->TopLevelIrp.TopLevelIrp = Irp; } @@ -484,8 +364,7 @@ IoGetTopLevelIrp ( VOID ) { - UNIMPLEMENTED; - return (NULL); + return (PsGetCurrentThread ()->TopLevelIrp.TopLevelIrp); } @@ -498,5 +377,4 @@ IoQueueThreadIrp ( UNIMPLEMENTED; } - /* EOF */ diff --git a/reactos/ntoskrnl/io/process.c b/reactos/ntoskrnl/io/process.c index bb62af6f726..680cd6dff16 100644 --- a/reactos/ntoskrnl/io/process.c +++ b/reactos/ntoskrnl/io/process.c @@ -1,4 +1,4 @@ -/* $Id: process.c,v 1.5 2000/05/13 14:56:46 ea Exp $ +/* $Id: process.c,v 1.6 2000/06/12 14:57:10 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -55,8 +55,7 @@ IoThreadToProcess ( IN PETHREAD Thread ) { - UNIMPLEMENTED; - return (NULL); + return (Thread->ThreadsProcess); } diff --git a/reactos/ntoskrnl/ntoskrnl.def b/reactos/ntoskrnl/ntoskrnl.def index f95762d3aee..6e0cb74b7e9 100644 --- a/reactos/ntoskrnl/ntoskrnl.def +++ b/reactos/ntoskrnl/ntoskrnl.def @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.def,v 1.74 2000/06/09 20:02:37 ekohl Exp $ +; $Id: ntoskrnl.def,v 1.75 2000/06/12 14:53:09 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -195,11 +195,16 @@ FsRtlUninitializeMcb@4 FsRtlUninitializeOplock@4 ;HalDispatchTable DATA ;HalPrivateDispatchTable DATA -;InterlockedCompareExchange -;InterlockedDecrement -;InterlockedExchange -;InterlockedExchangeAdd -;InterlockedIncrement +;@InterlockedCompareExchange@12 +InterlockedCompareExchange@12 +;@InterlockedDecrement@4 +InterlockedDecrement@4 +;@InterlockedExchange@8 +InterlockedExchange@8 +;@InterlockedExchangeAdd@8 +InterlockedExchangeAdd@8 +;@InterlockedIncrement@4 +InterlockedIncrement@4 IoAcquireCancelSpinLock@4 IoAcquireVpbSpinLock@4 IoAdapterObjectType DATA @@ -1009,10 +1014,8 @@ wctomb ; ; ReactOS Extensions (these should be macros!) ; -IoGetCurrentIrpStackLocation -IoInitializeDpcRequest -IoMarkIrpPending -IoRequestDpc +;IoInitializeDpcRequest +;IoRequestDpc MmGetSystemAddressForMdl InitializeListHead InsertTailList @@ -1028,23 +1031,23 @@ ExTryToAcquireFastMutex@4 HalAcquireDisplayOwnership@4 HalAdjustResourceList@4 HalAllProcessorsStarted@0 -;HalAllocateAdapterChannel -;HalAllocateCommonBuffer -;HalAllocateCrashDumpRegisters +;HalAllocateAdapterChannel@16 +HalAllocateCommonBuffer@16 +;HalAllocateCrashDumpRegisters@8 HalAssignSlotResources@32 -;HalBeginSystemInterrupt -;HalCalibratePerformanceCounter -;HalClearSoftwareInterrupt -;HalDisableSystemInterrupt +;HalBeginSystemInterrupt@12 +;HalCalibratePerformanceCounter@4 +;@HalClearSoftwareInterrupt@4 +;HalDisableSystemInterrupt@8 HalDisplayString@4 -;HalEnableSystemInterrupt -;HalEndSystemInterrupt -;HalFlushCommonBuffer -;HalFreeCommonBuffer -;HalGetAdapter +;HalEnableSystemInterrupt@12 +;HalEndSystemInterrupt@8 +HalFlushCommonBuffer@32 +HalFreeCommonBuffer@24 +HalGetAdapter@8 HalGetBusData@20 HalGetBusDataByOffset@24 -;HalGetEnvironmentVariable +;HalGetEnvironmentVariable@12 HalGetInterruptVector@24 HalHandleNMI@4 HalInitSystem@8 @@ -1053,21 +1056,21 @@ HalMakeBeep@4 HalProcessorIdle@0 HalQueryDisplayParameters@16 HalQueryRealTimeClock@4 -;HalReadDmaCounter +HalReadDmaCounter@4 HalReportResourceUsage@0 -;HalRequestIpi -;HalRequestSoftwareInterrupt +;HalRequestIpi@4 +;@HalRequestSoftwareInterrupt@4 HalReturnToFirmware@4 HalSetBusData@20 HalSetBusDataByOffset@24 HalSetDisplayParameters@8 -;HalSetEnvironmentVariable -;HalSetProfileInterval +;HalSetEnvironmentVariable@8 +;HalSetProfileInterval@4 HalSetRealTimeClock@4 -;HalSetTimeIncrement +;HalSetTimeIncrement@4 HalStartNextProcessor@8 -;HalStartProfileInterrupt -;HalStopProfileInterrupt +;HalStartProfileInterrupt@4 +;HalStopProfileInterrupt@4 HalSystemVectorDispatchEntry@12 HalTranslateBusAddress@24 IoAssignDriveLetters@16 diff --git a/reactos/ntoskrnl/ntoskrnl.edf b/reactos/ntoskrnl/ntoskrnl.edf index b3b55064fd6..c3aa9e0d5ac 100644 --- a/reactos/ntoskrnl/ntoskrnl.edf +++ b/reactos/ntoskrnl/ntoskrnl.edf @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.edf,v 1.61 2000/06/09 20:02:37 ekohl Exp $ +; $Id: ntoskrnl.edf,v 1.62 2000/06/12 14:53:09 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -194,6 +194,16 @@ FsRtlUninitializeMcb=FsRtlUninitializeMcb@4 FsRtlUninitializeOplock=FsRtlUninitializeOplock@4 ;HalDispatchTable DATA ;HalPrivateDispatchTable DATA +;InterlockedCompareExchange=@InterlockedCompareExchange@12 +InterlockedCompareExchange=InterlockedCompareExchange@12 +;InterlockedDecrement=@InterlockedDecrement@4 +InterlockedDecrement=InterlockedDecrement@4 +;InterlockedExchange=@InterlockedExchange@8 +InterlockedExchange=InterlockedExchange@8 +;InterlockedExchangeAdd=@InterlockedExchangeAdd@8 +InterlockedExchangeAdd=InterlockedExchangeAdd@8 +;InterlockedIncrement=@InterlockedIncrement@4 +InterlockedIncrement=InterlockedIncrement@4 IoAcquireCancelSpinLock=IoAcquireCancelSpinLock@4 IoAcquireVpbSpinLock=IoAcquireVpbSpinLock@4 IoAdapterObjectType DATA @@ -937,10 +947,8 @@ wctomb ; ; ReactOS Extensions ; -IoGetCurrentIrpStackLocation -IoInitializeDpcRequest -IoMarkIrpPending -IoRequestDpc +;IoInitializeDpcRequest +;IoRequestDpc MmGetSystemAddressForMdl InitializeListHead InsertTailList @@ -956,23 +964,24 @@ ExTryToAcquireFastMutex=ExTryToAcquireFastMutex@4 HalAcquireDisplayOwnership=HalAcquireDisplayOwnership@4 HalAdjustResourceList=HalAdjustResourceList@4 HalAllProcessorsStarted=HalAllProcessorsStarted@0 -;HalAllocateAdapterChannel -;HalAllocateCommonBuffer -;HalAllocateCrashDumpRegisters +;HalAllocateAdapterChannel=HalAllocateAdapterChannel@16 +HalAllocateCommonBuffer=HalAllocateCommonBuffer@16 +;HalAllocateCrashDumpRegisters=HalAllocateCrashDumpRegisters@8 HalAssignSlotResource=HalAssignSlotResources@32 -;HalBeginSystemInterrupt -;HalCalibratePerformanceCounter -;HalClearSoftwareInterrupt -;HalDisableSystemInterrupt +;HalBeginSystemInterrupt=HalBeginSystemInterrupt@12 +;HalCalibratePerformanceCounter=HalCalibratePerformanceCounter@4 +;HalClearSoftwareInterrupt=@HalClearSoftwareInterrupt@4 +;HalClearSoftwareInterrupt=HalClearSoftwareInterrupt@4 +;HalDisableSystemInterrupt=HalDisableSystemInterrupt@8 HalDisplayString=HalDisplayString@4 -;HalEnableSystemInterrupt -;HalEndSystemInterrupt -;HalFlushCommonBuffer -;HalFreeCommonBuffer -;HalGetAdapter +;HalEnableSystemInterrupt=HalEnableSystemInterrupt@12 +;HalEndSystemInterrupt=HalEndSystemInterrupt@8 +HalFlushCommonBuffer=HalFlushCommonBuffer@32 +HalFreeCommonBuffer=HalFreeCommonBuffer@24 +HalGetAdapter=HalGetAdapter@8 HalGetBusData=HalGetBusData@20 HalGetBusDataByOffset=HalGetBusDataByOffset@24 -;HalGetEnvironmentVariable +;HalGetEnvironmentVariable=HalGetEnvironmentVariable@12 HalGetInterruptVector=HalGetInterruptVector@24 HalHandleNMI=HalHandleNMI@4 HalInitSystem=HalInitSystem@8 @@ -981,21 +990,22 @@ HalMakeBeep=HalMakeBeep@4 HalProcessorIdle=HalProcessorIdle@0 HalQueryDisplayParameters=HalQueryDisplayParameters@16 HalQueryRealTimeClock=HalQueryRealTimeClock@4 -;HalReadDmaCounter +HalReadDmaCounter=HalReadDmaCounter@4 HalReportResourceUsage=HalReportResourceUsage@0 -;HalRequestIpi -;HalRequestSoftwareInterrupt +;HalRequestIpi=HalRequestIpi@4 +;HalRequestSoftwareInterrupt=@HalRequestSoftwareInterrupt@4 +;HalRequestSoftwareInterrupt=HalRequestSoftwareInterrupt@4 HalReturnToFirmware=HalReturnToFirmware@4 HalSetBusData=HalSetBusData@20 HalSetBusDataByOffset=HalSetBusDataByOffset@24 HalSetDisplayParameters=HalSetDisplayParameters@8 -;HalSetEnvironmentVariable -;HalSetProfileInterval +;HalSetEnvironmentVariable=HalSetEnvironmentVariable@8 +;HalSetProfileInterval=HalSetProfileInterval@4 HalSetRealTimeClock=HalSetRealTimeClock@4 -;HalSetTimeIncrement +;HalSetTimeIncrement=HalSetTimeIncrement@4 HalStartNextProcessor=HalStartNextProcessor@8 -;HalStartProfileInterrupt -;HalStopProfileInterrupt +;HalStartProfileInterrupt=HalStartProfileInterrupt@4 +;HalStopProfileInterrupt=HalStopProfileInterrupt@4 ;HalSystemVectorDispatchEntry=@HalSystemVectorDispatchEntry@12 HalSystemVectorDispatchEntry=HalSystemVectorDispatchEntry@12 HalTranslateBusAddress=HalTranslateBusAddress@24 @@ -1046,4 +1056,3 @@ WRITE_PORT_BUFFER_USHORT=WRITE_PORT_BUFFER_USHORT@12 WRITE_PORT_UCHAR=WRITE_PORT_UCHAR@8 WRITE_PORT_ULONG=WRITE_PORT_ULONG@8 WRITE_PORT_USHORT=WRITE_PORT_USHORT@8 -