Commit Graph

7395 Commits

Author SHA1 Message Date
Aleksey Bragin
212d5ee24e - Revert the oskit locking rewrite in trunk, it's better to test/debug it in the branch first. Reverted revisions numbers: 44268, 44267, 44266, 44250, 44199, 44166-163, 44021, 44010, 43926, 43922, 43883.
svn path=/trunk/; revision=44301
2009-11-28 14:45:21 +00:00
Cameron Gutman
3384debaf5 - Initialize SocketError to 0 to prevent a bogus error from GCC
svn path=/trunk/; revision=44286
2009-11-25 18:08:43 +00:00
Cameron Gutman
e016a230af - Fix a race condition that occurs when an IRP gets cancelled after it is inserted into the completion queue but before it is completed
svn path=/trunk/; revision=44267
2009-11-22 02:32:47 +00:00
Cameron Gutman
83bc88465f - Remove memtrack and use tags instead (ExAllocatePoolWithTag/ExFreePoolWithTag)
- Cleanup DriverEntry
 - Remove DEFINE_TAG
 - Remove checkpoints in TiCreateFileObject

svn path=/trunk/; revision=44266
2009-11-21 23:53:43 +00:00
Cameron Gutman
c71cdeb49d - Disassociate the socket context before closing so we don't get signalled with a freed context (major cause of crashes)
- Signal the connection directly from TCPSocketState
 - Remove some unused code
 - Queue completion requests on a separate list so we don't have to keep locking and unlocking while completing
 - Add better locking to tcpip (not the lib)
 - Remove some unused variables
 - Don't hold the cancel spin lock longer than necessary
 - Check that we successfully got the device description

svn path=/trunk/; revision=44250
2009-11-21 13:00:37 +00:00
Cameron Gutman
a2350b62d8 - Implement OskitTCPGetSocketError which retreives so->so_error
- Use OskitTCPGetSocketError to get the actual socket error which occurred when get SEL_FIN
 - Add more cases to TCPTranslateError

svn path=/trunk/; revision=44199
2009-11-16 07:39:52 +00:00
Cameron Gutman
f0680faa1a - Fix build (try 3)
- I have no idea how this built for me

svn path=/trunk/; revision=44166
2009-11-14 19:03:37 +00:00
Cameron Gutman
f3d4211e56 - Use a spin lock to protect OSKit instead of a recursive mutex
- Remove the now unused recursive mutex code
 - Don't clear the SS_ISCONNECTING flag when soconnect returns EINPROGRESS because it causes a crash during soreceive
 - Lock CONNECTION_ENDPOINT and ADDRESS_FILE structs better
 - Remove incorrect IoMarkIrpPending calls
 - Remove useless ASSERT_LOCKED
 - Don't destroy so_connection when we close a connection
 - Remove useless FileFindConnectionByContext
 - Remove SignalledConnectionsList and SignalledConnectionsLock and simply loop through ConnectionEndpointList for signalled connections
 - Add connections to ConnectionEndpointList in TCPAllocateConnectionEndpoint instead of FileOpenConnection so we don't miss listeners
 - Remove connections from ConnectionEndpointList in TCPFreeConnectionEndpoint instead of FileCloseConnection so we don't miss listeners
 - Use ExInterlockedRemoveHeadList to remove entries in the address file's request lists
 - Remove useless members, flags, and variables in titypes.h and tcp.h
 - Fixes bug 4955 and 4434

svn path=/trunk/; revision=44163
2009-11-14 18:38:02 +00:00
Johannes Anderwald
955b60c3ad - Silence
svn path=/trunk/; revision=44135
2009-11-13 15:00:33 +00:00
Johannes Anderwald
ccc63ddced [PSDK]
- Fix MIXEROPENDESC struct(x64 compability issue)
[MMEBUDDY]
- Fix usage of MIXEROPENDESC
[WDMAUD.DRV]
- Implement a listening thread which waits for volume level / mute control changes

svn path=/trunk/; revision=44133
2009-11-13 14:22:11 +00:00
KJK::Hyperion
18d9f647bc modified lib/3rdparty/mingw/mingw.rbuild
oldnames is not an import library and dlltool --add-underscore is not an appropriate way to build it. Delete it for now

