CLIP STUDIO PAINT spams FIXMEs for these functions when starting up.
--
v2: msvcrt: Only print FIXME once for Context_Yield().
msvcrt: Remove FIXME for _StructuredTaskCollection_dtor().
msvcrt: Print less FIXMEs for ThreadScheduler_ScheduleTask*().
https://gitlab.winehq.org/wine/wine/-/merge_requests/6454
This series is motivated by performance requirements for GetExtendedTcpTable, especially the tables that require owner PIDs. In the worst case, the existing code scans all /proc/\<pid\>/fd directories for all Wine process for every socket, and may repeat the entire scan up to 5 times if the number of connections outgrew the buffer. With esync, processes can easily have hundreds of entries in /proc/\<pid\>/fd. And, in certain environments, reading the files under /proc can be very slow; I've seen GetExtendedTcpTable take almost 2 seconds to complete.
Some applications (GOG Galaxy, Steam) use the TCP table to check that incoming connections to local services are from a set of whitelisted processes. It's possible for the GetExtendedTcpTable to take longer than the timeout on the socket, which results in failed communication between the client and service.
wineserver knows about all sockets and what process they belong to. The only missing information needed for GetExtendedTcpTable is the state of TCP sockets, which is recoverable from getsockopt(TCP_INFO).
I've added a function in server/handle.c that enumerates all handles of a given type in all processes. The new server calls use that to find all sockets and return the needed information.
Apologies for commit 3 being large. I couldn't think of a way to split it without introducing dead code.
--
v2: iphlpapi/tests: Confirm that GetExtendedUdpTable associates a socket with the correct PID.
iphlpapi/tests: Confirm that GetExtendedTcpTable associates a socket with the correct PID.
nsiproxy: Remove now unused git_pid_map and find_owning_pid.
server, nsiproxy: Implement UDP table on top of a server call.
server, nsiproxy: Implement TCP table on top of a server call.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6399