- Context switching doesn't really work -- but we've been lucky since we're stuck on a priority 31 thread.
- Instead of worrying about this later when the system will be fully operational, this forces us to expose these bugs, and to make sure everything works.
- This will stress our context switching, waiting, unwaiting and scheduling code on ARM but once it all works well, after 5 seconds we'll be back on track.
svn path=/trunk/; revision=34487
- Exit the trap after a prefetch abort. DbgPrint fully works now, and we're back where we started -- RamdiskCreateDiskDevice.
svn path=/trunk/; revision=34486
- No, we don't sanitize anything right now. There's no user-mode at this point, so it doesn't matter. If you think we should sanitize right now, you need to get out and get laid.
- So this brings us back to KiPrefetchAbortHandler's while (TRUE).
- We have to make sure the funky PC modifications are going to work well, and after that, we can exit the trap.
svn path=/trunk/; revision=34483
- We now get to the point where we call KiDebugRoutine, which is registered as KdpEnterDebuggerException.
- KdpEnterDebuggerException reads our exception record and understands this is a BREAKPOINT_PRINT.
- It then calls the KdpServiceDispatcher.
- This, in turn, calls KdpPrintString.
- Which in turn loops the "debug providers" and calls KdpSerialPrintString.
- Which calls into KDCOM.
- And we see this on the debug log: (ntoskrnl/kd/kdio.c:191) .
- Epic Win. Need to implement KeContextToTrapFrame now.
svn path=/trunk/; revision=34482
- We aren't really sure where the hell we are since we can't printf anything otherwise we'll trap again and end up in an infinite loop.
- So we're debugging with while (TRUE).
svn path=/trunk/; revision=34481
- We pretty much try to duplicate what happens on x86, and build an exception record with the right information.
- We are seeing the debug string in R1 and its length in R2, so we're on the right track.
- We call KiDispatchException now, which isn't yet implemented.
- Yup, all this work just to see a damn debug string the "*proper* NT way". Thanks, asshole.
svn path=/trunk/; revision=34480
- Just like on x86, this routine generates a breakpoint -- on ARM this is done with BKPT followed by an index.
- We use the BREAKPOINT_PRINT index just like on x86.
- This generates a prefetch abort -- so now we implement the prefetch abort handler. Thanks to the trap macros, this was 10 lines of code.
- This calls into the real C handler, which is now unimplemented and hangs the whole system, so we've regressed way back (on purpose).
svn path=/trunk/; revision=34474
modified dll/win32/kernel32/kernel32.def
Stubbed out GetLocaleInfoEx
modified include/psdk/winnls.h
Added some Vista and later NLS defines to the SDK
modified dll/nls/idndl/idndl.rbuild
Correctly set a NULL entry point for idndl.dll
modified dll/nls/idndl_redist/idndl_redist.rbuild
modified dll/nls/normaliz_redist/normaliz_redist.rbuild
Give unique names to the redistributable versions of idndl.dll and normaliz.dll
Everything else
Scattered NLS modules in the appropriate locations, as per standard source tree layout
svn path=/trunk/; revision=34463
- inf-files with multi language support are strongly recommended to be in utf-16 encoding (with byte order mark)
- at the moment only inf-files for second stage setup can contain translations (due to limitations of inflib)
- some of the inf files for hardware installation (/media/inf) are converted to utf-16 and contain a basic German translation in the [Strings.0407] section
- for more details read /reactos/branches/matthias-i18n/media/inf/README
- TODO: for other/further languages add other translations in new string sections
svn path=/trunk/; revision=34461
- Stub out ARM version.
- Eventually the arm_kprintf hack will go away and true serial debugging output will be done through kdcom just like on x86.
- Fix formatting of bootvid.rbuild.
svn path=/trunk/; revision=34456
- Implement RamdiskDeviceControl which only supports FSCTL_CREATE_RAM_DISK for now (the kernel's attempt to create the RAM disk).
- Need to implement RamdiskCreateDiskDevice.
svn path=/trunk/; revision=34453
- Implement IRP_MN_QUERY_RESOURCES/RESOURCE_REQUIREMENTS for FDOs and PDOs (immediately complete the IRP and exit).
- We now get to RamdiskDeviceControl -- the kernel is attempting to create the ramdisk.
svn path=/trunk/; revision=34452
- Add support for IRP_MN_SURPRISE_REMOVAL.
- Handle IRP_MN_QUERY_ID for FDO (it is the first IRP we receive).
- Handle IRP completion for FDOs and forward if necessary.
svn path=/trunk/; revision=34451
- Fix uninitialized pointer in DriverEntry.
- Add hack for ReactOS plug and play manager bug.
- Fix broken assert.
- Now in RamdiskPnp.
svn path=/trunk/; revision=34449
- Because of some ridiculously stupid design in LD, it seems if it cannot find a given entrypoint, it SILENTLY ASSUMES you meant "Hi LD, please use my base address as my entrypoint".
- As such, all our drivers were linked with the start address as the base address... for the RAMDisk driver, this ended up being RamdiskAddDevice.
- When we started implementing RamdiskAddDevice, noticed that DriverEntry wasn't actually getting called. Adding debug prints changed which function was called.
- Wasted a week, thanks LD.
svn path=/trunk/; revision=34444
It adds support for DefaultChar, UsedDefaultChar and the flag WC_NO_BEST_FIT_CHARS.
WC_COMPOSITECHECK is also supported by the Wine implementation, but I don't have an idea how to port it to ReactOS, as we don't seem to have composition tables. I left FIXME's for this flag in the appropriate blocks, this is why some of the code might look badly structured/unoptimized at the moment.
As we completely rely on the NLS tables for the conversion now, this commit might trigger some bugs there. I already found out that the CP950 table doesn't map Unicode 0 back to MultiByte 0 (but 254), using Windows' c_950.nls it works correctly. Other tables could be buggy as well, c_1252.nls worked flawlessy for me though.
- Added comments to the CPTABLEINFO structure based on documentation from http://www.ping.uio.no/~ovehk/nls/
svn path=/trunk/; revision=34426