Commit graph

50641 commits

Author SHA1 Message Date
Giannis Adamopoulos 42dde0a3ef [win32k]
- Remove an unused function

svn path=/trunk/; revision=55744
2012-02-20 10:47:13 +00:00
Cameron Gutman 94da11bec8 [NTOSKRNL]
- First check if a driver object exists before trying to load the service module to properly handle boot drivers

svn path=/trunk/; revision=55743
2012-02-20 10:24:14 +00:00
Cameron Gutman b175abf7c1 [USBEHCI]
- When releasing a low or full speed device, set the EHCI_PRT_RELEASEOWNERSHIP bit with the current port status so that any change bits are acknowledged
- Fixes detecting new devices after a companion controller handoff

svn path=/trunk/; revision=55742
2012-02-20 09:23:33 +00:00
Cameron Gutman 20008617a0 [USBOHCI]
- Finally fix the OHCI reset bug for real and remove hacks

svn path=/trunk/; revision=55741
2012-02-20 09:00:09 +00:00
Cameron Gutman cb23c43428 [USBOHCI]
- Set the power switching configuration into a known state when initializing the controller

svn path=/trunk/; revision=55740
2012-02-20 08:41:19 +00:00
Cameron Gutman 07f816a3f9 [USBOHCI]
- Queue a work item to handle an enable status change condition

svn path=/trunk/; revision=55739
2012-02-20 08:25:38 +00:00
Cameron Gutman bc411bd0a0 [USBOHCI]
- Don't clear extra change bits

svn path=/trunk/; revision=55738
2012-02-20 08:09:31 +00:00
Alex Ionescu e96c88b49b [NTOSKRNL]: Fix the zombie fix. Should fix toolhelp tests.
[NTOSKRNL]: If you're going to fake success when doing access checks, also grant the rights that would normally be refused, for consistency's sake. Should fix a bunch of the kernel32:synch tests (which have nothing to do with synch...).

svn path=/trunk/; revision=55737
2012-02-20 07:30:26 +00:00
Alex Ionescu 0e6938d173 [NDK]: Fix completely messed up SYSTEM_PROCESS_INFORMATION and SYSTEM_THREAD_INFORMATION classes, which were causing the kernel to return totally wrong data for NtQuerySystemInformation(SystemProcessInformation). Fixes Winetests, I assume Taskmgr, and other similar system tools.
svn path=/trunk/; revision=55736
2012-02-20 06:45:02 +00:00
Alex Ionescu 0e2219f054 [NTOSKRNL]: MOV CRX, YYY and MOV YYY, CRX, as well as the DR equivalents were not correctly detected as privileged instructions in the GPF handler. Fixes Winetests.
[NTOSKRNL]: The "Write" bit in the x86 Error Code is not bit 1, it is bit 2. Fix all the GPF handlers to check for bit 2 instead when determining if an exception was due to read or write. Fixes Winetests.
I'll say it nicely this time for Timo: when you rewrite ASM, do it carefully :)

svn path=/trunk/; revision=55735
2012-02-20 06:43:54 +00:00
Alex Ionescu 1e172203a6 [NTOSKRNL]: Implement ProcessDebugObjectHandle and a bunch more query/set process classes. Fixes Winetests.
[NTOSKRNL]: We should not be setting *ReturnLength in most failure cases, so no longer do so. Fixes Winetests.

svn path=/trunk/; revision=55734
2012-02-20 06:42:02 +00:00
Alex Ionescu 62930b0461 [RTL]: Force RtlIpToString APIs to behave inexplicably like on Windows, returning -1 instead of crashing when sprintfing to a NULL pointer.
svn path=/trunk/; revision=55733
2012-02-20 06:37:13 +00:00
Alex Ionescu d3418a128b [KERNEL32]: Add support for NO_DEBUG_INHERIT in CreateProcess. Fixes a winetest.
svn path=/trunk/; revision=55732
2012-02-20 06:36:17 +00:00
Alex Ionescu 4e027af35c [NTOSKRNL]: NtQuerySystemInformation(SystemProcessInformation) should skip zombie processes, and it should use the KTHREAD ThreadListEntry, not the ETHREAD ThreadListEntry. Fixes winetest since Idle Threads are int he former, not the latter (verified and Windows does this too).
svn path=/trunk/; revision=55731
2012-02-20 06:35:05 +00:00
Sir Richard 8fa73c4dc6 [NTDLL_WINETEST]: Skip an obviously nonsensical test of trying to sprintf into NULL.
svn path=/trunk/; revision=55730
2012-02-20 01:13:50 +00:00
Alex Ionescu 19a5d85926 [NTDLL/RTL]: Implement RtlGet/SetThreadErrorMode.
[NTDLL/RTL]: Fix RtlIpv4AddressToStringA and RtlIpv4AddressToStringW to work like in Windows (and crash with a NULL buffer).

