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/c…
==============================================================================
--- 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/c…
==============================================================================
--- 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/c…
==============================================================================
--- 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/c…
==============================================================================
--- 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/h…
==============================================================================
--- 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)