- Move the mouse driver to DOS since it's our 32bit version of mouse.com, in some sense,
- Temporarily disable the mouse user callbacks because currently they went called in a parallel thread than the CPU one, that caused CPU corruption,
- In the same way we currently trigger IRQ1 interrupts, we do the same for IRQ12,
- Make the console input pump more modular (and mouse presence detection code is WIP),
- Put keyboard code into a dedicated file (as done for the mouse),
- Adapt the existing PS/2 emulation code to support two PS/2 ports controlled by 1 controller. Please note that some documentations precise that the response byte (answer to a PS/2 controller command) is written directly to the PS/2 output port.
svn path=/trunk/; revision=64168
- Code formatting and precise an info in a comment,
- Remove an unneeded commented call, and
- Mention that INT 15h functions C1h and C2h need to be implemented for PS/2 support.
svn path=/trunk/; revision=64167
- As pid and tid 0 have a special meaning in GDB, use off-by-one thread and process ID when communicating with it
- Properly read registers and memory from foreign thread and processes. (This time it was tested and proved to work reliably. __writecr3 ftw!)
- Loop the list of processes and threads when trying to find them from ID, as PsLookupProessByThreadId and friends can't be used since we can be at any IRQL.
- Add a few more debug prints to help diagnosing problems.
CORE-8531
svn path=/trunk/; revision=64166
- Read MaxSize and Retention from the Registry when a new log file is created.
- Use ntdll file functions instead of their kernel32 counterparts.
svn path=/trunk/; revision=64159
- Don't use svn:eol-style = native for PCI ids but then have the code expect CRLF. Should fix all devices being "Unknown device" on Unix builds.
svn path=/trunk/; revision=64158
- Fix an embarassing works-for-me but uncommited cast.
- Add support for reading registers and memory from foreign threads. Highly experimental and nearly untested, use at your own risk.
svn path=/trunk/; revision=64156
- Addendum to r64151
Complain on IRC, then complain on ros-dev, then steal fixes from your peers, then do as if nothing happened.
svn path=/trunk/; revision=64155
- Always pass down the result of gdb_receive_packet up to KD, so that it knows when a breakin packet was received. (CTRL-C) now works!
- Generalize the use of the Send <-> ManipulateState callbacks for a better code reading.
- Get the exception context as soon as it is thrown (instead of playing with the PRCB)
- Improve the way we attach to GDB: on the first KD call, we set KdContext->ControlCPending so that KD throws an exception. That way we can first initialize our KD stuff, and then quietly attach to GDB
- Implement the 'p' (get one register) GDB request.
GDB is now much more reliable.
svn path=/trunk/; revision=64154
- Fix a typo in KsecQueryFileInformation
- Implement missing ioctls in KsecDeviceControl
- Support METHOD_OUT_DIRECT for IRP_MJ_DEVICE_CONTROL
- Add stubs for KsecEn/DecryptMemory
[ADVAPI32]
- Use ksecdd to handle SystemFunction040 (RtlEncryptMemory) and SystemFunction041 (RtlDecryptMemory) (they still do nothing, but at least they do it in kenrnel mode now ;-))
svn path=/trunk/; revision=64153
* Work around what looks like a bug in GCC's handling of #pragma redefine_extname. Its behavior regarding additional underscore prefixes depends on the order of pragma and symbol declaration with GCC, while it's consistent with Clang. Brought to you by Thomas Faber, reviewed by Timo Kreuzer.
CORE-8516
svn path=/trunk/; revision=64148
- It can happen that GDB issues something else than qsThreadInfo after qfThreadInfo
- Properly clean up the callbacks after handling a custom Send/ManipulateState loop
svn path=/trunk/; revision=64146
- For function 0Ah, we don't still support defining hardware cursor.
- Implement function 0Ch (define interrupt subroutine params), compatible MSMOUSE v1.0+
- Implement function 14h (exchange interrupt subroutines), compatible MSMOUSE v3.0+
- Implement function 18h (set alternate mouse user handler), that is the same thing as function 0Ch but for a set of maximum 3 handlers, compatible MSMOUSE v6.0+
- Implement function 19h (return user alternate interrupt vector) that returns the handler associated with a call mask, compatible MSMOUSE v6.0+
- Call all those handlers accordingly to their associated call mask, for mouse moves and mouse button presses.
svn path=/trunk/; revision=64138
- Add DPRINTs to the DumpMemory function.
- Use a VgaSetActiveScreenBuffer function to change active screen buffers: it calls the SetConsoleActiveScreenBuffer API but also recreates the VDM console menus, because on windows custom console menus are per-screen-buffer, and not per-console, so that if you set menus when one screen buffer is activated, and if you change it, then your menus become unuseful because for this new active screenbuffer, they are not set. It's completely ridiculous but we need to live with that (on ReactOS we still don't have this behaviour).
svn path=/trunk/; revision=64137
Mark lowest pages of P0BootStackData and KiDoubleFaultStackData as read-only to prevent unnoticed stack-overflow. CORE-4380 #resolve
svn path=/trunk/; revision=64130
- Use 0x00800000 as base address. This doesn't change anything (still loaded at 0x80800000) and it produces debug symbols that GDB can understand
[CMAKE]
- Get back to using DWARF2 symbols. They are a lot bigger, but at least they work
Now GDB can be used to source-level debug ntoskrnl.
svn path=/trunk/; revision=64128
- Add a callback mechanism permitting to "simulate" KD send <-> receive loop without having to actually communicate to GDB
- Use that to update the program counter when cont'ing a breakpoint
Now cont'ing an assertion failure is possible, since we actually get beyond the int 3 instruction
svn path=/trunk/; revision=64127
- introduce KDGDB, a KDCOM-like DLL, wrapping the KD protocol and the GDB remote protocol together.
It is not fully functional, but for now it permits source-level debugging in some modules. More will be added as I feel the need and find the time to work a bit more on it. (That is, unless an angel comes and resume the work)
To use it, set GDB and _WINKD_ to TRUE in your CMakeCache.txt. Using separate debug symbols is also a good idea.
svn path=/trunk/; revision=64121