svn path=/trunk/; revision=55729
2012-02-20 01:13:31 +00:00
Alex Ionescu 9d05ce3297 [NTOSKRNL]: Fix ntdll:om winetest. When querying for filenames if the caller did not specify a buffer large enough (which they normally don't, initially), we would just fail but not tell them how large to request it (so they'd get back an uninitailized huge value).
svn path=/trunk/; revision=55728
2012-02-20 00:11:24 +00:00
Giannis Adamopoulos b65af38817 [user32_apitest]
- Test the initial desktop and window station of processes

svn path=/trunk/; revision=55727
2012-02-19 23:46:06 +00:00
Giannis Adamopoulos 97e75d9ef2 [win32k]
- remove assertions from the process callout checking that ppiCurrent->rpdeskStartup and ppiCurrent->hdeskStartup are valid. This can happen in case we fail to open the initial desktop or window station

svn path=/trunk/; revision=55726
2012-02-19 23:29:28 +00:00
Cameron Gutman 69d0df4728 [USBEHCI]
- Try to fix reset bugs in my code and remove hacks
- Don't clear extra bits when acknowledging a port connect status change
[USBOHCI]
- Code cleanup
- No functional change

svn path=/trunk/; revision=55725
2012-02-19 22:22:45 +00:00
Giannis Adamopoulos 850d4b4ddf [ntoskrnl]
- Fix a crash in KiSystemCall that was caused because PsConvertToGuiThread may have switched to a large kernel stack, but still returned with failure because win32k did not succeed. To fix it reload the trap frame after the call before checking for success.

svn path=/trunk/; revision=55724
2012-02-19 22:05:25 +00:00
Alex Ionescu d46e167a87 sigh.
svn path=/trunk/; revision=55723
2012-02-19 20:23:56 +00:00
Alex Ionescu ca2598c831 [CSRSRV]: Some misc cleanup of dead code. No functional change.
svn path=/trunk/; revision=55722
2012-02-19 20:16:36 +00:00
Alex Ionescu 79ef1a1380 [CSRSRV]: Heh, fix a bug, which I think caused the crash in CSRSS during other process' crashes.
svn path=/trunk/; revision=55721
2012-02-19 20:13:07 +00:00
Alex Ionescu 0e457a22c3 [CSRSRV/KERNEL32]: Close the last big architectural known issue: we were not notifying CSRSRV of server threads within server-to-server situations. Port and fix CsrCreateRemoteThread from CSRSRV2, and call it from Kernel32 now when running inside the server itself. Also fix BaseProcessStart not to exit the whole process during an exception.
At this point, other issues are unknown regressions.

svn path=/trunk/; revision=55720
2012-02-19 20:09:49 +00:00
Alex Ionescu 339ee42bae [NTOSKRNL]: The ExitTime in ETHREAD is unionized and only valid if the thread actually exited, so don't always return the raw value -- return 0 if the thread is still alive. Fixes code which uses ExitTime != 0 to tell if a thread is still alive or not -- everyone always thought all ReactOS threads are always dead.
svn path=/trunk/; revision=55719
2012-02-19 20:08:11 +00:00
Alex Ionescu 682a93c9f9 [CSRSRV]: Sometimes too much of a hybrid is no longer a good thing. Rewrite the CSRSRV API loop to match (almost -- except the actual API conversion which is different in ReactOS) the CSRSRV2 loop, with the correct handling of datagrams, errors, exceptions, death messages, etc...
[CSRSRV]: Add special handling for certain messages (similar to how "Reply" is used in CSRSRV2) so that we don't keep replying to the wrong thead. For example, during an ExitProcess, special handling is needed at the end of the loop.
[CSRSRV]: Remove the last few remaining legacy process management function and use the correct CsrLock/Unlock APIs instead. No longer leak references for every process like crazy. Fully manage proc/thread/session reference counts now.
At this point it looks like there might just be one issue left before this thing works right (minus potential regressions due to missed hacks).

