ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
August 2011
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
18 participants
498 discussions
Start a n
N
ew thread
[tkreuzer] 53371: [VIDEOPORT] Fix build
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Aug 22 15:04:17 2011 New Revision: 53371 URL:
http://svn.reactos.org/svn/reactos?rev=53371&view=rev
Log: [VIDEOPORT] Fix build Modified: trunk/reactos/drivers/video/videoprt/videoprt.spec Modified: trunk/reactos/drivers/video/videoprt/videoprt.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/videoprt/vid…
============================================================================== --- trunk/reactos/drivers/video/videoprt/videoprt.spec [iso-8859-1] (original) +++ trunk/reactos/drivers/video/videoprt/videoprt.spec [iso-8859-1] Mon Aug 22 15:04:17 2011 @@ -47,9 +47,9 @@ @ fastcall -arch=i386,arm VideoPortInterlockedDecrement(ptr) NTOSKRNL.InterlockedDecrement @ fastcall -arch=amd64 VideoPortInterlockedDecrement(ptr) @ fastcall -arch=i386,arm VideoPortInterlockedExchange(ptr long) NTOSKRNL.InterlockedExchange -@ fastcall VideoPortInterlockedExchange(ptr long) +@ fastcall -arch=amd64 VideoPortInterlockedExchange(ptr long) @ fastcall -arch=i386,arm VideoPortInterlockedIncrement(ptr) NTOSKRNL.InterlockedIncrement -@ fastcall VideoPortInterlockedIncrement(ptr) +@ fastcall -arch=amd64 VideoPortInterlockedIncrement(ptr) @ stdcall VideoPortIsNoVesa() @ stdcall VideoPortLockBuffer(ptr ptr long long) @ stdcall VideoPortLockPages(ptr ptr ptr ptr long)
13 years, 4 months
1
0
0
0
[tkreuzer] 53370: [VIDEOPRT] Add neccessary function stubs for amd64
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Aug 22 14:11:14 2011 New Revision: 53370 URL:
http://svn.reactos.org/svn/reactos?rev=53370&view=rev
Log: [VIDEOPRT] Add neccessary function stubs for amd64 Modified: trunk/reactos/drivers/video/videoprt/stubs.c trunk/reactos/drivers/video/videoprt/videoprt.spec Modified: trunk/reactos/drivers/video/videoprt/stubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/videoprt/stu…
============================================================================== --- trunk/reactos/drivers/video/videoprt/stubs.c [iso-8859-1] (original) +++ trunk/reactos/drivers/video/videoprt/stubs.c [iso-8859-1] Mon Aug 22 14:11:14 2011 @@ -90,3 +90,261 @@ UNIMPLEMENTED; return 0; } + +#ifdef _M_AMD64 +UCHAR +NTAPI +VideoPortReadPortUchar( + PUCHAR Port) +{ + return READ_PORT_UCHAR(Port); +} + +USHORT +NTAPI +VideoPortReadPortUshort( + PUSHORT Port) +{ + return READ_PORT_USHORT(Port); +} + +ULONG +NTAPI +VideoPortReadPortUlong( + PULONG Port) +{ + return READ_PORT_ULONG(Port); +} + +VOID +NTAPI +VideoPortReadPortBufferUchar( + PUCHAR Port, + PUCHAR Buffer, + ULONG Count) +{ + READ_PORT_BUFFER_UCHAR(Port, Buffer, Count); +} + +VOID +NTAPI +VideoPortReadPortBufferUshort( + PUSHORT Port, + PUSHORT Buffer, + ULONG Count) +{ + READ_PORT_BUFFER_USHORT(Port, Buffer, Count); +} + +VOID +NTAPI +VideoPortReadPortBufferUlong( + PULONG Port, + PULONG Buffer, + ULONG Count) +{ + READ_PORT_BUFFER_ULONG(Port, Buffer, Count); +} + +UCHAR +NTAPI +VideoPortReadRegisterUchar( + PUCHAR Register) +{ + return READ_REGISTER_UCHAR(Register); +} + +USHORT +NTAPI +VideoPortReadRegisterUshort( + PUSHORT Register) +{ + return READ_REGISTER_USHORT(Register); +} + +ULONG +NTAPI +VideoPortReadRegisterUlong( + PULONG Register) +{ + return READ_REGISTER_ULONG(Register); +} + +VOID +NTAPI +VideoPortReadRegisterBufferUchar( + PUCHAR Register, + PUCHAR Buffer, + ULONG Count) +{ + READ_REGISTER_BUFFER_UCHAR(Register, Buffer, Count); +} + +VOID +NTAPI +VideoPortReadRegisterBufferUshort( + PUSHORT Register, + PUSHORT Buffer, + ULONG Count) +{ + READ_REGISTER_BUFFER_USHORT(Register, Buffer, Count); +} + +VOID +NTAPI +VideoPortReadRegisterBufferUlong( + PULONG Register, + PULONG Buffer, + ULONG Count) +{ + READ_REGISTER_BUFFER_ULONG(Register, Buffer, Count); +} + +VOID +NTAPI +VideoPortWritePortUchar( + PUCHAR Port, + UCHAR Value) +{ + WRITE_PORT_UCHAR(Port, Value); +} + +VOID +NTAPI +VideoPortWritePortUshort( + PUSHORT Port, + USHORT Value) +{ + WRITE_PORT_USHORT(Port, Value); +} + +VOID +NTAPI +VideoPortWritePortUlong( + PULONG Port, + ULONG Value) +{ + WRITE_PORT_ULONG(Port, Value); +} + +VOID +NTAPI +VideoPortWritePortBufferUchar( + PUCHAR Port, + PUCHAR Buffer, + ULONG Count) +{ + WRITE_PORT_BUFFER_UCHAR(Port, Buffer, Count); +} + +VOID +NTAPI +VideoPortWritePortBufferUshort( + PUSHORT Port, + PUSHORT Buffer, + ULONG Count) +{ + WRITE_PORT_BUFFER_USHORT(Port, Buffer, Count); +} + +VOID +NTAPI +VideoPortWritePortBufferUlong( + PULONG Port, + PULONG Buffer, + ULONG Count) +{ + WRITE_PORT_BUFFER_ULONG(Port, Buffer, Count); +} + +VOID +NTAPI +VideoPortWriteRegisterUchar( + PUCHAR Register, + UCHAR Value) +{ + WRITE_REGISTER_UCHAR(Register, Value); +} + +VOID +NTAPI +VideoPortWriteRegisterUshort( + PUSHORT Register, + USHORT Value) +{ + WRITE_REGISTER_USHORT(Register, Value); +} + +VOID +NTAPI +VideoPortWriteRegisterUlong( + PULONG Register, + ULONG Value) +{ + WRITE_REGISTER_ULONG(Register, Value); +} + +VOID +NTAPI +VideoPortWriteRegisterBufferUchar( + PUCHAR Register, + PUCHAR Buffer, + ULONG Count) +{ + WRITE_REGISTER_BUFFER_UCHAR(Register, Buffer, Count); +} + +VOID +NTAPI +VideoPortWriteRegisterBufferUshort( + PUSHORT Register, + PUSHORT Buffer, + ULONG Count) +{ + WRITE_REGISTER_BUFFER_USHORT(Register, Buffer, Count); +} + +VOID +NTAPI +VideoPortWriteRegisterBufferUlong( + PULONG Register, + PULONG Buffer, + ULONG Count) +{ + WRITE_REGISTER_BUFFER_ULONG(Register, Buffer, Count); +} + +LONG +FASTCALL +VideoPortInterlockedDecrement( + IN PLONG Addend) +{ + return _InterlockedDecrement(Addend); +} + +LONG +FASTCALL +VideoPortInterlockedIncrement( + IN PLONG Addend) +{ + return _InterlockedIncrement(Addend); +} + +LONG +FASTCALL +VideoPortInterlockedExchange( + IN OUT PLONG Target, + IN LONG Value) +{ + return InterlockedExchange(Target, Value); +} + +VOID +NTAPI +VideoPortQuerySystemTime( + OUT PLARGE_INTEGER CurrentTime) +{ + KeQuerySystemTime(CurrentTime); +} + +#endif /* _M_AMD64 */ Modified: trunk/reactos/drivers/video/videoprt/videoprt.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/video/videoprt/vid…
============================================================================== --- trunk/reactos/drivers/video/videoprt/videoprt.spec [iso-8859-1] (original) +++ trunk/reactos/drivers/video/videoprt/videoprt.spec [iso-8859-1] Mon Aug 22 14:11:14 2011 @@ -44,9 +44,12 @@ @ stdcall VideoPortGetVgaStatus(ptr ptr) @ stdcall VideoPortInitialize(ptr ptr ptr ptr) @ stdcall VideoPortInt10(ptr ptr) -@ fastcall VideoPortInterlockedDecrement(ptr) NTOSKRNL.InterlockedDecrement -@ fastcall VideoPortInterlockedExchange(ptr long) NTOSKRNL.InterlockedExchange -@ fastcall VideoPortInterlockedIncrement(ptr) NTOSKRNL.InterlockedIncrement +@ fastcall -arch=i386,arm VideoPortInterlockedDecrement(ptr) NTOSKRNL.InterlockedDecrement +@ fastcall -arch=amd64 VideoPortInterlockedDecrement(ptr) +@ fastcall -arch=i386,arm VideoPortInterlockedExchange(ptr long) NTOSKRNL.InterlockedExchange +@ fastcall VideoPortInterlockedExchange(ptr long) +@ fastcall -arch=i386,arm VideoPortInterlockedIncrement(ptr) NTOSKRNL.InterlockedIncrement +@ fastcall VideoPortInterlockedIncrement(ptr) @ stdcall VideoPortIsNoVesa() @ stdcall VideoPortLockBuffer(ptr ptr long long) @ stdcall VideoPortLockPages(ptr ptr ptr ptr long) @@ -58,20 +61,33 @@ @ stdcall VideoPortPutDmaAdapter(ptr ptr) @ stdcall VideoPortQueryPerformanceCounter(ptr ptr) @ stdcall VideoPortQueryServices(ptr long ptr) -@ stdcall VideoPortQuerySystemTime(ptr) NTOSKRNL.KeQuerySystemTime +@ stdcall -arch=i386,arm VideoPortQuerySystemTime(ptr) NTOSKRNL.KeQuerySystemTime +@ stdcall -arch=amd64 VideoPortQuerySystemTime(ptr) @ stdcall VideoPortQueueDpc(ptr ptr ptr) -@ stdcall VideoPortReadPortUchar(ptr) HAL.READ_PORT_UCHAR -@ stdcall VideoPortReadPortUshort(ptr) HAL.READ_PORT_USHORT -@ stdcall VideoPortReadPortUlong(ptr) HAL.READ_PORT_ULONG -@ stdcall VideoPortReadPortBufferUchar(ptr ptr long) HAL.READ_PORT_BUFFER_UCHAR -@ stdcall VideoPortReadPortBufferUshort(ptr ptr long) HAL.READ_PORT_BUFFER_USHORT -@ stdcall VideoPortReadPortBufferUlong(ptr ptr long) HAL.READ_PORT_BUFFER_ULONG -@ stdcall VideoPortReadRegisterUchar(ptr) NTOSKRNL.READ_REGISTER_UCHAR -@ stdcall VideoPortReadRegisterUshort(ptr) NTOSKRNL.READ_REGISTER_USHORT -@ stdcall VideoPortReadRegisterUlong(ptr) NTOSKRNL.READ_REGISTER_ULONG -@ stdcall VideoPortReadRegisterBufferUchar(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_UCHAR -@ stdcall VideoPortReadRegisterBufferUshort(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_USHORT -@ stdcall VideoPortReadRegisterBufferUlong(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_ULONG +@ stdcall -arch=i386,arm VideoPortReadPortUchar(ptr) HAL.READ_PORT_UCHAR +@ stdcall -arch=amd64 VideoPortReadPortUchar(ptr) +@ stdcall -arch=i386,arm VideoPortReadPortUshort(ptr) HAL.READ_PORT_USHORT +@ stdcall -arch=amd64 VideoPortReadPortUshort(ptr) +@ stdcall -arch=i386,arm VideoPortReadPortUlong(ptr) HAL.READ_PORT_ULONG +@ stdcall -arch=amd64 VideoPortReadPortUlong(ptr) +@ stdcall -arch=i386,arm VideoPortReadPortBufferUchar(ptr ptr long) HAL.READ_PORT_BUFFER_UCHAR +@ stdcall -arch=amd64 VideoPortReadPortBufferUchar(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortReadPortBufferUshort(ptr ptr long) HAL.READ_PORT_BUFFER_USHORT +@ stdcall -arch=amd64 VideoPortReadPortBufferUshort(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortReadPortBufferUlong(ptr ptr long) HAL.READ_PORT_BUFFER_ULONG +@ stdcall -arch=amd64 VideoPortReadPortBufferUlong(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortReadRegisterUchar(ptr) NTOSKRNL.READ_REGISTER_UCHAR +@ stdcall -arch=amd64 VideoPortReadRegisterUchar(ptr) +@ stdcall -arch=i386,arm VideoPortReadRegisterUshort(ptr) NTOSKRNL.READ_REGISTER_USHORT +@ stdcall -arch=amd64 VideoPortReadRegisterUshort(ptr) +@ stdcall -arch=i386,arm VideoPortReadRegisterUlong(ptr) NTOSKRNL.READ_REGISTER_ULONG +@ stdcall -arch=amd64 VideoPortReadRegisterUlong(ptr) +@ stdcall -arch=i386,arm VideoPortReadRegisterBufferUchar(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_UCHAR +@ stdcall -arch=amd64 VideoPortReadRegisterBufferUchar(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortReadRegisterBufferUshort(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_USHORT +@ stdcall -arch=amd64 VideoPortReadRegisterBufferUshort(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortReadRegisterBufferUlong(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_ULONG +@ stdcall -arch=amd64 VideoPortReadRegisterBufferUlong(ptr ptr long) @ stdcall VideoPortReadStateEvent(ptr ptr) @ stdcall VideoPortRegisterBugcheckCallback(ptr long ptr long) @ stdcall VideoPortReleaseBuffer(ptr ptr) @@ -98,18 +114,30 @@ @ stdcall VideoPortUnmapMemory(ptr ptr ptr) @ stdcall VideoPortVerifyAccessRanges(ptr long ptr) @ stdcall VideoPortWaitForSingleObject(ptr ptr ptr) -@ stdcall VideoPortWritePortUchar(ptr long) HAL.WRITE_PORT_UCHAR -@ stdcall VideoPortWritePortUshort(ptr long) HAL.WRITE_PORT_USHORT -@ stdcall VideoPortWritePortUlong(ptr long) HAL.WRITE_PORT_ULONG -@ stdcall VideoPortWritePortBufferUchar(ptr ptr long) HAL.WRITE_PORT_BUFFER_UCHAR -@ stdcall VideoPortWritePortBufferUshort(ptr ptr long) HAL.WRITE_PORT_BUFFER_USHORT -@ stdcall VideoPortWritePortBufferUlong(ptr ptr long) HAL.WRITE_PORT_BUFFER_ULONG -@ stdcall VideoPortWriteRegisterUchar(ptr long) NTOSKRNL.WRITE_REGISTER_UCHAR -@ stdcall VideoPortWriteRegisterUshort(ptr long) NTOSKRNL.WRITE_REGISTER_USHORT -@ stdcall VideoPortWriteRegisterUlong(ptr long) NTOSKRNL.WRITE_REGISTER_ULONG -@ stdcall VideoPortWriteRegisterBufferUchar(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_UCHAR -@ stdcall VideoPortWriteRegisterBufferUshort(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_USHORT -@ stdcall VideoPortWriteRegisterBufferUlong(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_ULONG +@ stdcall -arch=i386,arm VideoPortWritePortUchar(ptr long) HAL.WRITE_PORT_UCHAR +@ stdcall -arch=amd64 VideoPortWritePortUchar(ptr long) +@ stdcall -arch=i386,arm VideoPortWritePortUshort(ptr long) HAL.WRITE_PORT_USHORT +@ stdcall -arch=amd64 VideoPortWritePortUshort(ptr long) +@ stdcall -arch=i386,arm VideoPortWritePortUlong(ptr long) HAL.WRITE_PORT_ULONG +@ stdcall -arch=amd64 VideoPortWritePortUlong(ptr long) +@ stdcall -arch=i386,arm VideoPortWritePortBufferUchar(ptr ptr long) HAL.WRITE_PORT_BUFFER_UCHAR +@ stdcall -arch=amd64 VideoPortWritePortBufferUchar(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortWritePortBufferUshort(ptr ptr long) HAL.WRITE_PORT_BUFFER_USHORT +@ stdcall -arch=amd64 VideoPortWritePortBufferUshort(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortWritePortBufferUlong(ptr ptr long) HAL.WRITE_PORT_BUFFER_ULONG +@ stdcall -arch=amd64 VideoPortWritePortBufferUlong(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortWriteRegisterUchar(ptr long) NTOSKRNL.WRITE_REGISTER_UCHAR +@ stdcall -arch=amd64 VideoPortWriteRegisterUchar(ptr long) +@ stdcall -arch=i386,arm VideoPortWriteRegisterUshort(ptr long) NTOSKRNL.WRITE_REGISTER_USHORT +@ stdcall -arch=amd64 VideoPortWriteRegisterUshort(ptr long) +@ stdcall -arch=i386,arm VideoPortWriteRegisterUlong(ptr long) NTOSKRNL.WRITE_REGISTER_ULONG +@ stdcall -arch=amd64 VideoPortWriteRegisterUlong(ptr long) +@ stdcall -arch=i386,arm VideoPortWriteRegisterBufferUchar(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_UCHAR +@ stdcall -arch=amd64 VideoPortWriteRegisterBufferUchar(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortWriteRegisterBufferUshort(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_USHORT +@ stdcall -arch=amd64 VideoPortWriteRegisterBufferUshort(ptr ptr long) +@ stdcall -arch=i386,arm VideoPortWriteRegisterBufferUlong(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_ULONG +@ stdcall -arch=amd64 VideoPortWriteRegisterBufferUlong(ptr ptr long) @ stdcall VideoPortZeroMemory(ptr long) NTOSKRNL.RtlZeroMemory @ stdcall VideoPortZeroDeviceMemory(ptr long) NTOSKRNL.RtlZeroMemory @ stdcall VpNotifyEaData(ptr ptr)
13 years, 4 months
1
0
0
0
[tkreuzer] 53369: [STLPORT] - Fix Interlocked* declarations - Fix amd64 build
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Aug 22 13:14:46 2011 New Revision: 53369 URL:
http://svn.reactos.org/svn/reactos?rev=53369&view=rev
Log: [STLPORT] - Fix Interlocked* declarations - Fix amd64 build Modified: trunk/reactos/include/c++/stlport/stl/config/_reactos.h trunk/reactos/include/c++/stlport/stl/config/_windows.h Modified: trunk/reactos/include/c++/stlport/stl/config/_reactos.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/c%2B%2B/stlport/st…
============================================================================== --- trunk/reactos/include/c++/stlport/stl/config/_reactos.h [iso-8859-1] (original) +++ trunk/reactos/include/c++/stlport/stl/config/_reactos.h [iso-8859-1] Mon Aug 22 13:14:46 2011 @@ -302,13 +302,11 @@ // Calling convention #define _STLP_CALL __cdecl -// Include stlport windows specifics -#include "_windows.h" - #ifdef _M_AMD64 #ifdef __cplusplus extern "C" { #endif + void * _InterlockedExchangePointer(void * volatile * Target, void * Value); _STLP_IMPORT_DECLSPEC void* InterlockedFlushSList(void*); _STLP_IMPORT_DECLSPEC void* InterlockedPopEntrySList(void*); _STLP_IMPORT_DECLSPEC void* InterlockedPushEntrySList(void*, void*); @@ -320,6 +318,9 @@ #undef __cdecl__ #define __cdecl__ +#endif /* _M_AMD64 */ + +// Include stlport windows specifics +#include "_windows.h" + #endif - -#endif Modified: trunk/reactos/include/c++/stlport/stl/config/_windows.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/c%2B%2B/stlport/st…
============================================================================== --- trunk/reactos/include/c++/stlport/stl/config/_windows.h [iso-8859-1] (original) +++ trunk/reactos/include/c++/stlport/stl/config/_windows.h [iso-8859-1] Mon Aug 22 13:14:46 2011 @@ -114,9 +114,9 @@ /* boris : for the latest SDK, you may actually need the other version of the declaration (above) * even for earlier VC++ versions. There is no way to tell SDK versions apart, sorry ... */ -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long*); -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long*); -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long*, long); +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long volatile *); +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long volatile *); +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long volatile *, long); # else /* start of eMbedded Visual C++ specific section */ # include <stl/config/_native_headers.h>
13 years, 4 months
1
0
0
0
[tkreuzer] 53368: [NTOSKRNL] Remove a duplicate export
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Mon Aug 22 12:24:04 2011 New Revision: 53368 URL:
http://svn.reactos.org/svn/reactos?rev=53368&view=rev
Log: [NTOSKRNL] Remove a duplicate export Modified: trunk/reactos/ntoskrnl/ntoskrnl.spec Modified: trunk/reactos/ntoskrnl/ntoskrnl.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.spec?rev…
============================================================================== --- trunk/reactos/ntoskrnl/ntoskrnl.spec [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ntoskrnl.spec [iso-8859-1] Mon Aug 22 12:24:04 2011 @@ -655,7 +655,6 @@ @ fastcall KeReleaseGuardedMutex(ptr) @ fastcall KeReleaseGuardedMutexUnsafe(ptr) @ fastcall KeReleaseInStackQueuedSpinLockForDpc(ptr) -@ cdecl -arch=x86_64 KeReleaseInStackQueuedSpinLockForDpc(ptr) @ fastcall KeReleaseInStackQueuedSpinLockFromDpcLevel(ptr) @ stdcall KeReleaseInterruptSpinLock(ptr long) @ stdcall KeReleaseMutant(ptr long long long)
13 years, 4 months
1
0
0
0
[tfaber] 53367: [KMTESTS/KE] - Add concurrent testing to KeGuardedMutex test (part 2/2)
by tfaber@svn.reactos.org
Author: tfaber Date: Mon Aug 22 10:02:12 2011 New Revision: 53367 URL:
http://svn.reactos.org/svn/reactos?rev=53367&view=rev
Log: [KMTESTS/KE] - Add concurrent testing to KeGuardedMutex test (part 2/2) Modified: branches/GSoC_2011/KMTestSuite/kmtests/ntos_ke/KeGuardedMutex.c Modified: branches/GSoC_2011/KMTestSuite/kmtests/ntos_ke/KeGuardedMutex.c URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/n…
============================================================================== --- branches/GSoC_2011/KMTestSuite/kmtests/ntos_ke/KeGuardedMutex.c [iso-8859-1] (original) +++ branches/GSoC_2011/KMTestSuite/kmtests/ntos_ke/KeGuardedMutex.c [iso-8859-1] Mon Aug 22 10:02:12 2011 @@ -114,6 +114,185 @@ ok_eq_int(Thread->SpecialApcDisable, SpecialApcsDisabled); Thread->SpecialApcDisable = SpecialApcsDisabled; ok_irql(OriginalIrql); +} + +typedef VOID (FASTCALL *PMUTEX_FUNCTION)(PKGUARDED_MUTEX); +typedef BOOLEAN (FASTCALL *PMUTEX_TRY_FUNCTION)(PKGUARDED_MUTEX); + +typedef struct +{ + HANDLE Handle; + PKTHREAD Thread; + KIRQL Irql; + PKGUARDED_MUTEX Mutex; + PMUTEX_FUNCTION Acquire; + PMUTEX_TRY_FUNCTION TryAcquire; + PMUTEX_FUNCTION Release; + BOOLEAN Try; + BOOLEAN RetExpected; + KEVENT InEvent; + KEVENT OutEvent; +} THREAD_DATA, *PTHREAD_DATA; + +static +VOID +NTAPI +AcquireMutexThread( + PVOID Parameter) +{ + PTHREAD_DATA ThreadData = Parameter; + KIRQL Irql; + BOOLEAN Ret = FALSE; + NTSTATUS Status; + + DPRINT("Thread starting\n"); + KeRaiseIrql(ThreadData->Irql, &Irql); + + if (ThreadData->Try) + { + Ret = ThreadData->TryAcquire(ThreadData->Mutex); + ok_eq_bool(Ret, ThreadData->RetExpected); + } + else + ThreadData->Acquire(ThreadData->Mutex); + + ok_bool_false(KeSetEvent(&ThreadData->OutEvent, 0, TRUE), "KeSetEvent returned"); + DPRINT("Thread now waiting\n"); + Status = KeWaitForSingleObject(&ThreadData->InEvent, Executive, KernelMode, FALSE, NULL); + DPRINT("Thread done waiting\n"); + ok_eq_hex(Status, STATUS_SUCCESS); + + if (!ThreadData->Try || Ret) + ThreadData->Release(ThreadData->Mutex); + + KeLowerIrql(Irql); + DPRINT("Thread exiting\n"); +} + +static +VOID +InitThreadData( + PTHREAD_DATA ThreadData, + PKGUARDED_MUTEX Mutex, + PMUTEX_FUNCTION Acquire, + PMUTEX_TRY_FUNCTION TryAcquire, + PMUTEX_FUNCTION Release) +{ + ThreadData->Mutex = Mutex; + KeInitializeEvent(&ThreadData->InEvent, NotificationEvent, FALSE); + KeInitializeEvent(&ThreadData->OutEvent, NotificationEvent, FALSE); + ThreadData->Acquire = Acquire; + ThreadData->TryAcquire = TryAcquire; + ThreadData->Release = Release; +} + +static +NTSTATUS +StartThread( + PTHREAD_DATA ThreadData, + PLARGE_INTEGER Timeout, + KIRQL Irql, + BOOLEAN Try, + BOOLEAN RetExpected) +{ + NTSTATUS Status = STATUS_SUCCESS; + OBJECT_ATTRIBUTES Attributes; + + ThreadData->Try = Try; + ThreadData->Irql = Irql; + ThreadData->RetExpected = RetExpected; + InitializeObjectAttributes(&Attributes, NULL, OBJ_KERNEL_HANDLE, NULL, NULL); + Status = PsCreateSystemThread(&ThreadData->Handle, GENERIC_ALL, &Attributes, NULL, NULL, AcquireMutexThread, ThreadData); + ok_eq_hex(Status, STATUS_SUCCESS); + Status = ObReferenceObjectByHandle(ThreadData->Handle, SYNCHRONIZE, PsThreadType, KernelMode, (PVOID *)&ThreadData->Thread, NULL); + ok_eq_hex(Status, STATUS_SUCCESS); + + return KeWaitForSingleObject(&ThreadData->OutEvent, Executive, KernelMode, FALSE, Timeout); +} + +static +VOID +FinishThread( + PTHREAD_DATA ThreadData) +{ + NTSTATUS Status = STATUS_SUCCESS; + + KeSetEvent(&ThreadData->InEvent, 0, TRUE); + Status = KeWaitForSingleObject(ThreadData->Thread, Executive, KernelMode, FALSE, NULL); + ok_eq_hex(Status, STATUS_SUCCESS); + + ObDereferenceObject(ThreadData->Thread); + Status = ZwClose(ThreadData->Handle); + ok_eq_hex(Status, STATUS_SUCCESS); + KeClearEvent(&ThreadData->InEvent); + KeClearEvent(&ThreadData->OutEvent); +} + +static +VOID +TestGuardedMutexConcurrent( + PKGUARDED_MUTEX Mutex) +{ + NTSTATUS Status; + THREAD_DATA ThreadData; + THREAD_DATA ThreadData2; + THREAD_DATA ThreadDataUnsafe; + THREAD_DATA ThreadDataTry; + PKTHREAD Thread = KeGetCurrentThread(); + LARGE_INTEGER Timeout; + Timeout.QuadPart = -10 * 1000 * 10; /* 10 ms */ + + InitThreadData(&ThreadData, Mutex, KeAcquireGuardedMutex, NULL, KeReleaseGuardedMutex); + InitThreadData(&ThreadData2, Mutex, KeAcquireGuardedMutex, NULL, KeReleaseGuardedMutex); + InitThreadData(&ThreadDataUnsafe, Mutex, KeAcquireGuardedMutexUnsafe, NULL, KeReleaseGuardedMutexUnsafe); + InitThreadData(&ThreadDataTry, Mutex, NULL, KeTryToAcquireGuardedMutex, KeReleaseGuardedMutex); + + /* have a thread acquire the mutex */ + Status = StartThread(&ThreadData, NULL, PASSIVE_LEVEL, FALSE, FALSE); + ok_eq_hex(Status, STATUS_SUCCESS); + CheckMutex(Mutex, 0L, ThreadData.Thread, 0LU, 0x5555, -1, 0, 0, FALSE, PASSIVE_LEVEL); + /* have a second thread try to acquire it -- should fail */ + Status = StartThread(&ThreadDataTry, NULL, PASSIVE_LEVEL, TRUE, FALSE); + ok_eq_hex(Status, STATUS_SUCCESS); + CheckMutex(Mutex, 0L, ThreadData.Thread, 0LU, 0x5555, -1, 0, 0, FALSE, PASSIVE_LEVEL); + FinishThread(&ThreadDataTry); + + /* have another thread acquire it -- should block */ + Status = StartThread(&ThreadData2, &Timeout, APC_LEVEL, FALSE, FALSE); + ok_eq_hex(Status, STATUS_TIMEOUT); + CheckMutex(Mutex, 4L, ThreadData.Thread, 1LU, 0x5555, -1, 0, 0, FALSE, PASSIVE_LEVEL); + + /* finish the first thread -- now the second should become available */ + FinishThread(&ThreadData); + Status = KeWaitForSingleObject(&ThreadData2.OutEvent, Executive, KernelMode, FALSE, NULL); + ok_eq_hex(Status, STATUS_SUCCESS); + CheckMutex(Mutex, 0L, ThreadData2.Thread, 1LU, 0x5555, -1, 0, 0, FALSE, PASSIVE_LEVEL); + + /* block two more threads */ + Status = StartThread(&ThreadDataUnsafe, &Timeout, APC_LEVEL, FALSE, FALSE); + ok_eq_hex(Status, STATUS_TIMEOUT); + CheckMutex(Mutex, 4L, ThreadData2.Thread, 2LU, 0x5555, -1, 0, 0, FALSE, PASSIVE_LEVEL); + + Status = StartThread(&ThreadData, &Timeout, PASSIVE_LEVEL, FALSE, FALSE); + ok_eq_hex(Status, STATUS_TIMEOUT); + CheckMutex(Mutex, 8L, ThreadData2.Thread, 3LU, 0x5555, -1, 0, 0, FALSE, PASSIVE_LEVEL); + + /* finish 1 */ + FinishThread(&ThreadData2); + Status = KeWaitForSingleObject(&ThreadDataUnsafe.OutEvent, Executive, KernelMode, FALSE, NULL); + ok_eq_hex(Status, STATUS_SUCCESS); + CheckMutex(Mutex, 4L, ThreadDataUnsafe.Thread, 3LU, 0x5555, -1, 0, 0, FALSE, PASSIVE_LEVEL); + + /* finish 2 */ + FinishThread(&ThreadDataUnsafe); + Status = KeWaitForSingleObject(&ThreadData.OutEvent, Executive, KernelMode, FALSE, NULL); + ok_eq_hex(Status, STATUS_SUCCESS); + CheckMutex(Mutex, 0L, ThreadData.Thread, 3LU, 0x5555, -1, 0, 0, FALSE, PASSIVE_LEVEL); + + /* finish 3 */ + FinishThread(&ThreadData); + + CheckMutex(Mutex, 1L, NULL, 3LU, 0x5555, -1, 0, 0, FALSE, PASSIVE_LEVEL); } START_TEST(KeGuardedMutex) @@ -174,4 +353,9 @@ Thread->KernelApcDisable = 0; KeLowerIrql(OldIrql); } -} + + trace("Concurrent test\n"); + RtlFillMemory(&Mutex, sizeof Mutex, 0x55); + KeInitializeGuardedMutex(&Mutex); + TestGuardedMutexConcurrent(&Mutex); +}
13 years, 4 months
1
0
0
0
[tfaber] 53366: [KMTESTS/KE] - Add KeGuardedMutex test (part 1/2)
by tfaber@svn.reactos.org
Author: tfaber Date: Mon Aug 22 10:01:02 2011 New Revision: 53366 URL:
http://svn.reactos.org/svn/reactos?rev=53366&view=rev
Log: [KMTESTS/KE] - Add KeGuardedMutex test (part 1/2) Added: branches/GSoC_2011/KMTestSuite/kmtests/ntos_ke/KeGuardedMutex.c (with props) Modified: branches/GSoC_2011/KMTestSuite/kmtests/CMakeLists.txt branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv.rbuild branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/testlist.c Modified: branches/GSoC_2011/KMTestSuite/kmtests/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/C…
============================================================================== --- branches/GSoC_2011/KMTestSuite/kmtests/CMakeLists.txt [iso-8859-1] (original) +++ branches/GSoC_2011/KMTestSuite/kmtests/CMakeLists.txt [iso-8859-1] Mon Aug 22 10:01:02 2011 @@ -32,6 +32,7 @@ ntos_ke/KeApc.c ntos_ke/KeDpc.c ntos_ke/KeEvent.c + ntos_ke/KeGuardedMutex.c ntos_ke/KeIrql.c ntos_ke/KeProcessor.c ntos_ke/KeSpinLock.c Modified: branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/k…
============================================================================== --- branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv.rbuild [iso-8859-1] (original) +++ branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv.rbuild [iso-8859-1] Mon Aug 22 10:01:02 2011 @@ -37,6 +37,7 @@ <file>KeApc.c</file> <file>KeDpc.c</file> <file>KeEvent.c</file> + <file>KeGuardedMutex.c</file> <file>KeIrql.c</file> <file>KeProcessor.c</file> <file>KeSpinLock.c</file> Modified: branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/testlist.c URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/k…
============================================================================== --- branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/testlist.c [iso-8859-1] (original) +++ branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/testlist.c [iso-8859-1] Mon Aug 22 10:01:02 2011 @@ -25,6 +25,7 @@ KMT_TESTFUNC Test_KeApc; KMT_TESTFUNC Test_KeDpc; KMT_TESTFUNC Test_KeEvent; +KMT_TESTFUNC Test_KeGuardedMutex; KMT_TESTFUNC Test_KeIrql; KMT_TESTFUNC Test_KeProcessor; KMT_TESTFUNC Test_KernelType; @@ -55,6 +56,7 @@ { "KeApc", Test_KeApc }, { "KeDpc", Test_KeDpc }, { "KeEvent", Test_KeEvent }, + { "KeGuardedMutex", Test_KeGuardedMutex }, { "KeIrql", Test_KeIrql }, { "KeProcessor", Test_KeProcessor }, { "-KernelType", Test_KernelType }, Added: branches/GSoC_2011/KMTestSuite/kmtests/ntos_ke/KeGuardedMutex.c URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/n…
============================================================================== --- branches/GSoC_2011/KMTestSuite/kmtests/ntos_ke/KeGuardedMutex.c (added) +++ branches/GSoC_2011/KMTestSuite/kmtests/ntos_ke/KeGuardedMutex.c [iso-8859-1] Mon Aug 22 10:01:02 2011 @@ -1,0 +1,177 @@ +/* + * PROJECT: ReactOS kernel-mode tests + * LICENSE: GPLv2+ - See COPYING in the top level directory + * PURPOSE: Kernel-Mode Test Suite Guarded Mutex test + * PROGRAMMER: Thomas Faber <thfabba(a)gmx.de> + */ + +#include <kmt_test.h> + +#define NDEBUG +#include <debug.h> + +#define CheckMutex(Mutex, ExpectedCount, ExpectedOwner, ExpectedContention, \ + ExpectedKernelApcDisable, ExpectedSpecialApcDisable, \ + KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, \ + ExpectedIrql) do \ +{ \ + ok_eq_long((Mutex)->Count, ExpectedCount); \ + ok_eq_pointer((Mutex)->Owner, ExpectedOwner); \ + ok_eq_ulong((Mutex)->Contention, ExpectedContention); \ + ok_eq_int((Mutex)->KernelApcDisable, ExpectedKernelApcDisable); \ + if (KmtIsCheckedBuild) \ + ok_eq_int((Mutex)->SpecialApcDisable, ExpectedSpecialApcDisable); \ + else \ + ok_eq_int((Mutex)->SpecialApcDisable, 0x5555); \ + ok_eq_bool(KeAreApcsDisabled(), KernelApcsDisabled || SpecialApcsDisabled); \ + ok_eq_int(Thread->KernelApcDisable, KernelApcsDisabled); \ + ok_eq_bool(KeAreAllApcsDisabled(), AllApcsDisabled); \ + ok_eq_int(Thread->SpecialApcDisable, SpecialApcsDisabled); \ + ok_irql(ExpectedIrql); \ +} while (0) + +static +VOID +TestGuardedMutex( + PKGUARDED_MUTEX Mutex, + SHORT KernelApcsDisabled, + SHORT SpecialApcsDisabled, + SHORT AllApcsDisabled, + KIRQL OriginalIrql) +{ + PKTHREAD Thread = KeGetCurrentThread(); + + ok_irql(OriginalIrql); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, 0x5555, KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, OriginalIrql); + + /* these ASSERT */ + if (!KmtIsCheckedBuild || OriginalIrql <= APC_LEVEL) + { + /* acquire/release normally */ + KeAcquireGuardedMutex(Mutex); + CheckMutex(Mutex, 0L, Thread, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled - 1, TRUE, OriginalIrql); + ok_bool_false(KeTryToAcquireGuardedMutex(Mutex), "KeTryToAcquireGuardedMutex returned"); + CheckMutex(Mutex, 0L, Thread, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled - 1, TRUE, OriginalIrql); + KeReleaseGuardedMutex(Mutex); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, OriginalIrql); + + /* try to acquire */ + ok_bool_true(KeTryToAcquireGuardedMutex(Mutex), "KeTryToAcquireGuardedMutex returned"); + CheckMutex(Mutex, 0L, Thread, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled - 1, TRUE, OriginalIrql); + KeReleaseGuardedMutex(Mutex); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, OriginalIrql); + } + else + /* Make the following test happy */ + Mutex->SpecialApcDisable = SpecialApcsDisabled - 1; + + /* ASSERT */ + if (!KmtIsCheckedBuild || OriginalIrql == APC_LEVEL || SpecialApcsDisabled < 0) + { + /* acquire/release unsafe */ + KeAcquireGuardedMutexUnsafe(Mutex); + CheckMutex(Mutex, 0L, Thread, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, OriginalIrql); + KeReleaseGuardedMutexUnsafe(Mutex); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, OriginalIrql); + } + + /* Bugchecks >= DISPATCH_LEVEL */ + if (!KmtIsCheckedBuild) + { + /* mismatched acquire/release */ + KeAcquireGuardedMutex(Mutex); + CheckMutex(Mutex, 0L, Thread, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled - 1, TRUE, OriginalIrql); + KeReleaseGuardedMutexUnsafe(Mutex); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled - 1, TRUE, OriginalIrql); + KeLeaveGuardedRegion(); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, OriginalIrql); + + KeAcquireGuardedMutexUnsafe(Mutex); + CheckMutex(Mutex, 0L, Thread, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, OriginalIrql); + KeReleaseGuardedMutex(Mutex); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled + 1, OriginalIrql >= APC_LEVEL || SpecialApcsDisabled != -1, OriginalIrql); + KeEnterGuardedRegion(); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, OriginalIrql); + + /* release without acquire */ + KeReleaseGuardedMutexUnsafe(Mutex); + CheckMutex(Mutex, 0L, NULL, 0LU, 0x5555, SpecialApcsDisabled - 1, KernelApcsDisabled, SpecialApcsDisabled, AllApcsDisabled, OriginalIrql); + KeReleaseGuardedMutex(Mutex); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, SpecialApcsDisabled, KernelApcsDisabled, SpecialApcsDisabled + 1, OriginalIrql >= APC_LEVEL || SpecialApcsDisabled != -1, OriginalIrql); + KeReleaseGuardedMutex(Mutex); + /* TODO: here we see that Mutex->Count isn't actually just a count. Test the bits correctly! */ + CheckMutex(Mutex, 0L, NULL, 0LU, 0x5555, SpecialApcsDisabled, KernelApcsDisabled, SpecialApcsDisabled + 2, OriginalIrql >= APC_LEVEL || SpecialApcsDisabled != -2, OriginalIrql); + KeReleaseGuardedMutex(Mutex); + CheckMutex(Mutex, 1L, NULL, 0LU, 0x5555, SpecialApcsDisabled, KernelApcsDisabled, SpecialApcsDisabled + 3, OriginalIrql >= APC_LEVEL || SpecialApcsDisabled != -3, OriginalIrql); + Thread->SpecialApcDisable -= 3; + } + + /* make sure we survive this in case of error */ + ok_eq_long(Mutex->Count, 1L); + Mutex->Count = 1; + ok_eq_int(Thread->KernelApcDisable, KernelApcsDisabled); + Thread->KernelApcDisable = KernelApcsDisabled; + ok_eq_int(Thread->SpecialApcDisable, SpecialApcsDisabled); + Thread->SpecialApcDisable = SpecialApcsDisabled; + ok_irql(OriginalIrql); +} + +START_TEST(KeGuardedMutex) +{ + KGUARDED_MUTEX Mutex; + KIRQL OldIrql; + PKTHREAD Thread = KeGetCurrentThread(); + struct { + KIRQL Irql; + SHORT KernelApcsDisabled; + SHORT SpecialApcsDisabled; + BOOLEAN AllApcsDisabled; + } TestIterations[] = + { + { PASSIVE_LEVEL, 0, 0, FALSE }, + { PASSIVE_LEVEL, -1, 0, FALSE }, + { PASSIVE_LEVEL, -3, 0, FALSE }, + { PASSIVE_LEVEL, 0, -1, TRUE }, + { PASSIVE_LEVEL, -1, -1, TRUE }, + { PASSIVE_LEVEL, -3, -2, TRUE }, + // 6 + { APC_LEVEL, 0, 0, TRUE }, + { APC_LEVEL, -1, 0, TRUE }, + { APC_LEVEL, -3, 0, TRUE }, + { APC_LEVEL, 0, -1, TRUE }, + { APC_LEVEL, -1, -1, TRUE }, + { APC_LEVEL, -3, -2, TRUE }, + // 12 + { DISPATCH_LEVEL, 0, 0, TRUE }, + { DISPATCH_LEVEL, -1, 0, TRUE }, + { DISPATCH_LEVEL, -3, 0, TRUE }, + { DISPATCH_LEVEL, 0, -1, TRUE }, + { DISPATCH_LEVEL, -1, -1, TRUE }, + { DISPATCH_LEVEL, -3, -2, TRUE }, + // 18 + { HIGH_LEVEL, 0, 0, TRUE }, + { HIGH_LEVEL, -1, 0, TRUE }, + { HIGH_LEVEL, -3, 0, TRUE }, + { HIGH_LEVEL, 0, -1, TRUE }, + { HIGH_LEVEL, -1, -1, TRUE }, + { HIGH_LEVEL, -3, -2, TRUE }, + }; + int i; + + for (i = 0; i < sizeof TestIterations / sizeof TestIterations[0]; ++i) + { + trace("Run %d\n", i); + KeRaiseIrql(TestIterations[i].Irql, &OldIrql); + Thread->KernelApcDisable = TestIterations[i].KernelApcsDisabled; + Thread->SpecialApcDisable = TestIterations[i].SpecialApcsDisabled; + + RtlFillMemory(&Mutex, sizeof Mutex, 0x55); + KeInitializeGuardedMutex(&Mutex); + CheckMutex(&Mutex, 1L, NULL, 0LU, 0x5555, 0x5555, TestIterations[i].KernelApcsDisabled, TestIterations[i].SpecialApcsDisabled, TestIterations[i].AllApcsDisabled, TestIterations[i].Irql); + TestGuardedMutex(&Mutex, TestIterations[i].KernelApcsDisabled, TestIterations[i].SpecialApcsDisabled, TestIterations[i].AllApcsDisabled, TestIterations[i].Irql); + + Thread->SpecialApcDisable = 0; + Thread->KernelApcDisable = 0; + KeLowerIrql(OldIrql); + } +} Propchange: branches/GSoC_2011/KMTestSuite/kmtests/ntos_ke/KeGuardedMutex.c ------------------------------------------------------------------------------ svn:eol-style = native
13 years, 4 months
1
0
0
0
[tfaber] 53365: [KMTESTS] - Mark ExTimer test as hidden - Mark some more tests as interactive in ExHardError - Now an automated test run on ROS runs smoothly, aside from assertions
by tfaber@svn.reactos.org
Author: tfaber Date: Mon Aug 22 09:56:36 2011 New Revision: 53365 URL:
http://svn.reactos.org/svn/reactos?rev=53365&view=rev
Log: [KMTESTS] - Mark ExTimer test as hidden - Mark some more tests as interactive in ExHardError - Now an automated test run on ROS runs smoothly, aside from assertions Modified: branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/testlist.c branches/GSoC_2011/KMTestSuite/kmtests/ntos_ex/ExHardError.c Modified: branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/testlist.c URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/k…
============================================================================== --- branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/testlist.c [iso-8859-1] (original) +++ branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/testlist.c [iso-8859-1] Mon Aug 22 09:56:36 2011 @@ -46,7 +46,7 @@ { "ExResource", Test_ExResource }, { "ExSequencedList", Test_ExSequencedList }, { "ExSingleList", Test_ExSingleList }, - { "ExTimer", Test_ExTimer }, + { "-ExTimer", Test_ExTimer }, { "Example", Test_Example }, { "FsRtlExpression", Test_FsRtlExpression }, { "IoDeviceInterface", Test_IoDeviceInterface }, Modified: branches/GSoC_2011/KMTestSuite/kmtests/ntos_ex/ExHardError.c URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/n…
============================================================================== --- branches/GSoC_2011/KMTestSuite/kmtests/ntos_ex/ExHardError.c [iso-8859-1] (original) +++ branches/GSoC_2011/KMTestSuite/kmtests/ntos_ex/ExHardError.c [iso-8859-1] Mon Aug 22 09:56:36 2011 @@ -91,14 +91,15 @@ CheckHardError(0x40000000, 0, OptionOk, STATUS_SUCCESS, ResponseOk, 0, 0); // outputs a box :| CheckHardError(0x40000001, 0, OptionOk, STATUS_SUCCESS, ResponseOk, 4, 1, 2, 3, 4); // outputs a box :| CheckHardError(0x40000002, 0, OptionOk, STATUS_SUCCESS, ResponseOk, 5, 1, 2, 3, 4, 5); // outputs a box :| - } - CheckHardError(0x40000003, 0, OptionOk, STATUS_SUCCESS, ResponseNotHandled, 6, 1, 2, 3, 4, 5, 6); + CheckHardError(0x40000003, 0, OptionOk, STATUS_SUCCESS, ResponseNotHandled, 6, 1, 2, 3, 4, 5, 6); // TODO: interactive on ROS + } CheckHardError(0x40000004, 0, OptionShutdownSystem, STATUS_PRIVILEGE_NOT_HELD, ResponseNotHandled, 0, 0); + if (InteractivePart1) + { + // TODO: these 2 are interactive on ROS CheckHardError(0x40000005, 0, OptionOkNoWait, STATUS_SUCCESS, ResponseOk, 0, 0); // outputs a balloon notification CheckHardError(0x4000000f, 0, OptionOkNoWait, STATUS_SUCCESS, ResponseOk, 0, 0); // outputs a balloon notification - if (InteractivePart1) - { CheckHardError(0x40000006, 0, OptionAbortRetryIgnore, STATUS_SUCCESS, ResponseAbort, 0, 0); // outputs a box :| CheckHardError(0x40000006, 0, OptionAbortRetryIgnore, STATUS_SUCCESS, ResponseRetry, 0, 0); // outputs a box :| CheckHardError(0x40000006, 0, OptionAbortRetryIgnore, STATUS_SUCCESS, ResponseIgnore, 0, 0); // outputs a box :| @@ -195,11 +196,12 @@ CheckHardError(STATUS_FATAL_APP_EXIT, 0, OptionYesNoCancel, STATUS_SUCCESS, ResponseCancel, 1, "Parameter1"); // outputs a box :| CheckHardError(STATUS_FATAL_APP_EXIT, 0, OptionYesNoCancel, STATUS_SUCCESS, ResponseCancel, 1, 1234); // outputs a box :| CheckHardError(STATUS_FATAL_APP_EXIT, 0, OptionYesNoCancel, STATUS_SUCCESS, ResponseCancel, 1, NULL); // outputs a box :| - } - + + // TODO: these 3 are interactive on ROS CheckInformationalHardError(STATUS_WAIT_0, NULL, NULL, STATUS_SUCCESS, TRUE); // outputs a balloon notification CheckInformationalHardError(STATUS_DLL_NOT_FOUND, &String1, NULL, STATUS_SUCCESS, TRUE); // outputs a balloon notification CheckInformationalHardError(STATUS_DLL_NOT_FOUND, NULL, NULL, STATUS_SUCCESS, TRUE); // outputs a balloon notification + } CheckInformationalHardError(STATUS_SERVICE_NOTIFICATION, &String1, NULL, STATUS_SUCCESS, FALSE); ok_bool_true(IoSetThreadHardErrorMode(TRUE), "IoSetThreadHardErrorMode returned");
13 years, 4 months
1
0
0
0
[tfaber] 53364: [KMTESTS] - Fix uninitialized variable usage. Found by ROS ; )
by tfaber@svn.reactos.org
Author: tfaber Date: Mon Aug 22 00:46:51 2011 New Revision: 53364 URL:
http://svn.reactos.org/svn/reactos?rev=53364&view=rev
Log: [KMTESTS] - Fix uninitialized variable usage. Found by ROS ;) Modified: branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/kmtest_standalone.c Modified: branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/kmtest_standalone.c URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/k…
============================================================================== --- branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/kmtest_standalone.c [iso-8859-1] (original) +++ branches/GSoC_2011/KMTestSuite/kmtests/kmtest_drv/kmtest_standalone.c [iso-8859-1] Mon Aug 22 00:46:51 2011 @@ -114,11 +114,11 @@ RtlInitUnicodeString(&DeviceName, DeviceNameBuffer); DeviceName.MaximumLength = sizeof DeviceNameBuffer; TestEntry(DriverObject, RegistryPath, &DeviceNameSuffix, &Flags); - RtlAppendUnicodeToString(&DeviceName, DeviceNameSuffix); /* create test device */ if (!(Flags & TESTENTRY_NO_CREATE_DEVICE)) { + RtlAppendUnicodeToString(&DeviceName, DeviceNameSuffix); Status = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN | FILE_READ_ONLY_DEVICE,
13 years, 4 months
1
0
0
0
[fireball] 53363: - Implement missing parts of "application verifier" initialization which boils down to just enabling DPH either globally or per-DLL.
by fireball@svn.reactos.org
Author: fireball Date: Sun Aug 21 22:15:08 2011 New Revision: 53363 URL:
http://svn.reactos.org/svn/reactos?rev=53363&view=rev
Log: - Implement missing parts of "application verifier" initialization which boils down to just enabling DPH either globally or per-DLL. Modified: trunk/reactos/dll/ntdll/include/ntdllp.h trunk/reactos/dll/ntdll/ldr/ldrinit.c trunk/reactos/dll/ntdll/ldr/ldrpe.c Modified: trunk/reactos/dll/ntdll/include/ntdllp.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/include/ntdllp.h…
============================================================================== --- trunk/reactos/dll/ntdll/include/ntdllp.h [iso-8859-1] (original) +++ trunk/reactos/dll/ntdll/include/ntdllp.h [iso-8859-1] Sun Aug 21 22:15:08 2011 @@ -19,6 +19,9 @@ /* Loader flags */ #define IMAGE_LOADER_FLAGS_COMPLUS 0x00000001 #define IMAGE_LOADER_FLAGS_SYSTEM_GLOBAL 0x01000000 + +/* Page heap flags */ +#define DPH_FLAG_DLL_NOTIFY 0x40 typedef struct _LDRP_TLS_DATA { @@ -43,6 +46,7 @@ extern BOOLEAN LdrpShutdownInProgress; extern UNICODE_STRING LdrpKnownDllPath; extern PLDR_DATA_TABLE_ENTRY LdrpGetModuleHandleCache, LdrpLoadedDllHandleCache; +extern ULONG RtlpDphGlobalFlags; /* ldrinit.c */ NTSTATUS NTAPI LdrpRunInitializeRoutines(IN PCONTEXT Context OPTIONAL); Modified: trunk/reactos/dll/ntdll/ldr/ldrinit.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/ldr/ldrinit.c?re…
============================================================================== --- trunk/reactos/dll/ntdll/ldr/ldrinit.c [iso-8859-1] (original) +++ trunk/reactos/dll/ntdll/ldr/ldrinit.c [iso-8859-1] Sun Aug 21 22:15:08 2011 @@ -82,7 +82,6 @@ VOID NTAPI RtlpInitDeferedCriticalSection(VOID); VOID RtlInitializeHeapManager(VOID); extern BOOLEAN RtlpPageHeapEnabled; -extern ULONG RtlpDphGlobalFlags; ULONG RtlpDisableHeapLookaside; // TODO: Move to heap.c ULONG RtlpShutdownProcessFlags; // TODO: Use it @@ -1309,6 +1308,26 @@ NTSTATUS NTAPI +LdrpInitializeApplicationVerifierPackage(PUNICODE_STRING ImagePathName, PPEB Peb, BOOLEAN SystemWide, BOOLEAN ReadAdvancedOptions) +{ + /* If global flags request DPH, perform some additional actions */ + if (Peb->NtGlobalFlag & FLG_HEAP_PAGE_ALLOCS) + { + // TODO: Read advanced DPH flags from the registry if requested + if (ReadAdvancedOptions) + { + UNIMPLEMENTED; + } + + /* Enable page heap */ + RtlpPageHeapEnabled = TRUE; + } + + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI LdrpInitializeExecutionOptions(PUNICODE_STRING ImagePathName, PPEB Peb, PHKEY OptionsKey) { NTSTATUS Status; @@ -1398,14 +1417,28 @@ Peb->NtGlobalFlag = GlobalFlag; else GlobalFlag = 0; + + /* Call AVRF if necessary */ + if (Peb->NtGlobalFlag & (FLG_POOL_ENABLE_TAIL_CHECK | FLG_HEAP_PAGE_ALLOCS)) + { + Status = LdrpInitializeApplicationVerifierPackage(ImagePathName, Peb, TRUE, FALSE); + if (!NT_SUCCESS(Status)) + { + DPRINT1("AVRF: LdrpInitializeApplicationVerifierPackage failed with %08X\n", Status); + } + } } else { /* There are no image-specific options, so perform global initialization */ if (Peb->NtGlobalFlag & (FLG_POOL_ENABLE_TAIL_CHECK | FLG_HEAP_PAGE_ALLOCS)) { - // TODO: Initialize app verifier package - // Status = LdrpInitializeApplicationVerifierPackage(ImagePathName, Peb, 1, FALSE); + /* Initialize app verifier package */ + Status = LdrpInitializeApplicationVerifierPackage(ImagePathName, Peb, TRUE, FALSE); + if (!NT_SUCCESS(Status)) + { + DPRINT1("AVRF: LdrpInitializeApplicationVerifierPackage failed with %08X\n", Status); + } } } @@ -1698,7 +1731,7 @@ /* Reset DPH if requested */ if (RtlpPageHeapEnabled && DebugProcessHeapOnly) { - RtlpDphGlobalFlags &= ~0x40; + RtlpDphGlobalFlags &= ~DPH_FLAG_DLL_NOTIFY; RtlpPageHeapEnabled = FALSE; } } Modified: trunk/reactos/dll/ntdll/ldr/ldrpe.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/ldr/ldrpe.c?rev=…
============================================================================== --- trunk/reactos/dll/ntdll/ldr/ldrpe.c [iso-8859-1] (original) +++ trunk/reactos/dll/ntdll/ldr/ldrpe.c [iso-8859-1] Sun Aug 21 22:15:08 2011 @@ -18,6 +18,18 @@ ULONG LdrpNormalSnap; /* FUNCTIONS *****************************************************************/ + +VOID +NTAPI +AVrfPageHeapDllNotification(IN PLDR_DATA_TABLE_ENTRY LdrEntry) +{ + /* Check if page heap dll notification is turned on */ + if (!(RtlpDphGlobalFlags && DPH_FLAG_DLL_NOTIFY)) + return; + + /* We don't support this flag currently */ + UNIMPLEMENTED; +} NTSTATUS NTAPI @@ -758,8 +770,8 @@ /* Check if Page Heap was enabled */ if (Peb->NtGlobalFlag & FLG_HEAP_PAGE_ALLOCS) { - /* FIXME */ - DPRINT1("We don't support Page Heaps yet!\n"); + /* Initialize target DLL */ + AVrfPageHeapDllNotification(LdrEntry); } /* Check if Application Verifier was enabled */
13 years, 4 months
1
0
0
0
[tkreuzer] 53362: [NTOSKRNL] Update exports for amd64 to match win2k3
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Sun Aug 21 21:55:30 2011 New Revision: 53362 URL:
http://svn.reactos.org/svn/reactos?rev=53362&view=rev
Log: [NTOSKRNL] Update exports for amd64 to match win2k3 Modified: trunk/reactos/ntoskrnl/ntoskrnl.spec Modified: trunk/reactos/ntoskrnl/ntoskrnl.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.spec?rev…
============================================================================== --- trunk/reactos/ntoskrnl/ntoskrnl.spec [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ntoskrnl.spec [iso-8859-1] Sun Aug 21 21:55:30 2011 @@ -548,12 +548,17 @@ @ stdcall -arch=i386 Ke386SetIoAccessMap(long ptr) @ fastcall KeAcquireGuardedMutex(ptr) @ fastcall KeAcquireGuardedMutexUnsafe(ptr) +@ cdecl -arch=x86_64 KeAcquireInStackQueuedSpinLock(ptr ptr) @ fastcall KeAcquireInStackQueuedSpinLockAtDpcLevel(ptr ptr) @ fastcall KeAcquireInStackQueuedSpinLockForDpc(ptr ptr) +@ cdecl -arch=x86_64 KeAcquireInStackQueuedSpinLockRaiseToSynch(ptr ptr) @ stdcall KeAcquireInterruptSpinLock(ptr) +@ cdecl -arch=x86_64 KeAcquireQueuedSpinLock(long) +@ cdecl -arch=x86_64 KeAcquireQueuedSpinLockRaiseToSynch(long) @ stdcall KeAcquireSpinLockAtDpcLevel(ptr) @ fastcall KeAcquireSpinLockForDpc(ptr) @ stdcall -arch=x86_64 KeAcquireSpinLockRaiseToDpc(ptr) +@ stdcall -arch=x86_64 KeAcquireSpinLockRaiseToSynch(ptr) @ stdcall KeAddSystemServiceTable(ptr ptr long ptr long) @ stdcall KeAreAllApcsDisabled() @ stdcall KeAreApcsDisabled() @@ -573,6 +578,7 @@ @ stdcall KeEnterCriticalRegion() _KeEnterCriticalRegion @ stdcall KeEnterGuardedRegion() _KeEnterGuardedRegion @ stdcall KeEnterKernelDebugger() +;@ stdcall -arch=x86_64 KeExpandKernelStackAndCallout(ptr ptr double) @ stdcall KeFindConfigurationEntry(ptr long long ptr) @ stdcall KeFindConfigurationNextEntry(ptr long long ptr ptr) @ stdcall KeFlushEntireTb(long long) @@ -581,7 +587,7 @@ @ stdcall KeGetCurrentThread() @ stdcall KeGetPreviousMode() @ stdcall KeGetRecommendedSharedDataAlignment() -;KeI386AbiosCall +; -arch=i386 KeI386AbiosCall @ stdcall -arch=i386 KeI386AllocateGdtSelectors(ptr long) ; -arch=i386 KeI386Call16BitCStyleFunction ; -arch=i386 KeI386Call16BitFunction @@ -615,22 +621,27 @@ @ stdcall KeInvalidateAllCaches() @ stdcall KeIpiGenericCall(ptr ptr) @ stdcall KeIsAttachedProcess() -@ stdcall KeIsExecutingDpc() +@ stdcall -arch=i386,arm KeIsExecutingDpc() ;KeIsWaitListEmpty +;@ cdecl -arch=x86_64 KeLastBranchMSR() @ stdcall KeLeaveCriticalRegion() _KeLeaveCriticalRegion @ stdcall KeLeaveGuardedRegion() _KeLeaveGuardedRegion @ extern KeLoaderBlock +@ cdecl -arch=x86_64 KeLowerIrql(long) @ extern KeNumberProcessors -@ stdcall KeProfileInterrupt(ptr) +@ stdcall -arch=i386,arm KeProfileInterrupt(ptr) @ stdcall KeProfileInterruptWithSource(ptr long) @ stdcall KePulseEvent(ptr long long) @ stdcall KeQueryActiveProcessors() @ stdcall -arch=i386,arm KeQueryInterruptTime() +;@ cdecl -arch=x86_64 KeQueryMultiThreadProcessorSet +;@ cdecl -arch=x86_64 KeQueryPrcbAddress @ stdcall KeQueryPriorityThread(ptr) @ stdcall KeQueryRuntimeThread(ptr ptr) @ stdcall -arch=i386,arm KeQuerySystemTime(ptr) -@ stdcall KeQueryTickCount(ptr) +@ stdcall -arch=i386,arm KeQueryTickCount(ptr) @ stdcall KeQueryTimeIncrement() +@ cdecl -arch=x86_64 KeRaiseIrqlToDpcLevel() @ stdcall KeRaiseUserException(long) @ stdcall KeReadStateEvent(ptr) @ stdcall KeReadStateMutant(ptr) @@ -644,10 +655,12 @@ @ fastcall KeReleaseGuardedMutex(ptr) @ fastcall KeReleaseGuardedMutexUnsafe(ptr) @ fastcall KeReleaseInStackQueuedSpinLockForDpc(ptr) +@ cdecl -arch=x86_64 KeReleaseInStackQueuedSpinLockForDpc(ptr) @ fastcall KeReleaseInStackQueuedSpinLockFromDpcLevel(ptr) @ stdcall KeReleaseInterruptSpinLock(ptr long) @ stdcall KeReleaseMutant(ptr long long long) @ stdcall KeReleaseMutex(ptr long) +@ cdecl -arch=x86_64 KeReleaseQueuedSpinLock(long long) @ stdcall KeReleaseSemaphore(ptr long long long) @ stdcall -arch=x86_64 KeReleaseSpinLock(ptr long) @ fastcall KeReleaseSpinLockForDpc(ptr long) @@ -687,8 +700,10 @@ @ stdcall KeSynchronizeExecution(ptr ptr ptr) @ stdcall KeTerminateThread(long) @ fastcall KeTestSpinLock(ptr) -@ extern KeTickCount +@ extern -arch=i386,arm KeTickCount @ fastcall KeTryToAcquireGuardedMutex(ptr) +@ cdecl -arch=x86_64 KeTryToAcquireQueuedSpinLock(long long) +@ cdecl -arch=x86_64 KeTryToAcquireQueuedSpinLockRaiseToSynch(long long) @ fastcall KeTryToAcquireSpinLockAtDpcLevel(ptr) @ stdcall KeUnstackDetachProcess(ptr) @ stdcall KeUpdateRunTime(ptr long) @@ -697,21 +712,23 @@ @ stdcall KeWaitForMultipleObjects(long ptr long long long long ptr ptr) @ stdcall KeWaitForMutexObject(ptr long long long ptr) KeWaitForSingleObject @ stdcall KeWaitForSingleObject(ptr long long long ptr) -@ fastcall KefAcquireSpinLockAtDpcLevel(ptr) -@ fastcall KefReleaseSpinLockFromDpcLevel(ptr) +@ fastcall -arch=i386,arm KefAcquireSpinLockAtDpcLevel(ptr) +@ fastcall -arch=i386,arm KefReleaseSpinLockFromDpcLevel(ptr) @ stdcall -arch=i386 Kei386EoiHelper() +@ cdecl -arch=x86_64 KfRaiseIrql(long) @ fastcall -arch=i386 KiEoiHelper(ptr) -@ fastcall KiAcquireSpinLock(ptr) +@ fastcall -arch=i386,arm KiAcquireSpinLock(ptr) @ extern KiBugCheckData @ stdcall KiCheckForKernelApcDelivery() -;KiCheckForSListAddress +;-arch=i386,arm KiCheckForSListAddress @ stdcall -arch=i386 KiCoprocessorError() -@ stdcall KiDeliverApc(long ptr ptr) +;@ cdecl -arch=x86_64 KiCpuId() +@ stdcall -arch=i386,arm KiDeliverApc(long ptr ptr) @ stdcall -arch=i386 KiDispatchInterrupt() -@ extern KiEnableTimerWatchdog -@ stdcall KiIpiServiceRoutine(ptr ptr) -@ fastcall KiReleaseSpinLock(ptr) -@ cdecl KiUnexpectedInterrupt() +@ extern -arch=i386,arm KiEnableTimerWatchdog +@ stdcall -arch=i386,arm KiIpiServiceRoutine(ptr ptr) +@ fastcall -arch=i386,arm KiReleaseSpinLock(ptr) +@ cdecl -arch=i386,arm KiUnexpectedInterrupt() @ stdcall -arch=i386 Kii386SpinOnSpinLock(ptr long) @ stdcall LdrAccessResource(ptr ptr ptr ptr) @ stdcall LdrEnumResources(ptr ptr long ptr ptr) @@ -814,7 +831,7 @@ @ extern NlsOemLeadByteInfo _NlsOemLeadByteInfo @ stdcall NtAddAtom(wstr long ptr) @ stdcall NtAdjustPrivilegesToken(ptr long ptr long ptr ptr) -@ stdcall NtAlertThread(ptr) +@ stdcall -arch=i386,arm NtAlertThread(ptr) @ stdcall NtAllocateLocallyUniqueId(ptr) @ stdcall NtAllocateUuids(ptr ptr ptr ptr) @ stdcall NtAllocateVirtualMemory(ptr ptr long ptr long long) @@ -824,7 +841,7 @@ @ stdcall NtCreateEvent(ptr long ptr long long) @ stdcall NtCreateFile(ptr long ptr ptr ptr long long long long ptr long) @ stdcall NtCreateSection(ptr long ptr ptr long long ptr) -@ stdcall NtCreateTimer(ptr long ptr long) +@ stdcall -arch=i386,arm NtCreateTimer(ptr long ptr long) @ stdcall NtDeleteAtom(ptr) @ stdcall NtDeleteFile(ptr) @ stdcall NtDeviceIoControlFile(ptr ptr ptr ptr ptr long ptr long ptr long) @@ -838,7 +855,7 @@ @ stdcall NtMakePermanentObject(ptr) @ stdcall NtMapViewOfSection(ptr ptr ptr long long ptr ptr long long long) @ stdcall NtNotifyChangeDirectoryFile(ptr ptr ptr ptr ptr ptr long long long) -@ stdcall NtOpenEvent(ptr long ptr) +@ stdcall -arch=i386,arm NtOpenEvent(ptr long ptr) @ stdcall NtOpenFile(ptr long ptr ptr long long) @ stdcall NtOpenProcess(ptr long ptr ptr) @ stdcall NtOpenProcessToken(ptr long ptr) @@ -882,12 +899,12 @@ @ stdcall ObCreateObjectType(ptr ptr ptr ptr) ;ObDeleteCapturedInsertInfo @ stdcall ObDereferenceObject(ptr) -@ stdcall ObDereferenceObjectDeferDelete(ptr) +@ stdcall -arch=i386,arm ObDereferenceObjectDeferDelete(ptr) @ stdcall ObDereferenceSecurityDescriptor(ptr long) @ stdcall ObFindHandleForObject(ptr ptr ptr ptr ptr) @ stdcall ObGetObjectSecurity(ptr ptr ptr) @ stdcall ObInsertObject(ptr ptr long long ptr ptr) -@ stdcall ObIsKernelHandle(ptr) +@ stdcall -arch=i386,arm ObIsKernelHandle(ptr) @ stdcall ObLogSecurityDescriptor(ptr ptr long) @ stdcall ObMakeTemporaryObject(ptr) @ stdcall ObOpenObjectByName(ptr ptr long ptr long ptr ptr) @@ -940,6 +957,7 @@ @ stdcall PsGetCurrentProcessId() @ stdcall PsGetCurrentProcessSessionId() @ stdcall PsGetCurrentProcessWin32Process() +;@ cdecl -arch=x86_64 PsGetCurrentProcessWow64Process() @ stdcall PsGetCurrentThread() KeGetCurrentThread @ stdcall PsGetCurrentThreadId() @ stdcall PsGetCurrentThreadPreviousMode() @@ -970,6 +988,7 @@ ;PsGetProcessSessionIdEx @ stdcall PsGetProcessWin32Process(ptr) @ stdcall PsGetProcessWin32WindowStation(ptr) +;@ cdecl -arch=x86_64 PsGetProcessWow64Process() @ stdcall PsGetThreadFreezeCount(ptr) @ stdcall PsGetThreadHardErrorsAreDisabled(ptr) @ stdcall PsGetThreadId(ptr) @@ -1029,7 +1048,7 @@ @ stdcall RtlAddAce(ptr long long ptr long) @ stdcall RtlAddAtomToAtomTable(ptr wstr ptr) @ stdcall RtlAddRange(ptr long long long long long long ptr ptr) -@ stdcall RtlAllocateAndInitializeSid(ptr long long long long long long long long long ptr) +@ stdcall -arch=i386,arm RtlAllocateAndInitializeSid(ptr long long long long long long long long long ptr) @ stdcall RtlAllocateHeap(ptr long long) @ stdcall RtlAnsiCharToUnicodeChar(ptr) @ stdcall RtlAnsiStringToUnicodeSize(ptr) RtlxAnsiStringToUnicodeSize @@ -1089,9 +1108,9 @@ @ stdcall RtlDestroyHeap(ptr) @ stdcall RtlDowncaseUnicodeString(ptr ptr long) @ stdcall RtlEmptyAtomTable(ptr long) -@ stdcall RtlEnlargedIntegerMultiply(long long) -@ stdcall RtlEnlargedUnsignedDivide(long long long ptr) -@ stdcall RtlEnlargedUnsignedMultiply(long long) +@ stdcall -arch=win32 RtlEnlargedIntegerMultiply(long long) +@ stdcall -arch=win32 RtlEnlargedUnsignedDivide(long long long ptr) +@ stdcall -arch=win32 RtlEnlargedUnsignedMultiply(long long) @ stdcall RtlEnumerateGenericTable(ptr long) @ stdcall RtlEnumerateGenericTableAvl(ptr long) @ stdcall RtlEnumerateGenericTableLikeADirectory(ptr ptr ptr long ptr ptr ptr) @@ -1101,11 +1120,11 @@ @ stdcall RtlEqualSid(ptr ptr) @ stdcall RtlEqualString(ptr ptr long) @ stdcall RtlEqualUnicodeString(ptr ptr long) -@ stdcall RtlExtendedIntegerMultiply(long long long) -@ stdcall RtlExtendedLargeIntegerDivide(long long long ptr) -@ stdcall RtlExtendedMagicDivide(long long long long long) +@ stdcall -arch=win32 RtlExtendedIntegerMultiply(long long long) +@ stdcall -arch=win32 RtlExtendedLargeIntegerDivide(long long long ptr) +@ stdcall -arch=win32 RtlExtendedMagicDivide(long long long long long) @ stdcall RtlFillMemory(ptr long long) -@ stdcall RtlFillMemoryUlong(ptr long long) +@ stdcall -arch=i386,arm RtlFillMemoryUlong(ptr long long) @ stdcall RtlFindClearBits(ptr long long) @ stdcall RtlFindClearBitsAndSet(ptr long long) @ stdcall RtlFindClearRuns(ptr ptr long long) @@ -1189,13 +1208,13 @@ @ stdcall RtlIsNameLegalDOS8Dot3(ptr ptr ptr) @ stdcall RtlIsRangeAvailable(ptr long long long long long long ptr ptr ptr) @ stdcall RtlIsValidOemCharacter(ptr) -@ stdcall RtlLargeIntegerAdd(long long long long) -@ stdcall RtlLargeIntegerArithmeticShift(long long long) -@ stdcall RtlLargeIntegerDivide(long long long long ptr) -@ stdcall RtlLargeIntegerNegate(long long) -@ stdcall RtlLargeIntegerShiftLeft(long long long) -@ stdcall RtlLargeIntegerShiftRight(long long long) -@ stdcall RtlLargeIntegerSubtract(long long long long) +@ stdcall -arch=win32 RtlLargeIntegerAdd(long long long long) +@ stdcall -arch=win32 RtlLargeIntegerArithmeticShift(long long long) +@ stdcall -arch=win32 RtlLargeIntegerDivide(long long long long ptr) +@ stdcall -arch=win32 RtlLargeIntegerNegate(long long) +@ stdcall -arch=win32 RtlLargeIntegerShiftLeft(long long long) +@ stdcall -arch=win32 RtlLargeIntegerShiftRight(long long long) +@ stdcall -arch=win32 RtlLargeIntegerSubtract(long long long long) @ stdcall RtlLengthRequiredSid(long) @ stdcall RtlLengthSecurityDescriptor(ptr) @ stdcall RtlLengthSid(ptr) @@ -1205,6 +1224,7 @@ @ stdcall RtlLookupElementGenericTableAvl(ptr ptr) @ stdcall RtlLookupElementGenericTableFull(ptr ptr ptr ptr) @ stdcall RtlLookupElementGenericTableFullAvl(ptr ptr ptr ptr) +@ cdecl -arch=x86_64 RtlLookupFunctionEntry(double ptr ptr) @ stdcall RtlMapGenericMask(ptr ptr) @ stdcall RtlMapSecurityErrorToNtStatus(long) @ stdcall RtlMergeRangeLists(ptr ptr ptr long) @@ -1222,6 +1242,7 @@ @ stdcall RtlOemStringToUnicodeSize(ptr) RtlxOemStringToUnicodeSize @ stdcall RtlOemStringToUnicodeString(ptr ptr long) @ stdcall RtlOemToUnicodeN(wstr long ptr ptr long) +@ cdecl -arch=x86_64 RtlPcToFileHeader(ptr ptr) @ stdcall RtlPinAtomInAtomTable(ptr ptr) @ fastcall RtlPrefetchMemoryNonTemporal(ptr long) @ stdcall RtlPrefixString(ptr ptr long) @@ -1236,6 +1257,7 @@ @ stdcall RtlRealSuccessor(ptr) @ stdcall RtlRemoveUnicodePrefix(ptr ptr) @ stdcall RtlReserveChunk(long ptr ptr ptr long) +@ cdecl -arch=x86_64 RtlRestoreContext(ptr ptr) @ stdcall RtlSecondsSince1970ToTime(long ptr) @ stdcall RtlSecondsSince1980ToTime(long ptr) @ stdcall RtlSelfRelativeToAbsoluteSD(ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) @@ -1283,6 +1305,7 @@ @ stdcall RtlUnicodeToOemN(ptr long ptr wstr long) @ stdcall RtlUnlockBootStatusData(ptr) @ stdcall RtlUnwind(ptr ptr ptr ptr) +@ cdecl -arch=x86_64 RtlUnwindEx(double double ptr ptr ptr ptr) @ stdcall RtlUpcaseUnicodeChar(long) @ stdcall RtlUpcaseUnicodeString(ptr ptr long) @ stdcall RtlUpcaseUnicodeStringToAnsiString(ptr ptr long) @@ -1298,6 +1321,7 @@ @ stdcall RtlValidSecurityDescriptor(ptr) @ stdcall RtlValidSid(ptr) @ stdcall RtlVerifyVersionInfo(ptr long long long) +@ cdecl -arch=x86_64 RtlVirtualUnwind(long double double ptr ptr ptr ptr ptr) @ stdcall RtlVolumeDeviceToDosName(ptr ptr) @ stdcall RtlWalkFrameChain(ptr long long) @ stdcall RtlWriteRegistryValue(long wstr wstr long ptr long) @@ -1345,6 +1369,7 @@ @ stdcall SeRegisterLogonSessionTerminatedRoutine(ptr) @ stdcall SeReleaseSecurityDescriptor(ptr long long) @ stdcall SeReleaseSubjectContext(ptr) +;@ cdecl -arch=x86_64 SeReportSecurityEvent @ stdcall SeSetAccessStateGenericMapping(ptr ptr) ;SeSetAuditParameter @ stdcall SeSetSecurityDescriptorInfo(ptr ptr ptr ptr long ptr) @@ -1454,7 +1479,7 @@ @ stdcall ZwQueryDriverEntryOrder(ptr ptr) @ stdcall ZwQueryEaFile(ptr ptr ptr long long ptr long ptr long) @ stdcall ZwQueryFullAttributesFile(ptr ptr) -@ stdcall ZwQueryInformationAtom(ptr long ptr long ptr) +@ stdcall -arch=i386,arm ZwQueryInformationAtom(ptr long ptr long ptr) @ stdcall ZwQueryInformationFile(ptr ptr ptr long long) @ stdcall ZwQueryInformationJobObject(ptr long ptr long ptr) @ stdcall ZwQueryInformationProcess(ptr long ptr long ptr) @@ -1505,9 +1530,12 @@ @ stdcall ZwWaitForSingleObject(ptr long ptr) @ stdcall ZwWriteFile(ptr ptr ptr ptr ptr ptr long ptr ptr) @ stdcall ZwYieldExecution() -;_CIcos -;_CIsin -;_CIsqrt +@ cdecl -arch=x86_64 __C_specific_handler(ptr long ptr ptr) +@ cdecl -arch=x86_64 __chkstk() +;@ cdecl -arch=x86_64 __misaligned_access() +;@ cdecl -arch=i386 _CIcos +;@ cdecl -arch=i386 _CIsin +;@ cdecl -arch=i386 _CIsqrt @ cdecl -arch=i386,arm _abnormal_termination() @ cdecl -arch=i386 _alldiv() @ cdecl -arch=i386 _alldvrm() @@ -1526,7 +1554,10 @@ @ cdecl _itoa() @ cdecl _itow() @ cdecl -arch=i386,arm _local_unwind2() +@ cdecl -arch=x86_64 _local_unwind() @ cdecl _purecall() +@ cdecl -arch=x86_64 _setjmp(ptr ptr) +@ cdecl -arch=x86_64 _setjmpex(ptr ptr) @ cdecl _snprintf() @ cdecl _snwprintf() @ cdecl _stricmp() @@ -1552,9 +1583,11 @@ @ cdecl isspace() @ cdecl isupper() @ cdecl isxdigit() +@ cdecl -arch=x86_64 longjmp(ptr long) @ cdecl mbstowcs() @ cdecl mbtowc() @ cdecl memchr() +@ cdecl -arch=x86_64 memcmp() @ cdecl memcpy() @ cdecl memmove() @ cdecl memset()
13 years, 4 months
1
0
0
0
← Newer
1
...
12
13
14
15
16
17
18
...
50
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Results per page:
10
25
50
100
200