modified   base/applications/network/ftp/ftp.rbuild
modified   base/applications/winhlp32/winhlp32.rbuild
modified   base/services/dhcp/dhcp.rbuild
modified   dll/win32/crypt32/crypt32.rbuild
modified   dll/win32/mshtml/mshtml.rbuild
modified   dll/win32/setupapi/setupapi.rbuild
modified   dll/win32/wininet/wininet.rbuild
modified   lib/3rdparty/libxml2/libxml2.rbuild
   Workarounds for the removal of oldnames

modified   dll/directx/d3d8/d3d8.rbuild
   Use a file that actually exists

modified   dll/win32/crtdll/crtdll.rbuild
modified   dll/win32/msvcrt/msvcrt.rbuild
   "mangledsymbols" never did anything: remove it

modified   dll/win32/msvcrt/msvcrt.def
modified   lib/sdk/crt/crt.rbuild
   We don't actually implement j0/j1/jn/y0/y1/yn: _j0 calls __imp__j0, which is an alias for __imp___j0, which redirects back to _j0 in a perfect loop. Remove them for the time being

modified   lib/3rdparty/bzip2/bzip2.rbuild
   This was actually called unbzip2.dll. Who knew

svn path=/trunk/; revision=44090
2009-11-11 03:21:16 +00:00
Cameron Gutman
024d413ccb - Stop using the TCPLock to protect all entries into the IP lib
- Instead use TCPLock only to protect entries into oskittcp

svn path=/trunk/; revision=44021
2009-11-07 20:41:57 +00:00
Cameron Gutman
290a30a5cb - Remove TCPSleep and TCPWakeup (we make all oskittcp sockets non-blocking)
- Crash ROS better in oskittcp_die

svn path=/trunk/; revision=44010
2009-11-07 18:12:58 +00:00
Cameron Gutman
99fec75b6f - Rework our oskittcp signalling
- SignalledConnectionsList is now only used for connections that have pending requests
 - Remove another unused member from CONNECTION_ENDPOINT

svn path=/trunk/; revision=43926
2009-11-02 21:28:25 +00:00
Cameron Gutman
97d6fbe737 - Fix some confusion between SignalState and State which resulted in queued IRPs being lost on socket closure
- Call HandleSignalledConnection directly because the connection may not be in the signalled connections list
 - Remove State from CONNECTION_ENDPOINT to prevent this from happening again

svn path=/trunk/; revision=43922
2009-11-02 20:26:29 +00:00
Stefan Ginsberg
f84d5a02f4 - Fix support for /CRASHDEBUG and /NODEBUG; we didn't respect those settings properly and would initialize KD at boot even if they were set.
- Re-enable the breakpoint in vDbgPrintExWithPrefixInternal() as this works properly now. Without this breakpoint some break-in requests got lost if the break-in occurred when handling a debug print (happened a lot at boot).
- Implement Command String support for DbgCommandString() -- we now handle every debug service call.
- Implement NtSetDebugFilterState() and NtQueryDebugFilterState() for KD, meaning we now support debug filters properly.
- Implement KdRefreshDebuggerNotPresent(), KdChangeOption() and KdPowerTransition(). Stub KdSystemDebugControl() to return error status instead of hanging the system.
- Stub the rest of the KD API to print a warning and return a failure packet instead of hanging.
- Set and respect KdpContextSent when getting and setting the thread context -- WinDbg doesn't seem to rely on this, but better safe than sorry.
- Support MP when getting and setting the thread context too -- if the context is operation is for another processor than the current, just get it through the KiProcessorBlock array.
- Initialize the MajorVersion in the KD version block more properly -- the high byte is the major identifier (0 for NT). Add the required DBGKD_MAJOR_TYPES enumeration to wdbgexts.h.
- Simplify setting and clearing the InDbgPrint flag in the TEB to minimize the impact on kernel execution; use 2 dedicated routines instead of a generic one.
- KdpSymbol doesn't return anything, so don't return an ignore status from KdpReportLoadSymbolsStateChange.
- Expose the KdpDefaultRetries and Kd_WIN2000_Mask variables to the registry and add them to KDBG too (unused there).
- No reason to implement KdpSysGetVersion per architecture; move it back to the generic code.
- Add some ARM offsets to the debugger data block that (N/A on other architectures).
- Fix the default size of the DbgPrint log buffer for free builds to save some space. It should be 4 KB for a free build and 32 KB for a checked build.
- Move KeDisableInterrupts to cpu.c as it fits here more than in the IRQ support code in irqobj.c.
- Use KeDisableInterrupts in KeFreezeExecution instead of checking the x86 EFLAG directly.