svn path=/trunk/; revision=55718
2012-02-19 19:40:28 +00:00
Alex Ionescu 0181638af5 [KERNEL32/CSRSRV]: Handle ExitProcess CSRSS message and implement CsrDestroyProcess to do so. Also implement CsrDestroyThread for future purposes.
svn path=/trunk/; revision=55717
2012-02-19 18:46:05 +00:00
Alex Ionescu 860a4e8855 [CSRSRV]: Don't bail out incorrectly if we get a LPC_EXCEPTION. Also DPRINT1 when we get one.
svn path=/trunk/; revision=55716
2012-02-19 18:23:31 +00:00
Alex Ionescu bb061c1598 [CSRSRV]: Implement support for exception messages now that these get sent.
svn path=/trunk/; revision=55715
2012-02-19 18:05:49 +00:00
Johannes Anderwald 607a047392 [USBCCGP]
- Remove assert hit during install of hid devices

svn path=/trunk/; revision=55714
2012-02-19 15:43:18 +00:00
Alex Ionescu 2a5d344d96 [CSRSRV/KERNEL32]: Do the Windows thing and send a unified LPC message when a new process is created, which includes the thread information as well, instead of sending two LPC messages per process. Perf++.
[CSRSRV/kERNEL32]: Switch to using the Windows CSRSS message structure for a new process, minus the bInheritHandles field which we still support for ReactOS compatibility.
[CSRSRV]: Port CsrCreateProcess from CSRSRV2, rewrite CsrSrvCreateProcess to use this API, and add required ReactOS compatibility hacks. A lot of stuff is still not supported, but the minimum (ie: previous ReactOS functionality) has been maintained during the transition. Processes are now tracked correctly, but there are still refcount leaks (known, to be fixed later).
Will let this breathe for a bit now to catch regressions. Work can now continue back on the kernel32 side while that happens.

svn path=/trunk/; revision=55711
2012-02-19 11:39:07 +00:00
Alex Ionescu 83ad639dc9 [CSRSRV]: It seems safe to now enable the #if0'ed out functionality of CsrCreateThread, as all thread/processes are tracked properly now.
svn path=/trunk/; revision=55710
2012-02-19 11:34:45 +00:00
Stefan Ginsberg b2cabd4df9 [NTOSKRNL]
- Fix KiEnterV86Mode's check for TRAP_DEBUG to #if instead of #ifdef, it is either defined to 1 or 0, like DBG.

