Commit graph

19 commits

Author SHA1 Message Date
Hermès Bélusca-Maïto 6d28ec8640 [CONSRV]
Fix input/output (read/write) waiter threads notifications. Now console is usable.
Go and test it! :D

svn path=/branches/ros-csrss/; revision=58225
2013-01-26 16:12:05 +00:00
Hermès Bélusca-Maïto 50a9e6a485 [CONSRV]
Rename functions to their new scheme: ConSrv* instead of Win32Csr* or Conio* (with some exceptions for the latter case).
No code changes.

svn path=/branches/ros-csrss/; revision=58213
2013-01-24 22:41:33 +00:00
Hermès Bélusca-Maïto fe7b0f74d3 [CONSRV]
- Start to implement waiting threads notifications. They can be notified by:
  * the required action (screen displaying lock/unlock, presence of new characters in the input buffer),
  * the fact that the application terminates,
  * we close a (input) handle.
  TODO: When we notify them by calling CsrNotifyWait, they are not dereferenced automatically, but they can be
  by calling a dedicated CSR function. We need to know where it is the best to dereference them.
- Correct a bug introduced in revision r58191, which broke console input mode changes (in SrvSetConsoleMode and SrvGetConsoleMode).

svn path=/branches/ros-csrss/; revision=58211
2013-01-24 20:48:42 +00:00
Hermès Bélusca-Maïto 85da7a06cd [CONSRV]
- Start to uniformize some helpers' names :
  ConioLockConsole --> ConioGetConsole and ConioUnlockConsole --> ConioReleaseConsole
  ConioLockInputBuffer --> ConioGetInputBuffer and ConioUnlockInputBuffer --> ConioReleaseInputBuffer
  ConioLockScreenBuffer --> ConioGetScreenBuffer and ConioUnlockScreenBuffer --> ConioReleaseScreenBuffer
  but the overall naming must be revamped.
- Add them a boolean parameter to determine whether or not we should lock the console. It is useful to not lock an already locked console when input / output waiting threads are called,
  because these are called from functions which lock the console.
- In the GUI console window message loop, after retrieving a pointer to the corresponding console, lock it before calling funtions in the message dispatcher (and unlock the console at the end).
- Use PostMessage instead of SendMessage for "sending" GUI messages to console windows, to avoid possible deadlocks (because of console locking).

- Add temporary /// LOCK /// comments to easily localize where I deactivated extra console (un)locking code (this remains to be analyzed further).

svn path=/branches/ros-csrss/; revision=58205
2013-01-22 23:28:51 +00:00
Hermès Bélusca-Maïto c01d4cbb85 [CONSRV]
- Get in a simpler way the console owned by a console window: replace GuiConsoleGetDataPointers by GuiGetWindowConsole.
- Only in functions which need it, we get the GUI data held by the console.

svn path=/branches/ros-csrss/; revision=58194
2013-01-19 22:06:28 +00:00
Hermès Bélusca-Maïto f2e3e7ac9d [CONSRV]
- Isolate the members of the CONSOLE structure which are used as input buffer data, in a new structure called ... CONSOLE_INPUT_BUFFER !
- Rename some helper functions to better match what they are doing.

svn path=/branches/ros-csrss/; revision=58191
2013-01-18 22:31:16 +00:00
Hermès Bélusca-Maïto 44782833a8 [CONSRV]
Introduce new helper functions Win32CsrInitHandlesTable and Win32CsrAllocateConsole and use them in many places (in ConsoleConnect, SrvAllocConsole and SrvAttachConsole).

svn path=/branches/ros-csrss/; revision=58184
2013-01-16 22:25:12 +00:00
Hermès Bélusca-Maïto bc73176945 [CONSRV]
HeapAlloc --> RtlAllocateHeap
HeapFree --> RtlFreeHeap
GetProcessHeap --> RtlGetProcessHeap

svn path=/branches/ros-csrss/; revision=58168
2013-01-13 19:18:54 +00:00
Hermès Bélusca-Maïto fc78a963d0 [CONSRV]
Renaming CSRSS_... structures into CONSOLE_...

svn path=/branches/ros-csrss/; revision=58120
2013-01-05 23:37:04 +00:00
Hermès Bélusca-Maïto 86fa2ba4e0 [KERNEL32-CONSRV]
Rename some structures (CSRSS_... ---> CONSOLE_...) and clarify what the ConsoleHandle members are for (--> OutputHandle or InputHandle).
No code changes otherwise.

svn path=/branches/ros-csrss/; revision=58119
2013-01-05 23:10:12 +00:00
Hermès Bélusca-Maïto 31776e274a [CONSRV]
Revert unwanted changes brought accidentally in r58104.

svn path=/branches/ros-csrss/; revision=58105
2013-01-03 17:47:34 +00:00
Hermès Bélusca-Maïto e4d97e422f [KERNEL32]
Silent more debug prints and remove an unused DPRINT1 I've introduced in r57666.

svn path=/branches/ros-csrss/; revision=58104
2013-01-03 17:42:27 +00:00
Hermès Bélusca-Maïto 0d59b8df65 [KERNEL32]
- Simplify IntGetConsoleInput and IntReadConsole.