svn path=/trunk/; revision=43912
2009-11-02 17:45:51 +00:00
Andrew Hill
5a9218f54f [atlnew]
- RosBE doesn't support __ImageBase, so use GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS) instead.
- Implement CAtlBaseModule constructor.
[browseui]
- Since RosBE built DLLs don't run global constructors, use placement new to construct them in DllMain. This is a *HACK* and a better solution should be found.
- Change DllMain be be extern C so it actually gets used.

svn path=/trunk/; revision=43890
2009-10-31 23:40:09 +00:00
Cameron Gutman
e0cc495270 - Don't disconnect the same socket multiple times (once per TDI_SEND IRP cancelled, once per TDI_RECEIVE IRP cancelled, once per TDI_SEND IRP on a closing socket, and once per TDI_RECEIVE IRP on a closing socket)
- Implement support for graceful socket closure
 - Fix some memory leaks

svn path=/trunk/; revision=43883
2009-10-31 18:46:08 +00:00
Cameron Gutman
fcec7e501b - Implement OskitTCPDisconnect
svn path=/trunk/; revision=43881
2009-10-31 18:15:23 +00:00
Cameron Gutman
05e33d82e8 - Fix translation for OSK_EAGAIN/OSK_EWOULDBLOCK
- Don't clear other socket state flags when enabling non-blocking mode
 - Remove some incorrect code that plays tricks on oskittcp

svn path=/trunk/; revision=43877
2009-10-31 15:53:19 +00:00
Andrew Hill
8266299b0e [browseui, shell32, explorer_new, include]
- Convert browseui to C++/ATL. As part of this, classes in browseui and now registered with .rgs files.
- Add AddressBand, AddressEditBox, BandProxy, BaseBar, BaseBarSite, BrandBand, InternetToolbar, ShellBrowser, ToolsBand, and TravelLog.
- Add stub implementations of commonbrowser, globalfoldersettings, and regtreeoptions.
- Clean up some msvc compile problems in a few files.
- Reorganize some headers to make them better match the Platform SDK.
- Move InlineIsEqualGUID to guiddef.h.
- Create new header files shlguid_undoc.h, shlobj_undoc.h, and shlwapi_undoc.h to hold undocumented types, functions, and GUIDs.
- Move some undocumented definitions declared in explorer_new/todo.h and undoc.h to new headers.
- Rename a few interfaces in explorer_new to the correct name
- Add definition of RBSTR_CHANGERECT to commctrl.h
- IDeskBarClient inherits from IOleWindow, not IUnknown
- HMONITOR was declared in both dxsdk/axextend.idl and wine/wined3d.idl, but not in wtypes.idl where it belongs
- Added Init and Term to CComModule
- Thanks to encoded for solving the browseui linking problem!

svn path=/trunk/; revision=43872
2009-10-31 14:25:45 +00:00
Cameron Gutman
a51c149046 - Add more cases to TCPTranslateError
- Fix a header typo

svn path=/trunk/; revision=43867
2009-10-31 07:34:27 +00:00
Cameron Gutman
a06fc827da - Make sure the socket is still open before entering oskittcp
- Remove an unused parameter from OskitTCPBind
 - Return a status value from OskitTCPGetAddress
 - Add debug print for unhandled error codes

svn path=/trunk/; revision=43864
2009-10-31 01:05:31 +00:00
Cameron Gutman
43e17b4127 - Implement OskitTCPSetSockOpt and OskitTCPGetSockOpt (currently unused)
svn path=/trunk/; revision=43861
2009-10-31 00:24:38 +00:00
Cameron Gutman
f28d99cab1 - Remove some junk code which does nothing but crash
svn path=/trunk/; revision=43859
2009-10-30 23:39:13 +00:00
Johannes Anderwald
7590cdb16d - Silence debug garbage
svn path=/trunk/; revision=43826
2009-10-29 08:28:03 +00:00
Johannes Anderwald
b53f1051ec [WDMAUD.DRV][MMEBUDDY]
- Implement support for DRV_QUERYDEVICEINTERFACESIZE, DRV_QUERYDEVICEINTERFACE for recording / mixer / midi-in midi-out