svn path=/trunk/; revision=55709
2012-02-19 10:38:38 +00:00
Alex Ionescu 7991c9c192 [CSRSRV]: Let's see if touching the CSR header file kills CSRSRV again. Re-enable the #if'0ed code that merely added a few fields to the create process structure. I think we no longer have weird fucked up dependencies on exact structure byte sizes. I hope.
svn path=/trunk/; revision=55708
2012-02-19 10:19:16 +00:00
Alex Ionescu 8306172b6a [CSRSRV]: Properly implement CsrSrvCreateThread now that the worker thread issue is fixed. CSR_THREAD's are now created for everyone, and CSRSS succesfully duplicates their thread handle! Also, while connections from unknown threads are still allowed (in case I missed something), we do warn on the console about these guys now.
svn path=/trunk/; revision=55707
2012-02-19 10:12:14 +00:00
Alex Ionescu 07ea12ee5b [RTL/NTDLL/KERNEL32]: Rtl provides worker queue and timer queue functionality, which queues a worker thread associated with a caller-supplied callback. In Windows, Rtl by default calls RtlCreateUserThread, but as soon as kernel32 loads, it's DllMain calls an exported function RtlSetThreadPoolStartFunc which changes that default to a special Base function that calls CreateRemoteThread instead. The net result is that Win32 processes using the Rtl functionality get their threads properly registered with CSRSS. In ReactOS, this did not happen, so when those threads called into CSRSS, CSRSS had no CSR_THREAD structure/state for them, which is why CsrCreateThread (and the API loop) are so badly hacked. This commit implements RtlSetThreadPoolStartFunc, implements the kernel32 base functions which wrap CreateRemoteThread, and implements the rtl functions which wrap RtlCreateUserThread. Services, Setup, and any ReactOS application using RPC now have the worker threads correctly registered.
svn path=/trunk/; revision=55706
2012-02-19 10:06:31 +00:00
Alex Ionescu 55e9cddf05 [CSRSRV]: Take a refernece to the client thread since we are dereffing it...
svn path=/trunk/; revision=55705
2012-02-19 10:00:47 +00:00
Alex Ionescu f34ec165f6 [CSRSRV]: Port CsrLockedReferenceThread from CSRSRV2.
svn path=/trunk/; revision=55704
2012-02-19 09:57:00 +00:00
Alex Ionescu 131b6d2ea6 [CSRSRV2]: Bugfix, don't dereference the thread instead of referencing it!
svn path=/trunk/; revision=55703
2012-02-19 09:54:41 +00:00
Johannes Anderwald 83e2f62323 [USBSTOR]
- Fix bugs introduced in rev 55695

svn path=/trunk/; revision=55702
2012-02-19 09:45:54 +00:00
Thomas Faber f9a5be185d [NTOSKRNL]
- Make Trap debugging usable again. Suggested by Stefan.

svn path=/trunk/; revision=55701
2012-02-19 08:38:09 +00:00
Alex Ionescu 59ac9cae89 [CSRSRV]: Fix scenario when a new thread is being created from within CSRSRV and it could not register itself due to the new server-to-server support. Fixes CTRL-C and using the "X" button in a console window to close it, which had regressed since the server-to-server commit.
svn path=/trunk/; revision=55700
2012-02-19 07:22:37 +00:00
Alex Ionescu 7d4a765fe0 [CSRSRV]: I confused ShutdownCallback with DisconnectCallback. What win32csr needs is actually the later. Fixed that. Also removed CallProcessDeleted since we already call the Disconnectcallback from CsrRemoveProcess, which we do call in CSRSRV. Enabled the code that was disabled.
svn path=/trunk/; revision=55699
2012-02-19 06:44:09 +00:00
Alex Ionescu 002ef4e66b [CSRSRV]: Switch to the CSRSRV2 model of having a dynamic amount of threads handling CSRSS requests depending on how many are deadlocked, instead of creating a thread for every single client. CSRSRV now has about 2 API threads instead of 16.
svn path=/trunk/; revision=55698
2012-02-19 06:32:17 +00:00
Alex Ionescu 86597860d2 [CSRSRV]: No longer accept connections from unknown processes.
svn path=/trunk/; revision=55697
2012-02-19 04:18:33 +00:00
Alex Ionescu e403a8e2e1 [CSRSRV/WIN32CSR]: Remove all the code that was setting new values for DataLength/TotalLength in the LPC header. I have no idea why the code was doing this. I suspect it's partly to blame for why changing the structures of the CSRSS messages caused bizarre failures. Perhaps this behavior was needed with the original winsock-based LPC implementation that I rewrote back in 2006?
svn path=/trunk/; revision=55696
2012-02-19 03:51:36 +00:00
Johannes Anderwald 53bd8f1e21 [USBSTOR]
- Queue inquriry & format capacity command with an irp

svn path=/trunk/; revision=55695
2012-02-19 02:47:35 +00:00
Alex Ionescu fa51806949 Missed these guys.
svn path=/trunk/; revision=55694
2012-02-19 02:25:31 +00:00
Alex Ionescu d68458a259 [NTOSKRNL]: Implement ThreadBreakOnTermination for the SET case.
Cleanup some dbgprints.

svn path=/trunk/; revision=55693
2012-02-19 02:24:52 +00:00