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
June 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
25 participants
460 discussions
Start a n
N
ew thread
[cmihail] 52082: Simple test apps for functionality checks: - server.exe and client.exe do a simple exchange of messages (each sends one message to the other) and then terminate. - server_multi.exe...
by cmihail@svn.reactos.org
Author: cmihail Date: Sat Jun 4 20:02:42 2011 New Revision: 52082 URL:
http://svn.reactos.org/svn/reactos?rev=52082&view=rev
Log: Simple test apps for functionality checks: - server.exe and client.exe do a simple exchange of messages (each sends one message to the other) and then terminate. - server_multi.exe and client_multi.exe exchange 3 message with one another before termination. - client_delayed.exe waits one second before sending any message to the server after a connection ahs been made (otherwise identical to client.exe) Added: branches/GSoC_2011/TcpIpDriver/tests/ (with props) branches/GSoC_2011/TcpIpDriver/tests/simplesocket/ (with props) branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client.c (with props) branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client.exe (with props) branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client_delayed.exe (with props) branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client_multi.exe (with props) branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server.c (with props) branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server.exe (with props) branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server_multi.exe (with props) Propchange: branches/GSoC_2011/TcpIpDriver/tests/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sat Jun 4 20:02:42 2011 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: branches/GSoC_2011/TcpIpDriver/tests/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: branches/GSoC_2011/TcpIpDriver/tests/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: branches/GSoC_2011/TcpIpDriver/tests/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sat Jun 4 20:02:42 2011 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client.c URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/tests/sim…
============================================================================== Binary file - no diff available. Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client.c ------------------------------------------------------------------------------ svn:eol-style = native Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client.c ------------------------------------------------------------------------------ svn:mime-type = octet-stream/ Added: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client.exe URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/tests/sim…
============================================================================== Binary file - no diff available. Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client.exe ------------------------------------------------------------------------------ svn:mime-type = octet-stream/ Added: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client_delayed.exe URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/tests/sim…
============================================================================== Binary file - no diff available. Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client_delayed.exe ------------------------------------------------------------------------------ svn:mime-type = octet-stream/ Added: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client_multi.exe URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/tests/sim…
============================================================================== Binary file - no diff available. Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/client_multi.exe ------------------------------------------------------------------------------ svn:mime-type = octet-stream/ Added: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server.c URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/tests/sim…
============================================================================== Binary file - no diff available. Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server.c ------------------------------------------------------------------------------ svn:eol-style = native Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server.c ------------------------------------------------------------------------------ svn:mime-type = octet-stream/ Added: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server.exe URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/tests/sim…
============================================================================== Binary file - no diff available. Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server.exe ------------------------------------------------------------------------------ svn:mime-type = octet-stream/ Added: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server_multi.exe URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/tests/sim…
============================================================================== Binary file - no diff available. Propchange: branches/GSoC_2011/TcpIpDriver/tests/simplesocket/server_multi.exe ------------------------------------------------------------------------------ svn:mime-type = octet-stream/
13 years, 6 months
1
0
0
0
[nyadav] 52081: [AUDSRV] Turn Off verbosity
by nyadav@svn.reactos.org
Author: nyadav Date: Sat Jun 4 18:39:06 2011 New Revision: 52081 URL:
http://svn.reactos.org/svn/reactos?rev=52081&view=rev
Log: [AUDSRV] Turn Off verbosity Modified: branches/nyadav-audio-branch/CMakeLists.txt Modified: branches/nyadav-audio-branch/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/CMakeLists.…
============================================================================== --- branches/nyadav-audio-branch/CMakeLists.txt [iso-8859-1] (original) +++ branches/nyadav-audio-branch/CMakeLists.txt [iso-8859-1] Sat Jun 4 18:39:06 2011 @@ -23,7 +23,7 @@ set_property(GLOBAL PROPERTY RULE_MESSAGES OFF) #Show Debug Output while Building -SET(CMAKE_VERBOSE_MAKEFILE ON) +#SET(CMAKE_VERBOSE_MAKEFILE ON) if(NOT ARCH) set(ARCH i386)
13 years, 6 months
1
0
0
0
[tkreuzer] 52080: [DDK/XDK] Merge some changes to wdm.h back to xdk
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Sat Jun 4 16:59:09 2011 New Revision: 52080 URL:
http://svn.reactos.org/svn/reactos?rev=52080&view=rev
Log: [DDK/XDK] Merge some changes to wdm.h back to xdk Modified: trunk/reactos/include/xdk/exfuncs.h trunk/reactos/include/xdk/kefuncs.h trunk/reactos/include/xdk/mmfuncs.h trunk/reactos/include/xdk/wdm.template.h Modified: trunk/reactos/include/xdk/exfuncs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/exfuncs.h?rev=…
============================================================================== --- trunk/reactos/include/xdk/exfuncs.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/exfuncs.h [iso-8859-1] Sat Jun 4 16:59:09 2011 @@ -131,14 +131,14 @@ #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) NTKERNELAPI -PSINGLE_LIST_ENTRY +PSINGLE_LIST_ENTRY FASTCALL ExInterlockedPopEntrySList( IN PSLIST_HEADER ListHead, IN PKSPIN_LOCK Lock); NTKERNELAPI -PSINGLE_LIST_ENTRY +PSINGLE_LIST_ENTRY FASTCALL ExInterlockedPushEntrySList( IN PSLIST_HEADER ListHead, Modified: trunk/reactos/include/xdk/kefuncs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/kefuncs.h?rev=…
============================================================================== --- trunk/reactos/include/xdk/kefuncs.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/kefuncs.h [iso-8859-1] Sat Jun 4 16:59:09 2011 @@ -161,7 +161,7 @@ OUT PLARGE_INTEGER CurrentTime); #endif /* !_M_AMD64 */ -#if !defined(_X86_) +#if !defined(_X86_) && !defined(_M_ARM) NTKERNELAPI KIRQL NTAPI Modified: trunk/reactos/include/xdk/mmfuncs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/mmfuncs.h?rev=…
============================================================================== --- trunk/reactos/include/xdk/mmfuncs.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/mmfuncs.h [iso-8859-1] Sat Jun 4 16:59:09 2011 @@ -118,6 +118,7 @@ ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset)) #define MmGetProcedureAddress(Address) (Address) +#define MmLockPagableCodeSection(Address) MmLockPagableDataSection(Address) /* PVOID MmGetSystemAddressForMdl( * IN PMDL Mdl); Modified: trunk/reactos/include/xdk/wdm.template.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/wdm.template.h…
============================================================================== --- trunk/reactos/include/xdk/wdm.template.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/wdm.template.h [iso-8859-1] Sat Jun 4 16:59:09 2011 @@ -170,7 +170,7 @@ #elif defined(_WDM_INCLUDED_) typedef struct _DMA_ADAPTER *PADAPTER_OBJECT; #else -typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; +typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; #endif #ifndef DEFINE_GUIDEX @@ -191,7 +191,7 @@ #ifdef __cplusplus inline int IsEqualGUIDAligned(REFGUID guid1, REFGUID guid2) { - return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) && + return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) && (*((PLONGLONG)(&guid1) + 1) == *((PLONGLONG)(&guid2) + 1)) ); } #else
13 years, 6 months
1
0
0
0
[tkreuzer] 52079: [NTOSKRNL/DDK] - add definition for KeMemoryBarrierWithoutFence - add x64 version of KeMemoryBarrier and some related defines - Use KeMemoryBarrierWithoutFence in spinlocks as sug...
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Sat Jun 4 15:42:32 2011 New Revision: 52079 URL:
http://svn.reactos.org/svn/reactos?rev=52079&view=rev
Log: [NTOSKRNL/DDK] - add definition for KeMemoryBarrierWithoutFence - add x64 version of KeMemoryBarrier and some related defines - Use KeMemoryBarrierWithoutFence in spinlocks as suggested by Alex Modified: trunk/reactos/include/ddk/wdm.h trunk/reactos/include/xdk/amd64/ke.h trunk/reactos/include/xdk/x86/ke.h trunk/reactos/ntoskrnl/include/internal/spinlock.h trunk/reactos/ntoskrnl/ke/amd64/spinlock.c Modified: trunk/reactos/include/ddk/wdm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/wdm.h?rev=5207…
============================================================================== --- trunk/reactos/include/ddk/wdm.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/wdm.h [iso-8859-1] Sat Jun 4 15:42:32 2011 @@ -170,7 +170,7 @@ #elif defined(_WDM_INCLUDED_) typedef struct _DMA_ADAPTER *PADAPTER_OBJECT; #else -typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; +typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; #endif #ifndef DEFINE_GUIDEX @@ -191,7 +191,7 @@ #ifdef __cplusplus inline int IsEqualGUIDAligned(REFGUID guid1, REFGUID guid2) { - return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) && + return ( (*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) && (*((PLONGLONG)(&guid1) + 1) == *((PLONGLONG)(&guid2) + 1)) ); } #else @@ -7718,6 +7718,8 @@ #endif } +#define KeMemoryBarrierWithoutFence() _ReadWriteBarrier() + NTHALAPI KIRQL NTAPI @@ -7875,6 +7877,21 @@ #define KeGetDcacheFillSize() 1L #define YieldProcessor _mm_pause +#define FastFence __faststorefence +#define LoadFence _mm_lfence +#define MemoryFence _mm_mfence +#define StoreFence _mm_sfence +#define LFENCE_ACQUIRE() LoadFence() + +FORCEINLINE +VOID +KeMemoryBarrier(VOID) +{ + FastFence(); + LFENCE_ACQUIRE(); +} + +#define KeMemoryBarrierWithoutFence() _ReadWriteBarrier() FORCEINLINE KIRQL @@ -13290,14 +13307,14 @@ #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_) NTKERNELAPI -PSINGLE_LIST_ENTRY +PSINGLE_LIST_ENTRY FASTCALL ExInterlockedPopEntrySList( IN PSLIST_HEADER ListHead, IN PKSPIN_LOCK Lock); NTKERNELAPI -PSINGLE_LIST_ENTRY +PSINGLE_LIST_ENTRY FASTCALL ExInterlockedPushEntrySList( IN PSLIST_HEADER ListHead, Modified: trunk/reactos/include/xdk/amd64/ke.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/amd64/ke.h?rev…
============================================================================== --- trunk/reactos/include/xdk/amd64/ke.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/amd64/ke.h [iso-8859-1] Sat Jun 4 15:42:32 2011 @@ -45,6 +45,22 @@ #define KeGetDcacheFillSize() 1L #define YieldProcessor _mm_pause +#define FastFence __faststorefence +#define LoadFence _mm_lfence +#define MemoryFence _mm_mfence +#define StoreFence _mm_sfence +#define LFENCE_ACQUIRE() LoadFence() + +FORCEINLINE +VOID +KeMemoryBarrier(VOID) +{ + // FIXME: Do we really need lfence after the __faststorefence ? + FastFence(); + LFENCE_ACQUIRE(); +} + +#define KeMemoryBarrierWithoutFence() _ReadWriteBarrier() FORCEINLINE KIRQL Modified: trunk/reactos/include/xdk/x86/ke.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/x86/ke.h?rev=5…
============================================================================== --- trunk/reactos/include/xdk/x86/ke.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/x86/ke.h [iso-8859-1] Sat Jun 4 15:42:32 2011 @@ -58,6 +58,8 @@ __asm xchg [Barrier], eax #endif } + +#define KeMemoryBarrierWithoutFence() _ReadWriteBarrier() NTHALAPI KIRQL Modified: trunk/reactos/ntoskrnl/include/internal/spinlock.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/spinlock.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/spinlock.h [iso-8859-1] Sat Jun 4 15:42:32 2011 @@ -24,7 +24,7 @@ /* Add an explicit memory barrier to prevent the compiler from reordering memory accesses across the borders of spinlocks */ - _ReadWriteBarrier(); + KeMemoryBarrierWithoutFence(); } // @@ -39,7 +39,7 @@ /* Add an explicit memory barrier to prevent the compiler from reordering memory accesses across the borders of spinlocks */ - _ReadWriteBarrier(); + KeMemoryBarrierWithoutFence(); } #else Modified: trunk/reactos/ntoskrnl/ke/amd64/spinlock.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/amd64/spinlock…
============================================================================== --- trunk/reactos/ntoskrnl/ke/amd64/spinlock.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ke/amd64/spinlock.c [iso-8859-1] Sat Jun 4 15:42:32 2011 @@ -173,7 +173,7 @@ /* Add an explicit memory barrier to prevent the compiler from reordering memory accesses across the borders of spinlocks */ - _ReadWriteBarrier(); + KeMemoryBarrierWithoutFence(); /* Always return true on UP Machines */ return TRUE; @@ -196,7 +196,7 @@ /* Add an explicit memory barrier to prevent the compiler from reordering memory accesses across the borders of spinlocks */ - _ReadWriteBarrier(); + KeMemoryBarrierWithoutFence(); /* Always return true on UP Machines */ return TRUE;
13 years, 6 months
1
0
0
0
[tkreuzer] 52078: [NTOSKRNL/HAL] - Add explicit memory barriers to KxAcquireSpinLock, KxReleaseSpinLock inline functions and KeTryToAcquireQueuedSpinLock, KeTryToAcquireQueuedSpinLockRaiseToSynch i...
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Sat Jun 4 12:33:54 2011 New Revision: 52078 URL:
http://svn.reactos.org/svn/reactos?rev=52078&view=rev
Log: [NTOSKRNL/HAL] - Add explicit memory barriers to KxAcquireSpinLock, KxReleaseSpinLock inline functions and KeTryToAcquireQueuedSpinLock, KeTryToAcquireQueuedSpinLockRaiseToSynch in the UP case. This will prevent the compiler from reordering memory access instructions across the boundaries of these functions, even when being inlined. - Use the inline functions in x64 spinlock functions, too Modified: trunk/reactos/hal/halx86/generic/spinlock.c trunk/reactos/ntoskrnl/include/internal/spinlock.h trunk/reactos/ntoskrnl/ke/amd64/spinlock.c Modified: trunk/reactos/hal/halx86/generic/spinlock.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/spinloc…
============================================================================== --- trunk/reactos/hal/halx86/generic/spinlock.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/spinlock.c [iso-8859-1] Sat Jun 4 12:33:54 2011 @@ -188,6 +188,10 @@ /* Simply raise to synch */ KeRaiseIrql(SYNCH_LEVEL, OldIrql); + /* Add an explicit memory barrier to prevent the compiler from reordering + memory accesses across the borders of spinlocks */ + _ReadWriteBarrier(); + /* Always return true on UP Machines */ return TRUE; } @@ -208,6 +212,10 @@ /* Simply raise to dispatch */ KeRaiseIrql(DISPATCH_LEVEL, OldIrql); + /* Add an explicit memory barrier to prevent the compiler from reordering + memory accesses across the borders of spinlocks */ + _ReadWriteBarrier(); + /* Always return true on UP Machines */ return TRUE; } Modified: trunk/reactos/ntoskrnl/include/internal/spinlock.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/spinlock.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/spinlock.h [iso-8859-1] Sat Jun 4 12:33:54 2011 @@ -21,6 +21,10 @@ { /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */ UNREFERENCED_PARAMETER(SpinLock); + + /* Add an explicit memory barrier to prevent the compiler from reordering + memory accesses across the borders of spinlocks */ + _ReadWriteBarrier(); } // @@ -32,6 +36,10 @@ { /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */ UNREFERENCED_PARAMETER(SpinLock); + + /* Add an explicit memory barrier to prevent the compiler from reordering + memory accesses across the borders of spinlocks */ + _ReadWriteBarrier(); } #else Modified: trunk/reactos/ntoskrnl/ke/amd64/spinlock.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/amd64/spinlock…
============================================================================== --- trunk/reactos/ntoskrnl/ke/amd64/spinlock.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ke/amd64/spinlock.c [iso-8859-1] Sat Jun 4 12:33:54 2011 @@ -23,14 +23,14 @@ KIRQL KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock) { -#ifndef CONFIG_SMP - KIRQL OldIrql; - /* Simply raise to dispatch */ - KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); - return OldIrql; -#else - UNIMPLEMENTED; -#endif + KIRQL OldIrql; + + /* Raise to sync */ + KeRaiseIrql(SYNCH_LEVEL, &OldIrql); + + /* Acquire the lock and return */ + KxAcquireSpinLock(SpinLock); + return OldIrql; } /* @@ -40,14 +40,14 @@ NTAPI KeAcquireSpinLockRaiseToDpc(PKSPIN_LOCK SpinLock) { -#ifndef CONFIG_SMP - KIRQL OldIrql; - /* Simply raise to dispatch */ + KIRQL OldIrql; + + /* Raise to dispatch */ KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); - return OldIrql; -#else - UNIMPLEMENTED; -#endif + + /* Acquire the lock and return */ + KxAcquireSpinLock(SpinLock); + return OldIrql; } /* @@ -58,12 +58,9 @@ KeReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL OldIrql) { -#ifndef CONFIG_SMP - /* Simply lower IRQL back */ + /* Release the lock and lower IRQL back */ + KxReleaseSpinLock(SpinLock); KeLowerIrql(OldIrql); -#else - UNIMPLEMENTED; -#endif } /* @@ -72,14 +69,14 @@ KIRQL KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber) { -#ifndef CONFIG_SMP - KIRQL OldIrql; - /* Simply raise to dispatch */ + KIRQL OldIrql; + + /* Raise to dispatch */ KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); - return OldIrql; -#else - UNIMPLEMENTED; -#endif + + /* Acquire the lock */ + KxAcquireSpinLock(KeGetCurrentPrcb()->LockQueue[LockNumber].Lock); // HACK + return OldIrql; } /* @@ -88,14 +85,14 @@ KIRQL KeAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber) { -#ifndef CONFIG_SMP - KIRQL OldIrql; - /* Simply raise to dispatch */ - KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); - return OldIrql; -#else - UNIMPLEMENTED; -#endif + KIRQL OldIrql; + + /* Raise to synch */ + KeRaiseIrql(SYNCH_LEVEL, &OldIrql); + + /* Acquire the lock */ + KxAcquireSpinLock(KeGetCurrentPrcb()->LockQueue[LockNumber].Lock); // HACK + return OldIrql; } /* @@ -105,13 +102,17 @@ KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock, IN PKLOCK_QUEUE_HANDLE LockHandle) { -#ifndef CONFIG_SMP - /* Simply raise to dispatch */ + /* Set up the lock */ + LockHandle->LockQueue.Next = NULL; + LockHandle->LockQueue.Lock = SpinLock; + + /* Raise to dispatch */ KeRaiseIrql(DISPATCH_LEVEL, &LockHandle->OldIrql); -#else - UNIMPLEMENTED; -#endif -} + + /* Acquire the lock */ + KxAcquireSpinLock(LockHandle->LockQueue.Lock); // HACK +} + /* * @implemented @@ -120,13 +121,17 @@ KeAcquireInStackQueuedSpinLockRaiseToSynch(IN PKSPIN_LOCK SpinLock, IN PKLOCK_QUEUE_HANDLE LockHandle) { -#ifndef CONFIG_SMP - /* Simply raise to synch */ + /* Set up the lock */ + LockHandle->LockQueue.Next = NULL; + LockHandle->LockQueue.Lock = SpinLock; + + /* Raise to synch */ KeRaiseIrql(SYNCH_LEVEL, &LockHandle->OldIrql); -#else - UNIMPLEMENTED; -#endif -} + + /* Acquire the lock */ + KxAcquireSpinLock(LockHandle->LockQueue.Lock); // HACK +} + /* * @implemented @@ -135,27 +140,25 @@ KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, IN KIRQL OldIrql) { -#ifndef CONFIG_SMP + /* Release the lock */ + KxReleaseSpinLock(KeGetCurrentPrcb()->LockQueue[LockNumber].Lock); // HACK + + /* Lower IRQL back */ + KeLowerIrql(OldIrql); +} + + +/* + * @implemented + */ +VOID +KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle) +{ /* Simply lower IRQL back */ - KeLowerIrql(OldIrql); -#else - UNIMPLEMENTED; -#endif -} - -/* - * @implemented - */ -VOID -KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle) -{ -#ifndef CONFIG_SMP - /* Simply lower IRQL back */ + KxReleaseSpinLock(LockHandle->LockQueue.Lock); // HACK KeLowerIrql(LockHandle->OldIrql); -#else - UNIMPLEMENTED; -#endif -} +} + /* * @implemented @@ -167,11 +170,16 @@ #ifndef CONFIG_SMP /* Simply raise to dispatch */ KeRaiseIrql(DISPATCH_LEVEL, OldIrql); + + /* Add an explicit memory barrier to prevent the compiler from reordering + memory accesses across the borders of spinlocks */ + _ReadWriteBarrier(); /* Always return true on UP Machines */ return TRUE; #else UNIMPLEMENTED; + ASSERT(FALSE); #endif } @@ -185,11 +193,16 @@ #ifndef CONFIG_SMP /* Simply raise to dispatch */ KeRaiseIrql(DISPATCH_LEVEL, OldIrql); + + /* Add an explicit memory barrier to prevent the compiler from reordering + memory accesses across the borders of spinlocks */ + _ReadWriteBarrier(); /* Always return true on UP Machines */ return TRUE; #else UNIMPLEMENTED; + ASSERT(FALSE); #endif }
13 years, 6 months
1
0
0
0
[ekohl] 52077: [INF] - Add an .inf file to register the unknown device class.
by ekohl@svn.reactos.org
Author: ekohl Date: Sat Jun 4 08:03:51 2011 New Revision: 52077 URL:
http://svn.reactos.org/svn/reactos?rev=52077&view=rev
Log: [INF] - Add an .inf file to register the unknown device class. Added: trunk/reactos/media/inf/unknown.inf (with props) Modified: trunk/reactos/boot/bootdata/packages/reactos.dff trunk/reactos/media/inf/CMakeLists.txt trunk/reactos/media/inf/inf.rbuild trunk/reactos/media/inf/syssetup.inf trunk/reactos/media/inf/syssetup.inf.tpl Modified: trunk/reactos/boot/bootdata/packages/reactos.dff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/rea…
============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] Sat Jun 4 08:03:51 2011 @@ -676,6 +676,7 @@ media\inf\ports.inf 6 media\inf\scsi.inf 6 media\inf\syssetup.inf 6 +media\inf\unknown.inf 6 media\inf\usbport.inf 6 media\inf\usb.inf 6 media\inf\usbstor.inf 6 Modified: trunk/reactos/media/inf/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/CMakeLists.txt?r…
============================================================================== --- trunk/reactos/media/inf/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/media/inf/CMakeLists.txt [iso-8859-1] Sat Jun 4 08:03:51 2011 @@ -24,6 +24,7 @@ nettcpip.inf ports.inf scsi.inf + unknown.inf usb.inf usbport.inf usbstor.inf Modified: trunk/reactos/media/inf/inf.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/inf.rbuild?rev=5…
============================================================================== --- trunk/reactos/media/inf/inf.rbuild [iso-8859-1] (original) +++ trunk/reactos/media/inf/inf.rbuild [iso-8859-1] Sat Jun 4 08:03:51 2011 @@ -27,6 +27,7 @@ <installfile installbase="inf">ports.inf</installfile> <installfile installbase="inf">scsi.inf</installfile> <installfile installbase="inf" root="output">syssetup.inf</installfile> + <installfile installbase="inf">unknown.inf</installfile> <installfile installbase="inf">usb.inf</installfile> <installfile installbase="inf">usbport.inf</installfile> <installfile installbase="inf">usbstor.inf</installfile> Modified: trunk/reactos/media/inf/syssetup.inf URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/syssetup.inf?rev…
============================================================================== --- trunk/reactos/media/inf/syssetup.inf [iso-8859-1] (original) +++ trunk/reactos/media/inf/syssetup.inf [iso-8859-1] Sat Jun 4 08:03:51 2011 @@ -15,6 +15,7 @@ NET_NIC.inf ports.inf scsi.inf +unknown.inf usbport.inf audio.inf ks.inf Modified: trunk/reactos/media/inf/syssetup.inf.tpl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/syssetup.inf.tpl…
============================================================================== Binary files - no diff available. Added: trunk/reactos/media/inf/unknown.inf URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/unknown.inf?rev=…
============================================================================== Binary file - no diff available. Propchange: trunk/reactos/media/inf/unknown.inf ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
13 years, 6 months
1
0
0
0
[nyadav] 52076: [AUDSRV] finish upto actual mixing functions
by nyadav@svn.reactos.org
Author: nyadav Date: Fri Jun 3 21:41:26 2011 New Revision: 52076 URL:
http://svn.reactos.org/svn/reactos?rev=52076&view=rev
Log: [AUDSRV] finish upto actual mixing functions Added: branches/nyadav-audio-branch/base/services/audsrv/mixer.c (with props) Modified: branches/nyadav-audio-branch/base/services/audsrv/CMakeLists.txt branches/nyadav-audio-branch/base/services/audsrv/audsrv.c branches/nyadav-audio-branch/base/services/audsrv/audsrv.h branches/nyadav-audio-branch/base/services/audsrv/rpc.c branches/nyadav-audio-branch/base/services/audsrv/stream.c branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.c branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.spec branches/nyadav-audio-branch/drivers/wdm/audio/backpln/audclient/audclient.c branches/nyadav-audio-branch/include/reactos/idl/audsrvrpc.idl branches/nyadav-audio-branch/include/reactos/libs/audsrv/audsrvapi.h Modified: branches/nyadav-audio-branch/base/services/audsrv/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/servic…
============================================================================== --- branches/nyadav-audio-branch/base/services/audsrv/CMakeLists.txt [iso-8859-1] (original) +++ branches/nyadav-audio-branch/base/services/audsrv/CMakeLists.txt [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -7,6 +7,7 @@ audsrv.c audsrv.rc rpc.c + mixer.c stream.c) add_executable(audsrv ${SOURCE}) Modified: branches/nyadav-audio-branch/base/services/audsrv/audsrv.c URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/servic…
============================================================================== --- branches/nyadav-audio-branch/base/services/audsrv/audsrv.c [iso-8859-1] (original) +++ branches/nyadav-audio-branch/base/services/audsrv/audsrv.c [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -41,6 +41,7 @@ const GUID KSMEDIUMSETID_Standard = {0x4747B320L, 0x62CE, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}}; const GUID KSDATAFORMAT_TYPE_AUDIO = {0x73647561L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; const GUID KSDATAFORMAT_SUBTYPE_PCM = {0x00000001L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; +const GUID KSDATAFORMAT_SUBTYPE_IEEE_FLOAT = {0x00000003L, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; const GUID KSDATAFORMAT_SPECIFIER_WAVEFORMATEX = {0x05589f81L, 0xc356, 0x11ce, {0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}}; MixerEngine engine,*pengine; @@ -152,24 +153,31 @@ - -void fill(MixerEngine * mixer,int buffer) -{ - DWORD Length; - UINT i = 0; -Sleep(100); - Length = mixer->masterfreq * mixer->masterchannels * mixer->masterbitspersample / 8; - mixer->masterbuf[buffer] = (PSHORT)HeapAlloc(GetProcessHeap(), 0, Length); - while (i < Length / 2) - { - mixer->masterbuf[buffer][i] = 0x7FFF * sin(0.5 * (i - 1) * 500 * _2pi / 48000); - i++; - mixer->masterbuf[buffer][i] = 0x7FFF * sin(0.5 * (i - 2) * 500 * _2pi / 48000); - i++; - } - mixer->bytes_to_play = Length; -} - +void mixandfill(MixerEngine * mixer,int buffer) +{ + while(WaitForSingleObject(mixer->streampresent,100)!=0){if(mixer->dead) return;} /*Check if there is at least one stream present.*/ + if(mixer->masterdatatype == 0)/*signed int*/ + { + if(mixer->masterbitspersample == 8)mixs8(mixer,buffer);else if(mixer->masterbitspersample == 16) mixs16(mixer,buffer);else if(mixer->masterbitspersample == 32) mixs32(mixer,buffer);else if(mixer->masterbitspersample == 64) mixs64(mixer,buffer); + } + else if (mixer->masterdatatype == 1)/*unsigned int*/ + { + if(mixer->masterbitspersample == 8)mixu8(mixer,buffer);else if(mixer->masterbitspersample == 16) mixu16(mixer,buffer);else if(mixer->masterbitspersample == 32) mixu32(mixer,buffer);else if(mixer->masterbitspersample == 64) mixu64(mixer,buffer); + } + else if(mixer->masterdatatype == 2)/*Float*/ + { + if(mixer->masterbitspersample == 32)mixfl32(mixer,buffer);else if(mixer->masterbitspersample == 64) mixfl64(mixer,buffer); + } + + mixer->masterbuf[buffer] = HeapAlloc(GetProcessHeap(), 0, mixer->serverstreamlist->length_filtered); + CopyMemory(mixer->masterbuf[buffer],mixer->serverstreamlist->filteredbuf,mixer->serverstreamlist->length_filtered); + mixer->bytes_to_play = mixer->serverstreamlist->length_filtered; +} +void freebuffer() +{ + HeapFree(GetProcessHeap(), 0, pengine->masterbuf[pengine->playcurrent]); + pengine->masterbuf[pengine->playcurrent] = NULL; +} void playbuffer(MixerEngine * mixer,int buffer) { SP_DEVICE_INTERFACE_DATA InterfaceData; @@ -276,7 +284,10 @@ DataFormat->Flags = 0; DataFormat->Reserved = 0; DataFormat->MajorFormat = KSDATAFORMAT_TYPE_AUDIO; - DataFormat->SubFormat = KSDATAFORMAT_SUBTYPE_PCM; + if(mixer->masterdatatype == 0 || mixer->masterdatatype == 1) + DataFormat->SubFormat = KSDATAFORMAT_SUBTYPE_PCM; + else + DataFormat->SubFormat = KSDATAFORMAT_SUBTYPE_IEEE_FLOAT; DataFormat->Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX; DataFormat->SampleSize = mixer->masterchannels * mixer->masterbitspersample / 8; DataFormat->FormatSize = sizeof(KSDATAFORMAT) + sizeof(WAVEFORMATEXTENSIBLE); @@ -290,9 +301,11 @@ WaveFormat->Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); WaveFormat->dwChannelMask = mixer->masterchannelmask; WaveFormat->Samples.wValidBitsPerSample = mixer->masterbitspersample; - WaveFormat->SubFormat = KSDATAFORMAT_SUBTYPE_PCM; - - //printf("Creating pin\n"); + if(mixer->masterdatatype == 0 || mixer->masterdatatype == 1) + WaveFormat->SubFormat = KSDATAFORMAT_SUBTYPE_PCM; + else + WaveFormat->SubFormat = KSDATAFORMAT_SUBTYPE_IEEE_FLOAT; + // // Create the pin @@ -367,12 +380,9 @@ SetEvent(mixer->played); while(1) { - while(WaitForSingleObject(mixer->streampresent,100)!=0){if(mixer->dead)goto DEAD;} /*Check if there is at least one stream present.*/ - while(WaitForSingleObject(mixer->played,100)!=0){if(mixer->dead)goto DEAD;} - fill(mixer,1-mixer->playcurrent); + mixandfill(mixer,1-mixer->playcurrent); SetEvent(mixer->filled); - } DEAD: printf("\nMixer Thread Ended\n"); @@ -386,7 +396,7 @@ while(WaitForSingleObject(mixer->filled,100)!=0){if(mixer->dead)goto DEAD;} SetEvent(mixer->played); playbuffer(mixer,mixer->playcurrent); - + freebuffer(); mixer->playcurrent=1-mixer->playcurrent; } @@ -468,6 +478,7 @@ pengine->mute=FALSE; pengine->dead=0; + pengine->streamidpool=0; pengine->playcurrent=1; pengine->masterbuf[0] = NULL; pengine->masterbuf[1] = NULL; @@ -501,6 +512,7 @@ pengine->mute=FALSE; pengine->dead=0; + pengine->streamidpool=0; pengine->playcurrent=1; pengine->masterbuf[0] = NULL; pengine->masterbuf[1] = NULL; Modified: branches/nyadav-audio-branch/base/services/audsrv/audsrv.h URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/servic…
============================================================================== --- branches/nyadav-audio-branch/base/services/audsrv/audsrv.h [iso-8859-1] (original) +++ branches/nyadav-audio-branch/base/services/audsrv/audsrv.h [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -29,15 +29,24 @@ typedef struct ServerStream { + long streamid; int volume; LONG freq; int bitspersample; + int datatype; /*0=signed int,1=unsigned int,2=float*/ int channels; ULONG channelmask; HANDLE played; - HANDLE streamready; + HANDLE threadready; HANDLE thread; float balance; + BOOL ready; + PVOID genuinebuf; + int length_genuine; + PVOID filteredbuf; + int length_filtered; + PVOID minsamplevalue; + PVOID maxsamplevalue; struct ServerStream * next; } ServerStream; @@ -45,6 +54,7 @@ { /*Should be Initialized at Server Start*/ char dead; + long streamidpool; HANDLE played; HANDLE filled; HANDLE streampresent; @@ -60,7 +70,8 @@ int masterchannels; unsigned long masterchannelmask; int masterbitspersample; - PSHORT masterbuf[2]; + int masterdatatype; + PVOID masterbuf[2]; /*Currently don't know the future of following variables*/ long bytes_to_play; HANDLE FilterHandle; @@ -75,10 +86,22 @@ /* rpc.c */ DWORD WINAPI RunRPCThread(LPVOID lpParameter); /* audsrv.c*/ -void fill(MixerEngine * mixer,int buffer); +void mixandfill(MixerEngine * mixer,int buffer); void playbuffer(MixerEngine * mixer,int buffer); /*stream.c*/ -HANDLE addstream(LONG frequency,int channels,int bitspersample, ULONG channelmask,int volume,int mute,float balance); +long getnewstreamid(); +long addstream(LONG frequency,int channels,int bitspersample,int datatype, ULONG channelmask,int volume,int mute,float balance); +/*mixer.c*/ +void * mixs8(MixerEngine * mixer,int buffer); +void * mixs16(MixerEngine * mixer,int buffer); +void * mixs32(MixerEngine * mixer,int buffer); +void * mixs64(MixerEngine * mixer,int buffer); +void * mixu8(MixerEngine * mixer,int buffer); +void * mixu16(MixerEngine * mixer,int buffer); +void * mixu32(MixerEngine * mixer,int buffer); +void * mixu64(MixerEngine * mixer,int buffer); +void * mixfl32(MixerEngine * mixer,int buffer); +void * mixfl64(MixerEngine * mixer,int buffer); /********************************/ #endif /* __AUDSRV_H__ */ Added: branches/nyadav-audio-branch/base/services/audsrv/mixer.c URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/servic…
============================================================================== --- branches/nyadav-audio-branch/base/services/audsrv/mixer.c (added) +++ branches/nyadav-audio-branch/base/services/audsrv/mixer.c [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -1,0 +1,35 @@ + +#include "audsrv.h" +void * mixs8(MixerEngine * mixer,int buffer) +{ +} +void * mixs16(MixerEngine * mixer,int buffer) +{ + mixer->masterbuf[buffer] = HeapAlloc(GetProcessHeap(), 0, mixer->serverstreamlist->length_filtered); + CopyMemory(mixer->masterbuf[buffer],mixer->serverstreamlist->filteredbuf,mixer->serverstreamlist->length_filtered); + mixer->bytes_to_play = mixer->serverstreamlist->length_filtered; +} +void * mixs32(MixerEngine * mixer,int buffer) +{ +} +void * mixs64(MixerEngine * mixer,int buffer) +{ +} +void * mixu8(MixerEngine * mixer,int buffer) +{ +} +void * mixu16(MixerEngine * mixer,int buffer) +{ +} +void * mixu32(MixerEngine * mixer,int buffer) +{ +} +void * mixu64(MixerEngine * mixer,int buffer) +{ +} +void * mixfl32(MixerEngine * mixer,int buffer) +{ +} +void * mixfl64(MixerEngine * mixer,int buffer) +{ +} Propchange: branches/nyadav-audio-branch/base/services/audsrv/mixer.c ------------------------------------------------------------------------------ svn:eol-style = native Propchange: branches/nyadav-audio-branch/base/services/audsrv/mixer.c ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: branches/nyadav-audio-branch/base/services/audsrv/rpc.c URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/servic…
============================================================================== --- branches/nyadav-audio-branch/base/services/audsrv/rpc.c [iso-8859-1] (original) +++ branches/nyadav-audio-branch/base/services/audsrv/rpc.c [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -45,13 +45,13 @@ /*************************RPC Functions**********************************/ -int AUDInitStream( IN RPC_BINDING_HANDLE hBinding,LONG frequency,int channels,int bitspersample, ULONG channelmask,int volume,int mute,float balance) +long AUDInitStream( IN RPC_BINDING_HANDLE hBinding,LONG frequency,int channels,int bitspersample,int datatype, ULONG channelmask,int volume,int mute,float balance) { - HANDLE stream; - printf("Client Connected and Initiated Stream Freq: %ld,Channle: %d,Bitspersample: %d,Mask: %ld,Volume: %d,Mute: %d,Balance: %f\n",frequency,channels,bitspersample,channelmask,volume,mute,balance); - stream = addstream(frequency,channels,bitspersample,channelmask,volume,mute,balance); - if( stream == NULL ){return 0;}else{printf("Stream added\n");} - return (int)stream; + long stream; + printf("Client Connected and Initiated Stream Freq: %ld,Channle: %d,Bitspersample: %d,Datatype: %d,Mask: %ld,Volume: %d,Mute: %d,Balance: %f\n",frequency,channels,bitspersample,datatype,channelmask,volume,mute,balance); + stream = addstream(frequency,channels,bitspersample,datatype,channelmask,volume,mute,balance); + if( stream != 0 ){printf("Stream added\n");} + return stream; } /*************************************************************************/ void __RPC_FAR *__RPC_USER midl_user_allocate(SIZE_T len) Modified: branches/nyadav-audio-branch/base/services/audsrv/stream.c URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/base/servic…
============================================================================== --- branches/nyadav-audio-branch/base/services/audsrv/stream.c [iso-8859-1] (original) +++ branches/nyadav-audio-branch/base/services/audsrv/stream.c [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -1,17 +1,40 @@ #include "audsrv.h" +long getnewstreamid() +{ + long streamid= pengine->streamidpool; + pengine->streamidpool+=1; + return streamid; +} DWORD WINAPI RunStreamThread(LPVOID param) { + UINT i = 0; ServerStream * localstream = (ServerStream *) param; - SetEvent(localstream->streamready); + printf("Signaling Mixer Thread For First Stream\n"); - SetEvent(pengine->streampresent); +/*HACK fill filtered buffer (1 second duration in the master stream format) directly until we are in a condition to get buffer directly from the client*/ +/******************************************************/ +PSHORT tempbuf; +localstream->ready =TRUE; +localstream->length_filtered = localstream->freq * localstream->channels * localstream->bitspersample / 8; +tempbuf = (PSHORT)HeapAlloc(GetProcessHeap(), 0, localstream->length_filtered); + while (i < localstream->length_filtered / 2) + { + tempbuf[i] = 0x7FFF * sin(0.5 * (i - 1) * 500 * 6.28 / 48000); + i++; + tempbuf[i] = 0x7FFF * sin(0.5 * (i - 2) * 500 * 6.28 / 48000); + i++; + } +localstream->filteredbuf = tempbuf; +/******************************************************/ + SetEvent(localstream->threadready); + while (1){OutputDebugStringA("Stream Thread Running.");Sleep(100);}; /*Clean Stream's data*/ } -HANDLE addstream(LONG frequency,int channels,int bitspersample, ULONG channelmask,int volume,int mute,float balance) +long addstream(LONG frequency,int channels,int bitspersample,int datatype, ULONG channelmask,int volume,int mute,float balance) { ServerStream * newstream,*localstream; DWORD dwID; @@ -23,37 +46,56 @@ if(volume < 0) {newstream->volume = 0;}else if (volume > 1000) {newstream->volume = 1000;}else {newstream->volume = volume;} if(volume < -1.0) {newstream->volume = -1.0;}else if (volume > 1.0) {newstream->volume = 1.0;}else {newstream->volume = volume;} newstream->freq = frequency; /*TODO frequency validation required*/ + if(datatype==0 || datatype==1 || datatype==2){newstream->datatype=datatype;}else goto error; + if ((datatype==0 && (bitspersample == 8 || bitspersample == 16 || bitspersample == 32 || bitspersample == 64 )) || + (datatype==1 && (bitspersample == 8 || bitspersample == 16 || bitspersample == 32 || bitspersample == 64)) || + (datatype==2 && (bitspersample == 32 || bitspersample == 64)) ) newstream->bitspersample = bitspersample; /*TODO bitspersample validation*/ + else goto error; + newstream->channels = channels; /*TODO validation*/ newstream->channelmask = channelmask; /*TODO validation*/ + newstream->ready = FALSE; + newstream->length_genuine = 0; + newstream->genuinebuf = NULL; + newstream->length_filtered = 0; + newstream->filteredbuf = NULL; + newstream->minsamplevalue = NULL; + newstream->maxsamplevalue = NULL; + newstream->next = NULL; newstream->played = CreateEvent(NULL,FALSE,FALSE,NULL); - newstream->streamready = CreateEvent(NULL,FALSE,FALSE,NULL); + newstream->threadready = CreateEvent(NULL,FALSE,FALSE,NULL); - if(newstream->played == NULL || newstream->streamready == NULL) {goto error;} + if(newstream->played == NULL || newstream->threadready == NULL) {goto error;} newstream->thread=CreateThread(NULL,0,RunStreamThread,newstream,0,&dwID); if(newstream->thread == NULL) {goto error;} - WaitForSingleObject(newstream->streamready,INFINITE); + WaitForSingleObject(newstream->threadready,INFINITE); + + newstream->streamid=getnewstreamid(); if(localstream == NULL) { - pengine->serverstreamlist = localstream; + pengine->serverstreamlist = newstream; pengine->masterfreq=frequency; pengine->masterchannels=channels; pengine->masterchannelmask=channelmask; pengine->masterbitspersample=bitspersample; + pengine->masterdatatype = datatype; } else { while(localstream->next != NULL){localstream = localstream->next;} localstream->next = newstream; } - return newstream->thread; + SetEvent(pengine->streampresent); + return newstream->streamid; error: + printf("Stream Rejected \n"); HeapFree(GetProcessHeap(), 0, newstream); - return NULL; + return 0; } Modified: branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.c URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/dll/win32/a…
============================================================================== --- branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.c [iso-8859-1] (original) +++ branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.c [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -5,9 +5,9 @@ /*Initialize an audio stream *Return -1 if callbacks are NULL pointers */ -WINAPI int initstream (ClientStream * clientstream,LONG frequency,int channels,int bitspersample, ULONG channelmask,int volume,int mute,float balance) +WINAPI int initstream (ClientStream * clientstream,LONG frequency,int channels,int bitspersample,int datatype, ULONG channelmask,int volume,int mute,float balance) { - int streamid; + long streamid; if (clientstream == NULL ) return -1; if (clientstream->callbacks.OpenComplete == NULL || clientstream->callbacks.BufferCopied == NULL || clientstream->callbacks.PlayComplete == NULL) return -2; /*Validity of all other data will be checked at server*/ @@ -16,8 +16,9 @@ RpcTryExcept { - streamid = AUDInitStream (audsrv_v0_0_c_ifspec,frequency,channels,bitspersample,channelmask,volume,mute,balance); - printf("AUDInitStream Returned %d",streamid); + streamid = AUDInitStream (audsrv_v0_0_c_ifspec,frequency,channels,bitspersample,datatype,channelmask,volume,mute,balance); + printf("AUDInitStream Returned %ld",streamid); + if(streamid != 0) {clientstream->stream = streamid;} } RpcExcept(1) { @@ -28,8 +29,6 @@ /*Analyse the return by the function*/ /*Currently Suppose the return is 0 and a valid streamid is returned*/ - clientstream->stream = &status; - clientstream->ClientEventPool[0]=CreateEvent(NULL,FALSE,FALSE,NULL); clientstream->dead = 0; Modified: branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.spec URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/dll/win32/a…
============================================================================== --- branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.spec [iso-8859-1] (original) +++ branches/nyadav-audio-branch/dll/win32/audsrvapi/audsrvapi.spec [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -1,4 +1,4 @@ -@ stdcall initstream (ptr long long long long long long long) +@ stdcall initstream (ptr long long long long long long long long) @ stdcall playaudio ( ptr); @ stdcall stopaudio (ptr ); @ stdcall Volume(ptr ptr ); Modified: branches/nyadav-audio-branch/drivers/wdm/audio/backpln/audclient/audclient.c URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/drivers/wdm…
============================================================================== --- branches/nyadav-audio-branch/drivers/wdm/audio/backpln/audclient/audclient.c [iso-8859-1] (original) +++ branches/nyadav-audio-branch/drivers/wdm/audio/backpln/audclient/audclient.c [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -8,7 +8,7 @@ void buffercopied (int error ); void playcomplete (int error ); -ClientStream clientstream = {NULL,0,{NULL},{opencomplete,buffercopied,playcomplete}};/*This initialization should not be necessary for a typical client*/ +ClientStream clientstream = {0,0,{NULL},{opencomplete,buffercopied,playcomplete}};/*This initialization should not be necessary for a typical client*/ DWORD WINAPI RunAudioThread(LPVOID param) { @@ -39,12 +39,12 @@ char input='\0'; printf("ReactOS Audio Mixer Sample Client.Enter 'a' to Stop.\n"); //if (clientstream->callbacks.OpenComplete == NULL || clientstream->callbacks.BufferCopied == NULL || clientstream->callbacks.PlayComplete == NULL) printf(""); - error = initstream ( &clientstream , 44100 , 2 , 16 , KSAUDIO_SPEAKER_STEREO , 1000 , 0, 0.0 ); /*[out]HANDLE * streamhandle,[in] long frequency,[in] int number of channels,[in] int bitspersample,[in]ULONG channelmask,[in] int volume,[in] int mute,[in] float balance*/ + error = initstream ( &clientstream , 44100 , 2 , 16 ,0, KSAUDIO_SPEAKER_STEREO , 1000 , 0, 0.0 ); /*[out]HANDLE * streamhandle,[in] long frequency,[in] int number of channels,[in] int bitspersample,[in]ULONG channelmask,[in] int volume,[in] int mute,[in] float balance*/ if ( error ) printf("Failed to Initialize Stream.Error %d\n", error); else { - printf("StreamID : %d\n",*((int *)clientstream.stream)); + printf("StreamID : %ld\n",clientstream.stream); audiothread = CreateThread(NULL,0,RunAudioThread,&clientstream,0,&dwID); } while ( input != 'a' ) Modified: branches/nyadav-audio-branch/include/reactos/idl/audsrvrpc.idl URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/include/rea…
============================================================================== --- branches/nyadav-audio-branch/include/reactos/idl/audsrvrpc.idl [iso-8859-1] (original) +++ branches/nyadav-audio-branch/include/reactos/idl/audsrvrpc.idl [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -39,6 +39,6 @@ interface audsrv { - int AUDInitStream([in] handle_t h1,[in]LONG frequency,[in]int channels,[in]int bitspersample,[in] ULONG channelmask,[in]int volume,[in]int mute,[in]float balance); + long AUDInitStream([in] handle_t h1,[in]LONG frequency,[in]int channels,[in]int bitspersample,[in]int datatype,[in] ULONG channelmask,[in]int volume,[in]int mute,[in]float balance); } Modified: branches/nyadav-audio-branch/include/reactos/libs/audsrv/audsrvapi.h URL:
http://svn.reactos.org/svn/reactos/branches/nyadav-audio-branch/include/rea…
============================================================================== --- branches/nyadav-audio-branch/include/reactos/libs/audsrv/audsrvapi.h [iso-8859-1] (original) +++ branches/nyadav-audio-branch/include/reactos/libs/audsrv/audsrvapi.h [iso-8859-1] Fri Jun 3 21:41:26 2011 @@ -17,14 +17,14 @@ typedef struct ClientStream { -HANDLE stream; +long stream; int dead; HANDLE ClientEventPool[1]; //0]th event is for Activescheduler struct CallBacks callbacks; } ClientStream; /********************API Functions******************/ -WINAPI int initstream (ClientStream * clientstream,LONG frequency,int channels,int bitspersample, ULONG channelmask,int volume,int mute,float balance); +WINAPI int initstream (ClientStream * clientstream,LONG frequency,int channels,int bitspersample,int datatype, ULONG channelmask,int volume,int mute,float balance); WINAPI int playaudio ( ClientStream * clientstream); WINAPI int stopaudio (ClientStream * clientstream ); WINAPI int Volume(ClientStream * clientstream, int * volume );
13 years, 6 months
1
0
0
0
[osiejka] 52075: [NTOSKRNL] Hackfix to r52065: - Comment out call to IopDecrementDeviceObjectRef in IopLoadFileSystemDriver, on Pierre's request. Needs more research. Should fix boot and testcd ASS...
by osiejka@svn.reactos.org
Author: osiejka Date: Fri Jun 3 13:34:29 2011 New Revision: 52075 URL:
http://svn.reactos.org/svn/reactos?rev=52075&view=rev
Log: [NTOSKRNL] Hackfix to r52065: - Comment out call to IopDecrementDeviceObjectRef in IopLoadFileSystemDriver, on Pierre's request. Needs more research. Should fix boot and testcd ASSERT in 2nd stage. Modified: trunk/reactos/ntoskrnl/io/iomgr/volume.c Modified: trunk/reactos/ntoskrnl/io/iomgr/volume.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/volume.c…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/volume.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/volume.c [iso-8859-1] Fri Jun 3 13:34:29 2011 @@ -448,8 +448,8 @@ } } - /* Dereference DO - FsRec? */ - IopDecrementDeviceObjectRef(AttachedDeviceObject, TRUE); + /* Dereference DO - FsRec? - Comment out call, since it breaks up 2nd stage boot, needs more research. */ +// IopDecrementDeviceObjectRef(AttachedDeviceObject, TRUE); } /*
13 years, 6 months
1
0
0
0
[ilardig] 52074: - Fix boot.
by ilardig@svn.reactos.org
Author: ilardig Date: Fri Jun 3 10:58:26 2011 New Revision: 52074 URL:
http://svn.reactos.org/svn/reactos?rev=52074&view=rev
Log: - Fix boot. Modified: trunk/reactos/boot/bootdata/txtsetup.sif trunk/reactos/media/inf/fdc.inf Modified: trunk/reactos/boot/bootdata/txtsetup.sif URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/txtsetup.sif…
============================================================================== --- trunk/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] Fri Jun 3 10:58:26 2011 @@ -30,7 +30,6 @@ isapnp.sys=,,,,,,,,,,,,4 kdcom.dll=,,,,,,,,,,,,2 disk.sys=,,,,,,x,,,,,,4 -fdc.sys=,,,,,,,,,,,,4 floppy.sys=,,,,,,x,,,,,,4 i8042prt.sys=,,,,,,x,,,,,,4 kbdclass.sys=,,,,,,x,,,,,,4 @@ -61,7 +60,6 @@ PCI\CC_0105 = uniata PCI\CC_0106 = uniata *PNP0600 = uniata -*PNP0700 = fdc [BootBusExtenders.Load] acpi = acpi.sys @@ -70,7 +68,6 @@ [BusExtenders.Load] pciide = pciide.sys -fdc = fdc.sys [SCSI.Load] uniata = uniata.sys Modified: trunk/reactos/media/inf/fdc.inf URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/fdc.inf?rev=5207…
============================================================================== Binary files - no diff available.
13 years, 6 months
1
0
0
0
[pschweitzer] 52073: [NTOSKRNL] Fixes to r52065: - Acquire resources within a critical region - Simplified IoEnumerateRegisteredFiltersList and made its behaviour match the one described in MSDN: h...
by pschweitzer@svn.reactos.org
Author: pschweitzer Date: Fri Jun 3 08:43:05 2011 New Revision: 52073 URL:
http://svn.reactos.org/svn/reactos?rev=52073&view=rev
Log: [NTOSKRNL] Fixes to r52065: - Acquire resources within a critical region - Simplified IoEnumerateRegisteredFiltersList and made its behaviour match the one described in MSDN:
http://msdn.microsoft.com/en-us/library/ff548348%28v=vs.85%29.aspx
This was brought to you by Alex Ionescu. Modified: trunk/reactos/ntoskrnl/io/iomgr/volume.c Modified: trunk/reactos/ntoskrnl/io/iomgr/volume.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/volume.c…
============================================================================== --- trunk/reactos/ntoskrnl/io/iomgr/volume.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/iomgr/volume.c [iso-8859-1] Fri Jun 3 08:43:05 2011 @@ -781,7 +781,7 @@ NTAPI IopNotifyAlreadyRegisteredFileSystems(IN PLIST_ENTRY ListHead, IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine, - BOOLEAN SkipLast) + BOOLEAN SkipRawFs) { PLIST_ENTRY ListEntry; PDEVICE_OBJECT DeviceObject; @@ -790,8 +790,8 @@ ListEntry = ListHead->Flink; while (ListEntry != ListHead) { - /* Check if we reached end and if we have to skip it */ - if (ListEntry->Flink == ListHead && SkipLast) + /* Check if we reached rawfs and if we have to skip it */ + if (ListEntry->Flink == ListHead && SkipRawFs) { return; } @@ -819,55 +819,49 @@ IN ULONG DriverObjectListSize, OUT PULONG ActualNumberDriverObjects) { - USHORT Index = 0; - ULONG ListSize = 0; PLIST_ENTRY ListEntry; NTSTATUS Status = STATUS_SUCCESS; PFS_CHANGE_NOTIFY_ENTRY ChangeEntry; + ULONG ListSize = 0, MaximumSize = DriverObjectListSize / sizeof(PDRIVER_OBJECT); /* Acquire the FS lock */ + KeEnterCriticalRegion(); ExAcquireResourceExclusiveLite(&IopDatabaseResource, TRUE); - /* First of all, count number of driver objects */ + /* Browse the whole list */ ListEntry = IopFsNotifyChangeQueueHead.Flink; while (ListEntry != &IopFsNotifyChangeQueueHead) { - ListSize++; - - /* Go to the next entry */ - ListEntry = ListEntry->Flink; - } - - /* Return this size */ - *ActualNumberDriverObjects = ListSize; - - /* Then, check if given buffer is big enough to contain list */ - if (ListSize > DriverObjectListSize / sizeof(PDRIVER_OBJECT)) - { - Status = STATUS_BUFFER_TOO_SMALL; - } - else - { - /* Rebrowse the whole list */ - ListEntry = IopFsNotifyChangeQueueHead.Flink; - while (ListEntry != &IopFsNotifyChangeQueueHead) - { - ChangeEntry = CONTAINING_RECORD(ListEntry, - FS_CHANGE_NOTIFY_ENTRY, - FsChangeNotifyList); - + ChangeEntry = CONTAINING_RECORD(ListEntry, + FS_CHANGE_NOTIFY_ENTRY, + FsChangeNotifyList); + + /* If buffer is still big enough */ + if (ListSize < MaximumSize) + { /* Reference the driver object */ ObReferenceObject(ChangeEntry->DriverObject); /* And pass it to the caller */ - DriverObjectList[Index++] = ChangeEntry->DriverObject; - - /* Go to the next entry */ - ListEntry = ListEntry->Flink; - } - } + DriverObjectList[ListSize] = ChangeEntry->DriverObject; + } + else + { + Status = STATUS_BUFFER_TOO_SMALL; + } + + /* Increase size counter */ + ListSize++; + + /* Go to the next entry */ + ListEntry = ListEntry->Flink; + } + + /* Return list size */ + *ActualNumberDriverObjects = ListSize; /* Release the FS lock */ ExReleaseResourceLite(&IopDatabaseResource); + KeLeaveCriticalRegion(); return Status; } @@ -993,6 +987,7 @@ PAGED_CODE(); /* Acquire the FS lock */ + KeEnterCriticalRegion(); ExAcquireResourceExclusiveLite(&IopDatabaseResource, TRUE); /* Check what kind of FS this is */ @@ -1044,6 +1039,7 @@ /* Release the FS Lock */ ExReleaseResourceLite(&IopDatabaseResource); + KeLeaveCriticalRegion(); /* Ensure driver won't be unloaded */ IopInterlockedIncrementUlong(LockQueueIoDatabaseLock, (PULONG)&DeviceObject->ReferenceCount); @@ -1059,6 +1055,7 @@ PAGED_CODE(); /* Acquire the FS lock */ + KeEnterCriticalRegion(); ExAcquireResourceExclusiveLite(&IopDatabaseResource, TRUE); /* Simply remove the entry - if queued */ @@ -1075,6 +1072,7 @@ /* Then release the lock */ ExReleaseResourceLite(&IopDatabaseResource); + KeLeaveCriticalRegion(); /* Decrease reference count to allow unload */ IopInterlockedDecrementUlong(LockQueueIoDatabaseLock, (PULONG)&DeviceObject->ReferenceCount); @@ -1092,6 +1090,7 @@ PAGED_CODE(); /* Acquire the list lock */ + KeEnterCriticalRegion(); ExAcquireResourceExclusiveLite(&IopDatabaseResource, TRUE); /* Check if that driver is already registered (successive calls) @@ -1140,6 +1139,7 @@ /* Release the lock */ ExReleaseResourceLite(&IopDatabaseResource); + KeLeaveCriticalRegion(); /* Reference the driver */ ObReferenceObject(DriverObject); @@ -1159,6 +1159,7 @@ PAGED_CODE(); /* Acquire the list lock */ + KeEnterCriticalRegion(); ExAcquireResourceExclusiveLite(&IopDatabaseResource, TRUE); /* Loop the list */ @@ -1186,6 +1187,9 @@ /* Release the lock and dereference the driver */ ExReleaseResourceLite(&IopDatabaseResource); + KeLeaveCriticalRegion(); + + /* Dereference the driver */ ObDereferenceObject(DriverObject); }
13 years, 6 months
1
0
0
0
← Newer
1
...
39
40
41
42
43
44
45
46
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
Results per page:
10
25
50
100
200