svn path=/trunk/; revision=43799
2009-10-27 23:28:09 +00:00
Dmitry Gorbachev
145fbbd116 - Update address of Free Software Foundation.
- Update obsolete LGPL v2 to LGPL v2.1.

svn path=/trunk/; revision=43790
2009-10-27 10:34:16 +00:00
Johannes Anderwald
47b50e1e0b [WDMAUD.DRV][WDMAUD_KERNEL][MMEBUDDY]
- Implement support for DRV_QUERYDEVICEINTERFACESIZE, DRV_QUERYDEVICEINTERFACE
- Required for DSound support

svn path=/trunk/; revision=43788
2009-10-26 23:10:05 +00:00
Cameron Gutman
79e704337b - Update AFD's shared header
- Add entity type check for IF_MIB_STATS_ID
 - Sort out some confusion with TDI entities
 - Implement IOCTL_AFD_GET_CONTEXT_SIZE
 - Enable debug prints for unimplemented ioctls
 - Add kernel-mode support for setting TTL

svn path=/trunk/; revision=43767
2009-10-26 03:11:44 +00:00
Johannes Anderwald
85cbe2887b [WDMAUD.DRV]
- Set the audio pin to KSSTATE_RUN if it is wave-out pin
- Implement support for manually starting / stopping a pin, which is used for recording
[WINMM]
- Add a hack for handling requests with WAVE_MAPPER
[PORTCLS]
- Pass correct flags to KsProbeStreamIrp when the irp has not already been probed (DirectKs)
[WDMAUD]
- Set correct irp dispatch code
[SYSAUDIO]
- Remove a hack
[MMEBUDDY]
- Return no error for MXDM_INIT message
- Add support for completing multiple wave headers at once
- Use new functions to implement WIDM_START / WIDM_STOP
- ReactOS now "supports" wave in recording. Tested with Audacity / sndrec32 @ XP, WIP


