Author: hbelusca Date: Thu Jan 3 17:47:34 2013 New Revision: 58105
URL: http://svn.reactos.org/svn/reactos?rev=58105&view=rev Log: [CONSRV] Revert unwanted changes brought accidentally in r58104.
Modified: branches/ros-csrss/win32ss/user/consrv/coninput.c branches/ros-csrss/win32ss/user/consrv/conio.h branches/ros-csrss/win32ss/user/consrv/conoutput.c branches/ros-csrss/win32ss/user/consrv/console.c branches/ros-csrss/win32ss/user/consrv/handle.c
Modified: branches/ros-csrss/win32ss/user/consrv/coninput.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/consrv/co... ============================================================================== --- branches/ros-csrss/win32ss/user/consrv/coninput.c [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/consrv/coninput.c [iso-8859-1] Thu Jan 3 17:47:34 2013 @@ -88,16 +88,6 @@ InsertTailList(&Console->InputEvents, &ConInRec->ListEntry);
SetEvent(Console->ActiveEvent); -/* - if (CsrNotifyWait(&Console->ReadWaitQueue, - WaitAny, - NULL, - NULL)) - { - ASSERT(Console->SatisfiedWaits == NULL); - Console->SatisfiedWaits = &Console->ReadWaitQueue; - } -*/ CsrNotifyWait(&Console->ReadWaitQueue, WaitAny, NULL, @@ -265,7 +255,7 @@ { current = CONTAINING_RECORD(current_entry, CONSOLE_PROCESS_DATA, ConsoleLink); current_entry = current_entry->Flink; - ConioConsoleCtrlEvent(CTRL_C_EVENT, current); + ConioConsoleCtrlEvent((DWORD)CTRL_C_EVENT, current); } if (Console->LineBuffer && !Console->LineComplete) { @@ -334,7 +324,6 @@ CapturedInputInfo, NULL)) { - /* Fail */ HeapFree(ConSrvHeap, 0, CapturedInputInfo); return STATUS_NO_MEMORY; } @@ -364,46 +353,11 @@ PCSRSS_GET_CONSOLE_INPUT GetConsoleInputRequest = &((PCONSOLE_API_MESSAGE)WaitApiMessage)->Data.GetConsoleInputRequest; PGET_INPUT_INFO InputInfo = (PGET_INPUT_INFO)WaitContext;
- DWORD Flag = (DWORD)WaitArgument1; - BOOLEAN InputHandleClosing = (WaitArgument2 == (PVOID)0xdeaddead); - - DPRINT("ReadInputBufferThread - WaitContext = 0x%p, WaitArgument1 = 0x%p, WaitArgument2 = 0x%p, WaitFlags = %lu\n", WaitContext, WaitArgument1, WaitArgument2, WaitFlags); - - /* - * If we are signaled by pressing Ctrl-C or Ctrl-Break, - * just ignore this event. - */ - if ( (Flag == 1 << CTRL_C_EVENT) || - (Flag == 1 << CTRL_BREAK_EVENT) ) - { - return FALSE; - } - - /* - * If we are called via CsrNotifyWaitBlock by a call to - * CsrDestroyProcess or CsrDestroyThread, just return. - */ - if (WaitFlags & CsrProcessTerminating) - { - Status = STATUS_THREAD_IS_TERMINATING; - goto Quit; - } - - /* - * If we are about to close an input handle, then just return. - */ - if (InputHandleClosing) - { - Status = STATUS_ALERTED; - goto Quit; - } - Status = ReadInputBuffer(InputInfo, GetConsoleInputRequest->bRead, WaitApiMessage, FALSE);
-Quit: if (Status != STATUS_PENDING) { WaitApiMessage->Status = Status; @@ -496,38 +450,10 @@ NTSTATUS Status; PGET_INPUT_INFO InputInfo = (PGET_INPUT_INFO)WaitContext;
- DWORD Flag = (DWORD)WaitArgument1; - BOOLEAN InputHandleClosing = (WaitArgument2 == (PVOID)0xdeaddead); - - DPRINT("ReadCharsThread - WaitContext = 0x%p, WaitArgument1 = 0x%p, WaitArgument2 = 0x%p, WaitFlags = %lu\n", WaitContext, WaitArgument1, WaitArgument2, WaitFlags); - - /* - * If we are called via CsrNotifyWaitBlock by a call to - * CsrDestroyProcess or CsrDestroyThread, just return. - */ - if (WaitFlags & CsrProcessTerminating) - { - Status = STATUS_THREAD_IS_TERMINATING; - goto Quit; - } - - /* - * If we are signaled by pressing Ctrl-C or Ctrl-Break, - * or that we close an input handle, then just return. - */ - if ( (Flag == 1 << CTRL_C_EVENT) || - (Flag == 1 << CTRL_BREAK_EVENT) || - (InputHandleClosing == TRUE) ) - { - Status = STATUS_ALERTED; - goto Quit; - } - Status = ReadChars(InputInfo, WaitApiMessage, FALSE);
-Quit: if (Status != STATUS_PENDING) { WaitApiMessage->Status = Status; @@ -553,7 +479,6 @@
/* We haven't read anything (yet) */
- // Cooked-like mode if (InputInfo->Console->Mode & ENABLE_LINE_INPUT) { if (InputInfo->Console->LineBuffer == NULL) @@ -638,7 +563,7 @@ WaitForMoreToRead = FALSE; } } - else // Raw-like mode + else { /* Character input */ while ( ReadConsoleRequest->NrCharactersRead < nNumberOfCharsToRead &&
Modified: branches/ros-csrss/win32ss/user/consrv/conio.h URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/consrv/co... ============================================================================== --- branches/ros-csrss/win32ss/user/consrv/conio.h [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/consrv/conio.h [iso-8859-1] Thu Jan 3 17:47:34 2013 @@ -29,17 +29,16 @@ typedef struct tagCSRSS_SCREEN_BUFFER { Object_t Header; /* Object header */ - LIST_ENTRY ListEntry; /* Entry in console's list of buffers */ - - BYTE *Buffer; /* Pointer to screen buffer */ - USHORT MaxX, MaxY; /* Size of the entire scrollback buffer */ - USHORT ShowX, ShowY; /* Beginning offset for the actual display area */ + BYTE *Buffer; /* pointer to screen buffer */ + USHORT MaxX, MaxY; /* size of the entire scrollback buffer */ + USHORT ShowX, ShowY; /* beginning offset for the actual display area */ ULONG CurrentX; /* Current X cursor position */ ULONG CurrentY; /* Current Y cursor position */ - WORD DefaultAttrib; /* Default char attribute */ - USHORT VirtualY; /* Top row of buffer being displayed, reported to callers */ + WORD DefaultAttrib; /* default char attribute */ + USHORT VirtualY; /* top row of buffer being displayed, reported to callers */ CONSOLE_CURSOR_INFO CursorInfo; USHORT Mode; + LIST_ENTRY ListEntry; /* entry in console's list of buffers */ } CSRSS_SCREEN_BUFFER, *PCSRSS_SCREEN_BUFFER;
typedef struct tagCSRSS_CONSOLE @@ -77,15 +76,6 @@ BYTE PauseFlags; HANDLE UnpauseEvent; LIST_ENTRY WriteWaitQueue; /* List head for the queue of write wait blocks */ - -#if 0 - /* Pointers to lists of wait blocks, when they contain satisfied waits to be freed */ - PLIST_ENTRY SatisfiedWaits; - - /* Pointers to lists of wait blocks, when they contain satisfied waits to be freed */ - PLIST_ENTRY ReadSatisfiedWaits; - PLIST_ENTRY WriteSatisfiedWaits; -#endif
WORD Mode; /* Console mode flags */ UNICODE_STRING Title; /* Title of console */
Modified: branches/ros-csrss/win32ss/user/consrv/conoutput.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/consrv/co... ============================================================================== --- branches/ros-csrss/win32ss/user/consrv/conoutput.c [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/consrv/conoutput.c [iso-8859-1] Thu Jan 3 17:47:34 2013 @@ -447,23 +447,10 @@ { NTSTATUS Status;
- DPRINT("WriteConsoleThread - WaitContext = 0x%p, WaitArgument1 = 0x%p, WaitArgument2 = 0x%p, WaitFlags = %lu\n", WaitContext, WaitArgument1, WaitArgument2, WaitFlags); - - /* - * If we are called via CsrNotifyWaitBlock by a call to - * CsrDestroyProcess or CsrDestroyThread, just return. - */ - if (WaitFlags & CsrProcessTerminating) - { - Status = STATUS_THREAD_IS_TERMINATING; - goto Quit; - } - Status = DoWriteConsole(WaitApiMessage, WaitThread, FALSE);
-Quit: if (Status != STATUS_PENDING) { WaitApiMessage->Status = Status;
Modified: branches/ros-csrss/win32ss/user/consrv/console.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/consrv/co... ============================================================================== --- branches/ros-csrss/win32ss/user/consrv/console.c [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/consrv/console.c [iso-8859-1] Thu Jan 3 17:47:34 2013 @@ -64,42 +64,6 @@
DPRINT("ConioConsoleCtrlEvent Parent ProcessId = %x\n", ProcessData->Process->ClientId.UniqueProcess);
- /* Notify all the waits only if we see Ctrl-C or Ctrl-Break */ - if (Event == CTRL_C_EVENT || Event == CTRL_BREAK_EVENT) - { - DWORD Flag = (1 << Event); // Transform an integer value to a power of 2. - NTSTATUS Status; - PCSRSS_CONSOLE Console; - // LIST_ENTRY WaitQueue; - - DPRINT1("ConioConsoleCtrlEvent - Ctrl-C captured\n"); - Status = ConioConsoleFromProcessData(ProcessData, &Console); - if (NT_SUCCESS(Status)) - { - DPRINT1("ConioConsoleCtrlEvent - console captured, try to dereference waits...\n"); - /* - * Wake-up all of the writing waiters, dereference them - * and purge them all from the list. - */ - if (CsrNotifyWait(&Console->ReadWaitQueue, - WaitAll, - (PVOID)Flag, - NULL)) - { - DPRINT1("ConioConsoleCtrlEvent - waits dereferenced...\n"); - // InitializeListHead(&WaitQueue); - - // CsrMoveSatisfiedWait(&WaitQueue, &Console->ReadWaitQueue); - if (!IsListEmpty(&Console->ReadWaitQueue /* &WaitQueue */)) - { - CsrDereferenceWait(&Console->ReadWaitQueue /* &WaitQueue */); - } - } - ConioUnlockConsole(Console); // NOTE_WAITS: <-- Here we have the possibility to free the console waits also. - } - } - - /* Notify the process of the control event */ if (ProcessData->CtrlDispatcher) { Thread = CreateRemoteThread(ProcessData->Process->ProcessHandle, NULL, 0, @@ -166,7 +130,6 @@ InitializeListHead(&Console->ProcessList); InitializeListHead(&Console->BufferList); Console->ActiveBuffer = NULL; - // Console->SatisfiedWaits = NULL; InitializeListHead(&Console->ReadWaitQueue); InitializeListHead(&Console->WriteWaitQueue); InitializeListHead(&Console->InputEvents); @@ -490,9 +453,6 @@
DPRINT("ConioDeleteConsole\n");
- /* TODO: Dereference all the waits in Console->ReadWaitQueue */ - /* TODO: Dereference all the waits in Console->WriteWaitQueue */ - /* Drain input event queue */ while (Console->InputEvents.Flink != &Console->InputEvents) { @@ -541,8 +501,6 @@ VOID FASTCALL ConioUnpause(PCSRSS_CONSOLE Console, UINT Flags) { - // LIST_ENTRY WaitQueue; - Console->PauseFlags &= ~Flags;
// if ((Console->PauseFlags & (PAUSED_FROM_KEYBOARD | PAUSED_FROM_SCROLLBAR | PAUSED_FROM_SELECTION)) == 0) @@ -552,23 +510,10 @@ CloseHandle(Console->UnpauseEvent); Console->UnpauseEvent = NULL;
- /* - * Wake-up all of the writing waiters, dereference them - * and purge them all from the list. - */ - if (CsrNotifyWait(&Console->WriteWaitQueue, - WaitAll, - NULL, - NULL)) - { - // InitializeListHead(&WaitQueue); - - // CsrMoveSatisfiedWait(&WaitQueue, &Console->WriteWaitQueue); - if (!IsListEmpty(&Console->WriteWaitQueue /* &WaitQueue */)) - { - CsrDereferenceWait(&Console->WriteWaitQueue /* &WaitQueue */); - } - } + CsrNotifyWait(&Console->WriteWaitQueue, + WaitAll, + NULL, + NULL); } }
Modified: branches/ros-csrss/win32ss/user/consrv/handle.c URL: http://svn.reactos.org/svn/reactos/branches/ros-csrss/win32ss/user/consrv/ha... ============================================================================== --- branches/ros-csrss/win32ss/user/consrv/handle.c [iso-8859-1] (original) +++ branches/ros-csrss/win32ss/user/consrv/handle.c [iso-8859-1] Thu Jan 3 17:47:34 2013 @@ -11,7 +11,7 @@ #include "consrv.h" #include "conio.h"
-#define NDEBUG +//#define NDEBUG #include <debug.h>
@@ -47,32 +47,10 @@ Win32CsrCloseHandleEntry(PCSRSS_HANDLE Entry) { Object_t *Object = Entry->Object; - if (Object != NULL) { PCSRSS_CONSOLE Console = Object->Console; EnterCriticalSection(&Console->Lock); - - if (Object->Type == CONIO_CONSOLE_MAGIC) - { - // LIST_ENTRY WaitQueue; - - /* - * Wake-up all of the writing waiters if any, dereference them - * and purge them all from the list. - */ - CsrNotifyWait(&Console->ReadWaitQueue, - WaitAll, - NULL, - (PVOID)0xdeaddead); - // InitializeListHead(&WaitQueue); - - // CsrMoveSatisfiedWait(&WaitQueue, &Console->ReadWaitQueue); - if (!IsListEmpty(&Console->ReadWaitQueue /* &WaitQueue */)) - { - CsrDereferenceWait(&Console->ReadWaitQueue /* &WaitQueue */); - } - }
/* If the last handle to a screen buffer is closed, delete it... */ if (AdjustHandleCounts(Entry, -1) == 0) @@ -165,6 +143,8 @@ RtlLeaveCriticalSection(&ProcessData->HandleTableLock); return STATUS_INVALID_HANDLE; } + + DPRINT1("Win32CsrReleaseObject - Process 0x%p, Release 0x%p\n", ProcessData->Process, &ProcessData->HandleTable[h]); Win32CsrCloseHandleEntry(&ProcessData->HandleTable[h]);
RtlLeaveCriticalSection(&ProcessData->HandleTableLock); @@ -209,23 +189,6 @@ Win32CsrUnlockConsole(PCSRSS_CONSOLE Console) { LeaveCriticalSection(&Console->Lock); - -#if 0 - /* If it was the last held lock for the owning thread... */ - if (&Console->Lock.RecursionCount == 0) - { - /* ...dereference waiting threads if any */ - LIST_ENTRY WaitQueue; - InitializeListHead(&WaitQueue); - - CsrMoveSatisfiedWait(&WaitQueue, Console->SatisfiedWaits); - Console->SatisfiedWaits = NULL; - if (!IsListEmpty(&WaitQueue)) - { - CsrDereferenceWait(&WaitQueue); - } - } -#endif
/* Decrement reference count */ if (_InterlockedDecrement(&Console->ReferenceCount) == 0)