From 2284e742b32f52e1d74c20ef6f55bc84b6452c84 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 29 Dec 1999 01:37:30 +0000 Subject: [PATCH] Fixed implementation of register io functions Added luid functions svn path=/trunk/; revision=910 --- reactos/drivers/dd/vidport/vidport.c | 31 +++--- reactos/include/ddk/rtl.h | 80 ++++++++++++++- reactos/include/internal/i386/io.h | 105 ------------------- reactos/ntoskrnl/makefile_rex | 5 +- reactos/ntoskrnl/ntoskrnl.def | 16 ++- reactos/ntoskrnl/ntoskrnl.edf | 16 ++- reactos/ntoskrnl/rtl/regio.c | 146 +++++++++++++++++++++++++++ reactos/ntoskrnl/se/luid.c | 24 ++++- 8 files changed, 296 insertions(+), 127 deletions(-) create mode 100644 reactos/ntoskrnl/rtl/regio.c diff --git a/reactos/drivers/dd/vidport/vidport.c b/reactos/drivers/dd/vidport/vidport.c index 8f7c17a4a9f..7a671c1fcce 100644 --- a/reactos/drivers/dd/vidport/vidport.c +++ b/reactos/drivers/dd/vidport/vidport.c @@ -1,4 +1,4 @@ -/* $Id: vidport.c,v 1.9 1999/12/04 20:58:42 ea Exp $ +/* $Id: vidport.c,v 1.10 1999/12/29 01:37:30 ekohl Exp $ * * VideoPort driver * Written by Rex Jolliff @@ -6,7 +6,6 @@ #include #include -#include #include "vidport.h" @@ -288,7 +287,7 @@ VideoPortInitialize(IN PVOID Context1, if (HwInitializationData->HwInterrupt != NULL) { - IoDisconnectInterrupt(&ExtensionData->InterruptObject); + IoDisconnectInterrupt(ExtensionData->InterruptObject); } IoDeleteDevice(MPDeviceObject); @@ -352,7 +351,7 @@ VideoPortMapMemory(IN PVOID HwDeviceExtension, UNIMPLEMENTED; } - return STATUS_SUCCESS; + return STATUS_SUCCESS; } VOID @@ -566,7 +565,7 @@ STDCALL VideoPortWritePortUchar(IN PUCHAR Port, IN UCHAR Value) { - UNIMPLEMENTED; + WRITE_PORT_UCHAR(Port, Value); } VOID @@ -574,7 +573,7 @@ STDCALL VideoPortWritePortUshort(IN PUSHORT Port, IN USHORT Value) { - UNIMPLEMENTED; + WRITE_PORT_USHORT(Port, Value); } VOID @@ -582,7 +581,7 @@ STDCALL VideoPortWritePortUlong(IN PULONG Port, IN ULONG Value) { - UNIMPLEMENTED; + WRITE_PORT_ULONG(Port, Value); } VOID @@ -591,7 +590,7 @@ VideoPortWritePortBufferUchar(IN PUCHAR Port, IN PUCHAR Buffer, IN ULONG Count) { - UNIMPLEMENTED; + WRITE_PORT_BUFFER_UCHAR(Port, Buffer, Count); } VOID @@ -600,7 +599,7 @@ VideoPortWritePortBufferUshort(IN PUSHORT Port, IN PUSHORT Buffer, IN ULONG Count) { - UNIMPLEMENTED; + WRITE_PORT_BUFFER_USHORT(Port, Buffer, Count); } VOID @@ -609,7 +608,7 @@ VideoPortWritePortBufferUlong(IN PULONG Port, IN PULONG Buffer, IN ULONG Count) { - UNIMPLEMENTED; + WRITE_PORT_BUFFER_ULONG(Port, Buffer, Count); } VOID @@ -617,7 +616,7 @@ STDCALL VideoPortWriteRegisterUchar(IN PUCHAR Register, IN UCHAR Value) { - UNIMPLEMENTED; + WRITE_REGISTER_UCHAR(Register, Value); } VOID @@ -625,7 +624,7 @@ STDCALL VideoPortWriteRegisterUshort(IN PUSHORT Register, IN USHORT Value) { - UNIMPLEMENTED; + WRITE_REGISTER_USHORT(Register, Value); } VOID @@ -633,7 +632,7 @@ STDCALL VideoPortWriteRegisterUlong(IN PULONG Register, IN ULONG Value) { - UNIMPLEMENTED; + WRITE_REGISTER_ULONG(Register, Value); } VOID @@ -642,7 +641,7 @@ VideoPortWriteRegisterBufferUchar(IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count) { - UNIMPLEMENTED; + WRITE_REGISTER_BUFFER_UCHAR(Register, Buffer, Count); } VOID @@ -651,7 +650,7 @@ VideoPortWriteRegisterBufferUshort(IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count) { - UNIMPLEMENTED; + WRITE_REGISTER_BUFFER_USHORT(Register, Buffer, Count); } VOID @@ -660,7 +659,7 @@ VideoPortWriteRegisterBufferUlong(IN PULONG Register, IN PULONG Buffer, IN ULONG Count) { - UNIMPLEMENTED; + WRITE_REGISTER_BUFFER_ULONG(Register, Buffer, Count); } VOID diff --git a/reactos/include/ddk/rtl.h b/reactos/include/ddk/rtl.h index 34d037a96a3..47685a2595e 100644 --- a/reactos/include/ddk/rtl.h +++ b/reactos/include/ddk/rtl.h @@ -1,4 +1,4 @@ -/* $Id: rtl.h,v 1.23 1999/12/27 15:04:50 ekohl Exp $ +/* $Id: rtl.h,v 1.24 1999/12/29 01:36:58 ekohl Exp $ * */ @@ -1139,6 +1139,84 @@ RtlxUnicodeStringToOemSize ( ); +/* Register io functions */ + +UCHAR +READ_REGISTER_UCHAR ( + PUCHAR Register + ); + +USHORT +READ_REGISTER_USHORT ( + PUSHORT Register + ); + +ULONG +READ_REGISTER_ULONG ( + PULONG Register + ); + +VOID +READ_REGISTER_BUFFER_UCHAR ( + PUCHAR Register, + PUCHAR Buffer, + ULONG Count + ); + +VOID +READ_REGISTER_BUFFER_USHORT ( + PUSHORT Register, + PUSHORT Buffer, + ULONG Count + ); + +VOID +READ_REGISTER_BUFFER_ULONG ( + PULONG Register, + PULONG Buffer, + ULONG Count + ); + +VOID +WRITE_REGISTER_UCHAR ( + PUCHAR Register, + UCHAR Value + ); + +VOID +WRITE_REGISTER_USHORT ( + PUSHORT Register, + USHORT Value + ); + +VOID +WRITE_REGISTER_ULONG ( + PULONG Register, + ULONG Value + ); + +VOID +WRITE_REGISTER_BUFFER_UCHAR ( + PUCHAR Register, + PUCHAR Buffer, + ULONG Count + ); + +VOID +WRITE_REGISTER_BUFFER_USHORT ( + PUSHORT Register, + PUSHORT Buffer, + ULONG Count + ); + +VOID +WRITE_REGISTER_BUFFER_ULONG ( + PULONG Register, + PULONG Buffer, + ULONG Count + ); + + /* functions exported from NTOSKRNL.EXE which are considered RTL */ #if 0 _stricmp diff --git a/reactos/include/internal/i386/io.h b/reactos/include/internal/i386/io.h index 9352b09a964..96058c1ef42 100644 --- a/reactos/include/internal/i386/io.h +++ b/reactos/include/internal/i386/io.h @@ -164,111 +164,6 @@ __OUTS(l) __inlc_p(port) : \ __inl_p(port)) - -/* HAL Memory mapped I/O functions */ -/* FIXME: these ops should be 'lock' prefixed */ -extern inline unsigned char -READ_REGISTER_UCHAR(unsigned char *Register) -{ - return *Register; -} - -extern inline unsigned short -READ_REGISTER_USHORT(unsigned short *Register) -{ - return *Register; -} - -extern inline unsigned long -READ_REGISTER_ULONG(unsigned long *Register) -{ - return *Register; -} - -extern inline void -READ_REGISTER_BUFFER_UCHAR(unsigned char *Register, - unsigned char *Buffer, - unsigned long Count) -{ - while (Count--) - { - *Buffer++ = *Register++; - } -} - -extern inline void -READ_REGISTER_BUFFER_USHORT(unsigned short *Register, - unsigned short *Buffer, - unsigned long Count) -{ - while (Count--) - { - *Buffer++ = *Register++; - } -} - -extern inline void -READ_REGISTER_BUFFER_ULONG(unsigned long *Register, - unsigned long *Buffer, - unsigned long Count) -{ - while (Count--) - { - *Buffer++ = *Register++; - } -} - -extern inline void -WRITE_REGISTER_UCHAR(unsigned char *Register, unsigned char Value) -{ - *Register = Value; -} - -extern inline void -WRITE_REGISTER_USHORT(unsigned short *Register, unsigned short Value) -{ - *Register = Value; -} - -extern inline void -WRITE_REGISTER_ULONG(unsigned long *Register, unsigned long Value) -{ - *Register = Value; -} - -extern inline void -WRITE_REGISTER_BUFFER_UCHAR(unsigned char *Register, - unsigned char *Buffer, - unsigned long Count) -{ - while (Count--) - { - *Buffer++ = *Register++; - } -} - -extern inline void -WRITE_REGISTER_BUFFER_USHORT(unsigned short *Register, - unsigned short *Buffer, - unsigned long Count) -{ - while (Count--) - { - *Buffer++ = *Register++; - } -} - -extern inline void -WRITE_REGISTER_BUFFER_ULONG(unsigned long *Register, - unsigned long *Buffer, - unsigned long Count) -{ - while (Count--) - { - *Buffer++ = *Register++; - } -} - #endif diff --git a/reactos/ntoskrnl/makefile_rex b/reactos/ntoskrnl/makefile_rex index 61a91529fc5..d7b72a6cbd0 100644 --- a/reactos/ntoskrnl/makefile_rex +++ b/reactos/ntoskrnl/makefile_rex @@ -1,4 +1,4 @@ -# $Id: makefile_rex,v 1.43 1999/12/26 17:22:18 ea Exp $ +# $Id: makefile_rex,v 1.44 1999/12/29 01:36:34 ekohl Exp $ # # ReactOS Operating System # @@ -21,7 +21,8 @@ RTL_OBJECTS = rtl/vsprintf.o rtl/lookas.o rtl/unicode.o rtl/time.o \ rtl/unalign.o rtl/mem.o rtl/largeint.o rtl/ctype.o \ rtl/list.o rtl/slist.o rtl/interlck.o rtl/return.o \ rtl/wstring.o rtl/memcpy.o rtl/memmove.o rtl/memset.o \ - rtl/memchr.o rtl/nls.o rtl/string.o rtl/stdlib.o + rtl/memchr.o rtl/nls.o rtl/string.o rtl/stdlib.o \ + rtl/regio.o KE_OBJECTS = ke/main.o ke/timer.o ke/error.o ke/catch.o \ ke/dpc.o ke/wait.o ke/kqueue.o ke/dispatch.o \ diff --git a/reactos/ntoskrnl/ntoskrnl.def b/reactos/ntoskrnl/ntoskrnl.def index c6f580e5c9d..2a7d9d4aa39 100644 --- a/reactos/ntoskrnl/ntoskrnl.def +++ b/reactos/ntoskrnl/ntoskrnl.def @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.def,v 1.35 1999/12/27 15:05:33 ekohl Exp $ +; $Id: ntoskrnl.def,v 1.36 1999/12/29 01:36:34 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -201,6 +201,12 @@ NtWriteFile@36 PoQueryPowerSequence@0 PoRequestPowerChange@12 PoSetDeviceIdleDetection@8 +READ_REGISTER_UCHAR +READ_REGISTER_ULONG +READ_REGISTER_USHORT +READ_REGISTER_BUFFER_UCHAR +READ_REGISTER_BUFFER_ULONG +READ_REGISTER_BUFFER_USHORT RtlAnsiCharToUnicodeChar@4 RtlAnsiStringToUnicodeSize@4 RtlAnsiStringToUnicodeString@12 @@ -214,6 +220,7 @@ RtlCompareString@12 RtlCompareUnicodeString@12 RtlConvertLongToLargeInteger@4 RtlConvertUlongToLargeInteger@4 +RtlCopyLuid@8 RtlCopyMemory RtlCopyString@8 RtlCopyUnicodeString@8 @@ -222,6 +229,7 @@ RtlDowncaseUnicodeString@12 RtlEnlargedIntegerMultiply@8 RtlEnlargedUnsignedDivide@16 RtlEnlargedUnsignedMultiply@8 +RtlEqualLuid@8 RtlEqualString@12 RtlEqualUnicodeString@12 RtlExtendedIntegerMultiply@12 @@ -278,6 +286,12 @@ RtlxAnsiStringToUnicodeSize@4 RtlxOemStringToUnicodeSize@4 RtlxUnicodeStringToAnsiSize@4 RtlxUnicodeStringToOemSize@4 +WRITE_REGISTER_UCHAR +WRITE_REGISTER_ULONG +WRITE_REGISTER_USHORT +WRITE_REGISTER_BUFFER_UCHAR +WRITE_REGISTER_BUFFER_ULONG +WRITE_REGISTER_BUFFER_USHORT ZwAccessCheckAndAuditAlarm@44 ZwAlertThread@4 ZwAllocateVirtualMemory@24 diff --git a/reactos/ntoskrnl/ntoskrnl.edf b/reactos/ntoskrnl/ntoskrnl.edf index cc7affc2cbf..9fb2fd50b6a 100644 --- a/reactos/ntoskrnl/ntoskrnl.edf +++ b/reactos/ntoskrnl/ntoskrnl.edf @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.edf,v 1.22 1999/12/27 15:05:33 ekohl Exp $ +; $Id: ntoskrnl.edf,v 1.23 1999/12/29 01:36:34 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -201,6 +201,12 @@ NtWriteFile=NtWriteFile@36 PoQueryPowerSequence=PoQueryPowerSequence@0 PoRequestPowerChange=PoRequestPowerChange@12 PoSetDeviceIdleDetection=PoSetDeviceIdleDetection@8 +READ_REGISTER_UCHAR +READ_REGISTER_ULONG +READ_REGISTER_USHORT +READ_REGISTER_BUFFER_UCHAR +READ_REGISTER_BUFFER_ULONG +READ_REGISTER_BUFFER_USHORT RtlAnsiCharToUnicodeChar=RtlAnsiCharToUnicodeChar@4 RtlAnsiStringToUnicodeSize=RtlAnsiStringToUnicodeSize@4 RtlAnsiStringToUnicodeString=RtlAnsiStringToUnicodeString@12 @@ -214,6 +220,7 @@ RtlCompareString=RtlCompareString@12 RtlCompareUnicodeString=RtlCompareUnicodeString@12 RtlConvertLongToLargeInteger=RtlConvertLongToLargeInteger@4 RtlConvertUlongToLargeInteger=RtlConvertUlongToLargeInteger@4 +RtlCopyLuid=RtlCopyLuid@8 RtlCopyMemory RtlCopyString=RtlCopyString@8 RtlCopyUnicodeString=RtlCopyUnicodeString@8 @@ -222,6 +229,7 @@ RtlDowncaseUnicodeString=RtlDowncaseUnicodeString@12 RtlEnlargedIntegerMultiply=RtlEnlargedIntegerMultiply@8 RtlEnlargedUnsignedDivide=RtlEnlargedUnsignedDivide@16 RtlEnlargedUnsignedMultiply=RtlEnlargedUnsignedMultiply@8 +RtlEqualLuid=RtlEqualLuid@8 RtlEqualString=RtlEqualString@12 RtlEqualUnicodeString=RtlEqualUnicodeString@12 RtlExtendedIntegerMultiply=RtlExtendedIntegerMultiply@12 @@ -276,6 +284,12 @@ RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4 RtlxOemStringToUnicodeSize=RtlxOemStringToUnicodeSize@4 RtlxUnicodeStringToAnsiSize=RtlxUnicodeStringToAnsiSize@4 RtlxUnicodeStringToOemSize=RtlxUnicodeStringToOemSize@4 +WRITE_REGISTER_UCHAR +WRITE_REGISTER_ULONG +WRITE_REGISTER_USHORT +WRITE_REGISTER_BUFFER_UCHAR +WRITE_REGISTER_BUFFER_ULONG +WRITE_REGISTER_BUFFER_USHORT ZwAccessCheckAndAuditAlarm=ZwAccessCheckAndAuditAlarm@44 ZwAlertThread=ZwAlertThread@4 ZwAllocateVirtualMemory=ZwAllocateVirtualMemory@24 diff --git a/reactos/ntoskrnl/rtl/regio.c b/reactos/ntoskrnl/rtl/regio.c new file mode 100644 index 00000000000..ab9f0f67d1b --- /dev/null +++ b/reactos/ntoskrnl/rtl/regio.c @@ -0,0 +1,146 @@ +/* $Id: regio.c,v 1.1 1999/12/29 01:35:53 ekohl Exp $ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: ntoskrnl/rtl/regio.c + * PURPOSE: Register io functions + * PROGRAMMER: Eric Kohl (ekohl@abo.rhein-zeitung.de) + * REVISION HISTORY: + * 29/12/1999 Created + */ + +#include + + +/* FUNCTIONS ***************************************************************/ + +UCHAR +READ_REGISTER_UCHAR ( + PUCHAR Register + ) +{ + return *Register; +} + +USHORT +READ_REGISTER_USHORT ( + PUSHORT Register + ) +{ + return *Register; +} + +ULONG +READ_REGISTER_ULONG ( + PULONG Register + ) +{ + return *Register; +} + +VOID +READ_REGISTER_BUFFER_UCHAR ( + PUCHAR Register, + PUCHAR Buffer, + ULONG Count + ) +{ + while (Count--) + { + *Buffer++ = *Register++; + } +} + +VOID +READ_REGISTER_BUFFER_USHORT ( + PUSHORT Register, + PUSHORT Buffer, + ULONG Count + ) +{ + while (Count--) + { + *Buffer++ = *Register++; + } +} + +VOID +READ_REGISTER_BUFFER_ULONG ( + PULONG Register, + PULONG Buffer, + ULONG Count + ) +{ + while (Count--) + { + *Buffer++ = *Register++; + } +} + +VOID +WRITE_REGISTER_UCHAR ( + PUCHAR Register, + UCHAR Value + ) +{ + *Register = Value; +} + +VOID +WRITE_REGISTER_USHORT ( + PUSHORT Register, + USHORT Value + ) +{ + *Register = Value; +} + +VOID +WRITE_REGISTER_ULONG ( + PULONG Register, + ULONG Value + ) +{ + *Register = Value; +} + +VOID +WRITE_REGISTER_BUFFER_UCHAR ( + PUCHAR Register, + PUCHAR Buffer, + ULONG Count + ) +{ + while (Count--) + { + *Buffer++ = *Register++; + } +} + +VOID +WRITE_REGISTER_BUFFER_USHORT ( + PUSHORT Register, + PUSHORT Buffer, + ULONG Count + ) +{ + while (Count--) + { + *Buffer++ = *Register++; + } +} + +VOID +WRITE_REGISTER_BUFFER_ULONG ( + PULONG Register, + PULONG Buffer, + ULONG Count +) +{ + while (Count--) + { + *Buffer++ = *Register++; + } +} + +/* EOF */ \ No newline at end of file diff --git a/reactos/ntoskrnl/se/luid.c b/reactos/ntoskrnl/se/luid.c index b0136efeada..108655995a9 100644 --- a/reactos/ntoskrnl/se/luid.c +++ b/reactos/ntoskrnl/se/luid.c @@ -1,4 +1,4 @@ -/* $Id: luid.c,v 1.2 1999/12/26 17:22:19 ea Exp $ +/* $Id: luid.c,v 1.3 1999/12/29 01:36:06 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -35,3 +35,25 @@ NTSTATUS STDCALL NtAllocateLocallyUniqueId(OUT LUID* LocallyUniqueId) *LocallyUniqueId = ReturnedLuid; return(STATUS_SUCCESS); } + +VOID +STDCALL +RtlCopyLuid ( + PLUID LuidDest, + PLUID LuidSrc + ) +{ + LuidDest->QuadPart = LuidSrc->QuadPart; +} + +BOOLEAN +STDCALL +RtlEqualLuid ( + PLUID Luid1, + PLUID Luid2 + ) +{ + return ((Luid1->QuadPart == Luid2->QuadPart) ? TRUE : FALSE); +} + +/* EOF */