svn path=/trunk/; revision=43765
2009-10-26 00:15:22 +00:00
Christoph von Wittich
b882f99c77 better stub for RtlQueryHeapInformation (taken from wine)
svn path=/trunk/; revision=43742
2009-10-25 16:20:00 +00:00
Stefan Ginsberg
eae6521fb2 - DBGKD_WAIT_STATE_CHANGE64 is used in KD protocol 5, not number 6 that we use. Protocol 6 uses the DBGKD_ANY_WAIT_STATE_CHANGE structure which is sized according to the largest control-report structure (AMD64_DBGKD_CONTROL_REPORT currently), and is larger than DBGKD_WAIT_STATE_CHANGE64 on x86. This worked because our DBGKD_WAIT_STATE_CHANGE32/64 structures contained incorrect DBGKD_CONTROL_REPORT (used) and CONTEXT (unused) members that sized up the wait-state structure to pass WinDbg's length verification! It actually becomes larger than DBGKD_ANY_WAIT_STATE_CHANGE, but WinDbg only seems bail out only if the structure is too small. Remove the incorrect members from the protocol 5 structures and change to DBGKD_ANY_WAIT_STATE_CHANGE everywhere.
- Correct the value of SIZE_OF_FX_REGISTERS -- it was 4 times too low which resulted in KeContextToTrapFrame not properly clearing out the XMM register area. Correct the define and move it out from ke.h to x86's ketypes.h and use it in the FXSAVE format structure. Also remove the IOPM definitions from ke.h as they have been in the NDK for a while.
- KD uses STRINGs, not ANSI_STRINGs -- they are the same thing, but let's be consistent.
- ExceptionRecord32To64 should be available for both 32 and 64 bit builds (and it shouldn't be a forceinline). Get rid of CopyExceptionRecord and determine if we need to convert or can just copy it directly instead.
- Use _WIN64 instead of _M_AMD64 when determining if we need to set the DBGKD_VERS_FLAG_PTR64 flag.
- Don't check Nt/DbgQueryDebugFilterState for zero or nonzero -- it actually returns TRUE, FALSE or STATUS_INVALID_PARAMETER_1! Check for != TRUE in preparation for proper implementation of NtSet/QueryDebugFilterState.
- Fix Format parameter of DbgPrintReturnControlC -- it is const like the other DbgPrint* routines.
- Be consistent with the types used in debug.c and don't set local variables to zero if we are going to return to caller -- this doesn't seem to be required anymore. 
- Fix DebugService and DebugService2: DebugService should take a ULONG followed by 4 pointers and DebugService2 doesn't return anything.
- Use ZwCurrentProcess() instead of -1 or 0xFFFFFFFF (which is incorrect for 64-bit) for the ProcessId parameter of DbgLoad/UnloadImageSymbols to clarify what is being passed. Don't use ZwCurrentProcess() in KeBugCheckWithTf for the pointer parameter of DbgUnLoadImageSymbols either. Use MAXULONG_PTR casted to PVOID instead.
- Use better named and sized variables in KdpTrap for setting the "return register" in the caller's CONTEXT.
- Correct and clarify the comment documenting under what conditions we pass user mode exceptions to the kernel debugger.

svn path=/trunk/; revision=43741
2009-10-25 15:56:38 +00:00
Stefan Ginsberg
10bbe664b7 - Replace RtlpGetExceptionAddress by the _ReturnAddress intrinsic and add it to ARM intrin.h as it was missing.
- Simplify RtlpCheckForActiveDebugger: Remove the BOOLEAN parameter as we would always pass it FALSE. Always return FALSE false from kernel mode for simplicity.
- Fix a critical flaw in our exception support: RtlRaiseException and RtlRaiseStatus were implemented in C on x86. This lead to unpredictable register corruption because the compiler could not know that it had to preserve non-volatile registers before calling RtlCaptureContext as the saved context is later used to restore the caller in case the exception is handled and execution is continued. This made the functions unsafe to return from as any non-volatile register could be corrupted. Implement them in assembly for x86 to safely capture the context using only EBP and ESP. The C versions of those routines are still used and shared for the other architectures we support -- needs to be determined if this is safe and correct for those architectures.
- The ntdll exception Wine exposed this issue, and all tests now pass. The remaining failures on the build server are caused by missing or incomplete debug register support in KVM/QEMU. Run the test in another VM or on real hardware and all the tests will pass.
- Implement Debug Prompt (DbgPrompt) support for KD and KDBG. The KDBG implementation reads the prompt from keyboard or serial depending on the mode so that sysreg and rosdbg can support it too.
- Properly implement RtlAssert using DbgPrompt to prompt for the action to take instead of always doing a breakpoint. The new implementation is disabled until sysreg can support this. Also move RtlAssert to its own file as it has nothing to do with the error routines (nor does it belong in exception.c).
- Note that DbgPrompt was already used in PspCatchCriticalBreak, and this would have resulted in a silent hang as BREAKPOINT_PROMPT wasn't handled at all by KDBG.
- Implement KiRaiseAssertion (10 lines of code with the trap macros) and thus support NT_ASSERT. Add partial support for it to KDBG to print out a warning and the address of the failure, but don't do anything else. Also add NT_ASSERT to the DDK headers so that we can use it, but don't use it yet as the ARM method of performing this has not been decided nor implemented.
- KiTrap3 doesn't set STATUS_SUCCESS but BREAKPOINT_BREAK. They have the same numerical value but very different meaning -- BREAKPOINT_BREAK means that the exception is a software breakpoint and not a debug service call. Fix some comments to document that this is what is checked for.
- Fix inverted and broken logic in KdpReport. It would never pass second chance exceptions to the debugger, didn't respect the stop-on-exception flag properly and would always fail to handle some special exceptions in both first and second chance instead of just failing to handle it in first chance. Clean up, reformat and document what is going on.
- The DebugPrint and DebugPrompt support routines only perform a 2D interrupt on x86; use more portable comments.
- Add Alex to the programmer section of x86's kdsup.c -- he wrote KdpGetStateChange, KdpSetContextState and the code that was previously in KdpRead/WriteControlSpace.
- Add my name to the parts of KD where I have made significant work on getting KD/WinDbg support up and running.
- KD debugging is now quite functional and stable. Some bugs and stubs remain to be flushed out, but overall KD is now much better and easier to use than KDBG.

svn path=/trunk/; revision=43705
2009-10-23 22:51:39 +00:00
Aleksey Bragin
1e7aa70379 [rtl]
- Fix incorrect leap year days checking condition, spotted by Gabriel Iliardi.
See issue #4917 for more details.

svn path=/trunk/; revision=43698
2009-10-23 13:19:36 +00:00
Cameron Gutman
0fba4d8f11 - Move the DstAddress check above the NCE modification code so we don't use ARP requests that aren't addressed to us
- Fixes bug 4879

svn path=/trunk/; revision=43692
2009-10-22 19:08:02 +00:00
Stefan Ginsberg
80078ade2b - Fix 43192 -- MAXUINT and MAXULONGLONG are only defined for Vista and later.
- Add some leftover MAXULONG.

svn path=/trunk/; revision=43691
2009-10-22 18:27:17 +00:00
Stefan Ginsberg
3a16c5a061 - Don't use KeBugCheck(0) -- 0 is an invalid bugcode. Use a proper bugcode, DbgBreakPoint or UNIMPLEMENTED instead depending on how the old call was used.
- Remove some unused and deprecated macros from the network stack that did this.
- fastfat_new: Use FAT_FILE_SYSTEM instead of magic 0x23.

svn path=/trunk/; revision=43673
2009-10-21 17:52:11 +00:00
Cameron Gutman
9eeae0e826 - Fix an issue that broke ARP replies because we compared the source address with our address instead of the destination address with our address
- What ended up happening was the router saved our gratuitous ARP hw address which allowed communication until it sent an ARP request which we would discard instead of replying to it, so the network connection would drop unexpectedly. "ipconfig /renew" was a temporary fix because it caused another gratuitous ARP packet to be sent and readded our hw address to the router's cache
 - This should be the last major issue with running in bridged mode

svn path=/trunk/; revision=43663
2009-10-21 02:16:03 +00:00
Dmitry Gorbachev
fd33db1896 Fix deprecated conversion from string constant to 'wchar_t*'
svn path=/trunk/; revision=43652
2009-10-20 16:37:51 +00:00
Aleksey Bragin
fbdbf9adb7 - Fix dgorbachev's copypasta.
svn path=/trunk/; revision=43649
2009-10-20 14:46:02 +00:00
Dmitry Gorbachev
d1fe1b42ec Fix build.
svn path=/trunk/; revision=43647
2009-10-20 14:33:31 +00:00
Andrew Hill
dc333c6ad4 [atlnew]
- Initial checkin of minimal atl library
- To prevent conflicts with wine atl dll, this library is named atlnew

svn path=/trunk/; revision=43645
2009-10-20 12:26:51 +00:00
Cameron Gutman
13c453792d - Fix a typo in checksum calculation for datagrams with an odd number of octets
- Allow packets with no checksum
 - Remove debug prints that got left behind

svn path=/trunk/; revision=43638
2009-10-20 06:07:34 +00:00
Cameron Gutman
31ba6d7556 - Implement UDP checksum calculation
- Fixes issues with DHCP (and any other UDP traffic) over bridged networking on vbox and issues with other hardware that doesn't like a checksum of 0
 - See bug #4754

svn path=/trunk/; revision=43637
2009-10-20 05:24:37 +00:00
Christoph von Wittich
82e600f4fe update libxml2 to version 2.7.6
svn path=/trunk/; revision=43624
2009-10-19 19:59:37 +00:00
Dmitry Gorbachev
112bc907de [3DTEXT, FREELDR, HAL, MINGW_COMMON, MMDRV, MSGINA, NTOSKRNL] Add extern.
svn path=/trunk/; revision=43572
2009-10-18 18:52:56 +00:00
Dmitry Gorbachev
9698fa5426 Remove a definition of a variable from a header file.
svn path=/trunk/; revision=43570
2009-10-18 18:52:12 +00:00
Johannes Anderwald
37a6c638aa - Partly revert 43533
svn path=/trunk/; revision=43553
2009-10-18 14:22:00 +00:00
Stefan Ginsberg
f38bd8e550 - Fix msvc build broken in 43466 -- please stop hurting msvc, it just wants to be loved (and wants __declspec placed first).
svn path=/trunk/; revision=43542
2009-10-17 20:01:58 +00:00