- Signal readable when read is closed and writeable when write is closed
- This seems counterintuitive on the surface but signaling the socket in this way ensures that pending reads and writes are cancelled if either side shuts down send/receive
- Graceful close (recv() returns 0 bytes and FD_CLOSE is signaled when we receive a FIN) works much better
svn path=/trunk/; revision=52504
- Implement support for timing out disconnects
- Add debug prints for oskittcp errors
[MSAFD]
- Set a disconnect timeout value that actually makes sense (1 second vs 100 nanoseconds)
svn path=/trunk/; revision=52503
- Fix binding to an unspecified port on a connect so that it works reliably by asking the TCP library for a free port instead of assuming that one we have is free
- Fix binding to an unspecified port on a listen which previously would result in the address file not having information stored about the port number assigned
- Fix a nasty bug which resulted in us binding to an arbitrary port during a connect even when the client wanted a specific port
- Revert the hack that partially fixed this before
svn path=/trunk/; revision=52501
- Really fix loading the MSVC built kernel, by moving the FAT sector buffer beyond the area for freeldr.sys
- Load segment only in one place
svn path=/trunk/; revision=52500
- Set SO_REUSEPORT on new sockets to allow binding to ports shared by sockets which are closed according to upper layers of tcpip but still pending a close in oskittcp (see the BSD try-10-times hack)
- Fill all members of the sockaddr_in struct when fulfilling a query accept request
svn path=/trunk/; revision=52498
Add some code that does ... nothing, but fixes 2nd stage boot with msvc. To figure out why this is needed, is left as an excercise to the reader :)
svn path=/trunk/; revision=52496
- Fix several bugs related to the FD_WRITE event
- We would not set the sendable poll state if the socket had data waiting to be sent even if there was buffer space
- We did not set the poll state after performing a send
- We did not clear the sendable poll state if we ran out of buffer space
svn path=/trunk/; revision=52492
Remove the old boot method.
Its not needed anymore, since booting with more than 4GB works fine with the new method now. It didn't work anyway since the neccessary code in the kernel has been #if'ed out in r49445
svn path=/trunk/; revision=52491
Revert r52482, it didn't really work. Instead grab the StallScaleFactor from the PCR and use this as a base for the repeat count.
svn path=/trunk/; revision=52487
Use KeStallExecutionProcessor, once its ready (after KdDebuggerInitialize1 was called) for the receive timeout. Repeat 100 times with 1 ms wait. This seems to work quite well, but might be tuned for better values.
svn path=/trunk/; revision=52482
On amd64 builds, where we don't have underscored symbols, create an alias fabs for the function _fabs, since we cannot create fabs as a label directly
svn path=/trunk/; revision=52481
change the way import libs are created for MSVC. Since we don't use underscores in symbols on other architectures than x86, its not possible to create labels like "div", since it conflicts with the opcode. Therefore add a prefix and redirect all exports to the prefixed version when building an importlib
svn path=/trunk/; revision=52476
- unify spec2def and add_importlib_target, thanks to cmake_parse_arguments.
- also generate stub files only when necessary.
- better precompiled header support, commented out as it wasn't tested on any other machine than mine, and it depends on cmake features which don't exist yet.
For now only for gcc toolchain
svn path=/trunk/; revision=52460
- Fix Zw-systemcall stubs on MSVC
- Fix systemcall return stubs on MSVC
-> MSVC kernel boots and usetup works!
Didn't test anymore, because there is a massive atapi debug spam
svn path=/trunk/; revision=52457
- Don't try to load referenced dlls in any other dir than system32. A second attempt would fail on the first dll that was already loaded and the function would bail out before any missing dll could be loaded. This worked only by chance on gcc builds, because the 1st import was bootvid, which was always loaded in the 2nd attempt from system32, and the function failed after that, since hal and kdcom were already loaded.
svn path=/trunk/; revision=52452