[CONSRV]
- Implement event waiting for reading console input buffer with CSR wait blocks. This replaces the event-based waiting which, after being moved from client-side (kernel32) to server-side (see r57721), made all consoles hang when one of them was waiting for new input.

TODO: Dereference all the waits in Console->ReadWaitQueue.

svn path=/branches/ros-csrss/; revision=57817
2012-12-08 00:39:24 +00:00
Hermès Bélusca-Maïto 4b04f7d488 [KERNEL32]
Use new structures and api indices namings.

[CONSRV]
Use CsrValidateMessageBuffer instead of Win32CsrValidateBuffer.

svn path=/branches/ros-csrss/; revision=57729
2012-11-18 13:54:32 +00:00
Hermès Bélusca-Maïto 2006c3bf86 [KERNEL32/CONSRV]
- Move the waiting loop of IntReadConsole into SrvReadConsole instead.
- Merge IntPeekConsoleInput and IntReadConsoleInput helpers into a single IntGetConsoleInput helper function
  and make PeekConsoleInputW/A and ReadConsoleInputW/A use it.
  Indeed, the "only" difference between these two functions, is that the first one keeps the data read inside
  the console input buffer, but on the contrary the second removes the data and does not return until at least
  one input record has been read.
  In server-side, CsrReadInputEvent and CsrPeekConsoleInput are merged into SrvGetConsoleInput. Merge the corresponding
  structures.
- Use shorter variable names in IntReadConsoleOutput and use CONSOLE_PROCESS_DATA structure in SrvReadConsoleOutput.
- Merge IntReadConsoleOutputCharacter and ReadConsoleOutputAttribute functions into a single IntReadConsoleOutputCode
  helper function, and make ReadConsoleOutputAttribute and ReadConsoleOutputCharacterW/A use it.
  In server-side, CsrReadConsoleOutputChar and CsrReadConsoleOutputAttrib are merged into SrvReadConsoleOutputString.
  (Remark: the SrvReadConsoleOutputString name comes from http://j00ru.vexillium.org/csrss_list/api_list.html and I
  checked that it was indeed the server function that was called by both ReadConsoleOutputAttribute and ReadConsoleOutputCharacter).
  The idea behind merging these two functions is, that an attribute or a character are instances of the same entity, namely
  a "code" (what would be called an (ANSI) escape sequence). Therefore I encode them inside the same CSRSS_READ_CONSOLE_OUTPUT_CODE
  structure and I use it with the previous functions.

[CONSRV]
- Make use of the CONSOLE_PROCESS_DATA structure (introduced in r57685).
- Use CsrValidateMessageBuffer instead of Win32CsrValidateBuffer.
- Reorganize conmsg.h a little bit.

svn path=/branches/ros-csrss/; revision=57721
2012-11-17 21:39:41 +00:00
Hermès Bélusca-Maïto ecb660bb7d [CONSRV]
Code reorganization only, no code changes.

svn path=/branches/ros-csrss/; revision=57717
2012-11-17 15:41:31 +00:00
Hermès Bélusca-Maïto b507bd0612 [CSR/BASESRV/CONSRV/WINSRV]
- Fix code headers. No code changes.
- Rename csrcl.h to csr.h for readability purposes.
- exitros.c --> shutdown.c

svn path=/branches/ros-csrss/; revision=57618
2012-10-25 20:40:41 +00:00
Hermès Bélusca-Maïto 1827b99497 [CONSRV]
- Add consrv to compilation. It compiles now \o/
- Convert the used console-csrss structures to the new ones.

[CSR]
- Continue to move some structures, and temporary activate a symbol.

[WIN32CSR]
- Clean a header.

svn path=/branches/ros-csrss/; revision=57602
2012-10-23 22:31:36 +00:00
Hermès Bélusca-Maïto 608c1e0428 [CONSRV/WIN32CSR]
- Move all the console subsystem from win32csr to a new server dll called consrv.dll (instead of putting it directly to winsrv.dll). It's because I want to rework on this later on.
Many things must be done in order to achieve the moving (renaming functions, etc...). Tables & symbol names come from http://j00ru.vexillium.org/csrss_list/api_list.html as usual,
but here I took the Win 2k3 ones and I added few Win 7 functions which already existed in our codebase. The other table names are guessed based on what originally existed in csrsrv
and so on. Many stubs are also missing.
Cultural remark: consrv.dll originally existed in Beta releases of Windows NT 3.1 (e.g. the October 1991 one), but was soon merged with winsrv.dll and thus, in subsequent versions of
Windows, the console subsystem is also found in winsrv.dll. See http://www.logotypes.se/NT310CSRSS.txt and http://j00ru.vexillium.org/?p=349#comment-1883. One has to wait until
Windows 7 to see it moving again to conhost.exe.

[CSRSRV]
- Add an explanation comment on what the ValidTable member in the CSR_SERVER_DLL structure is for.

svn path=/branches/ros-csrss/; revision=57597
2012-10-22 23:55:51 +00:00
Renamed from win32ss/user/win32csr/coninput.c (Browse further)