Commit Graph

152 Commits

Author SHA1 Message Date
Chip Davis 289d456dd6 ntdll: Fix tick count calculation on Mac.
Inspired by a patch by Andrew Eikum.

macOS's mach_absolute_time() stops counting when the computer goes to
sleep/suspend/hibernate/etc. However, Windows's GetTickCount() does not
stop counting. mach_continuous_time() matches Windows's behavior.

BSD's CLOCK_MONOTONIC already counts asleep time.

Unfortunately, there is no clock source on Linux which does exactly what
we want. CLOCK_MONOTONIC_RAW is unaffected by NTP adjustment, but like
mach_absolute_time() doesn't keep ticking when the computer is asleep.
CLOCK_BOOTTIME does keep ticking, but it is affected by NTP adjustments.
CLOCK_MONOTONIC has both problems. What's needed is a
CLOCK_BOOTTIME_RAW, which would not be slewed by adjtimex(2) and would
count time spent asleep.

To avoid issues with skew and performance, this patch falls back to
mach_absolute_time() on macOS if mach_continuous_time() is unavailable.
Note that mach_continuous_time() was introduced in macOS 10.12, meaning
that if the minimum version required is less than that, it will be
linked weakly. Therefore we must check that it is nonnull before
attempting to call it.

Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-28 20:45:46 +01:00
Jacek Caban b2a546c92d server: Introduce kernel_object struct for generic association between server and kernel objects.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-26 13:55:15 +01:00
Alexandre Julliard ac7ae92af1 server: Allow specifying the security descriptor for a new process.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-20 14:50:48 +02:00
Alexandre Julliard af8f3ae333 server: Move initial thread creation out of the create_process() function.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-20 14:50:48 +02:00
Alexandre Julliard be40b01c37 server: Align object attributes to a DWORD-boundary.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-20 12:59:32 +02:00
Alexandre Julliard aec7befb51 server: Avoid potential size overflow for empty object attributes.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-18 20:19:11 +02:00
Ken Thomases 1984e86b44 server: On macOS, don't use clock_gettime() even if it's available.
The problem is building against the 10.12 or later SDK but deploying to 10.11
or earlier.  Support for clock_gettime() is new with 10.12 so configure finds
it and the code uses it, but the symbol is weak linked and resolves to NULL
when running on earlier versions.

Signed-off-by: Ken Thomases <ken@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-02 10:33:16 +02:00
Jacek Caban ad1e0609a0 server: Get rid of no loner used cancel_async from fd_ops.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-01 13:50:59 +01:00
Alexandre Julliard 438dae524d server: Avoid some compiler warnings when EWOULDBLOCK == EAGAIN.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-30 19:09:20 +09:00
Alexandre Julliard ff9d90bbb0 server: Use a standard object for object attribute roots instead of a directory.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-12 23:07:30 +09:00
Alexandre Julliard f55db7882d server: Add link_name and unlink_name object operations.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-04 21:07:19 +09:00
Alexandre Julliard 37503be654 server: Fix checks for a valid directory in object attributes.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-01 14:57:37 +09:00
Alexandre Julliard cd6e9c38e4 server: Fix constraints on the length of NT object names.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-19 20:48:08 +09:00
Alexandre Julliard c4843d4a45 server: Add a helper function to skip the object attributes structure.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-19 20:48:07 +09:00
Alexandre Julliard 4c763a41ee server: Allow the object attributes to be omitted in requests.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-16 00:05:57 +09:00
Alexandre Julliard 9504e2addf server: Add a helper function to validate and return object attributes.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-16 00:05:57 +09:00
Alexandre Julliard ea919d9de4 server: Use strerror instead of perror. 2013-05-07 12:19:22 +02:00
Alexandre Julliard 9fdf7bc771 server: Use socklen_t where appropriate. 2013-03-06 13:40:58 +01:00
Alexandre Julliard a74dc1a119 server: Use the monotonic time counter also on the server side. 2013-01-30 13:05:30 +01:00
Adrian Bunk 9d5c178b24 server: Use waitpid() instead of wait4(). 2012-09-24 22:27:30 +02:00
Alexandre Julliard 3acc2068a0 server: Cope with stdio file descriptors being closed on startup. 2011-11-15 11:39:42 +01:00
Alexandre Julliard 179715251d server: Make the fd passing code slightly more portable. 2010-09-30 11:53:07 +02:00
Alexandre Julliard 0d3d456bd0 server: Make object handles ints instead of pointers. 2008-12-08 16:04:20 +01:00
Alexandre Julliard 161160f05a server: Keep a file descriptor open to the config directory to make sure we don't write the registry in the wrong place. 2008-04-17 12:41:34 +02:00
Alexandre Julliard 2f1e73cb35 server: Wait for the expiration of all the process SIGKILL timers before exiting the server. 2008-01-07 17:19:05 +01:00
Alexandre Julliard af268c6211 server: Redesign the server shutdown processing.
System processes are now killed only after the server persistence
delay has expired. New processes are not allowed to start during
shutdown.
2008-01-03 11:40:03 +01:00
Alexandre Julliard 307cb09a62 server: Use exponential backoff when waiting for wineserver -k to complete. 2008-01-02 16:13:08 +01:00
Alexandre Julliard 8382eb01b2 server: Return correct object types in the get_directory_entry request. 2007-12-05 18:16:42 +01:00
Rob Shearman c1707d8938 server: Add get_sd and set_sd object operations to allow the security descriptor to be stored somewhere other than server memory, such as on disk. 2007-10-04 12:30:52 +02:00
Alexandre Julliard aaf477f292 server: Change the timeout handling to use NT-style 64-bit timeouts everywhere. 2007-04-17 20:08:59 +02:00
Alexandre Julliard 635714397f server: Add infrastructure for ioctl server request. 2007-04-16 14:45:03 +02:00
Alexandre Julliard 3f0575943e server: Don't bother with default entry points for objects that don't even return an fd. 2007-04-12 20:21:53 +02:00
Alexandre Julliard 7a9363a4d4 server: Rename the get_file_info function to get_fd_type and get rid of the flags. 2007-04-10 22:26:23 +02:00
Alexandre Julliard f85437c57f server: Store the opening options in the file descriptor instead of in the individual objects.
Allows moving the FD_FLAG_OVERLAPPED support to the generic
get_handle_fd request handling.
2007-04-10 22:25:07 +02:00
Alexandre Julliard 72bff2e445 server: Add support for restarting an async I/O when the client side couldn't finish it right away. 2007-04-10 17:07:27 +02:00
Alexandre Julliard 7e71c1ddee server: Add an open_file() function to the object operations. 2007-03-22 11:44:29 +01:00
Alexandre Julliard cd1c7fc056 server: Add hooks to support process tracing mechanisms other than ptrace. 2006-12-29 16:56:11 +01:00
Michael Stefaniuc 5cecceccb2 server: Remove redundant NULL check before free() (found by Smatch). 2006-10-10 12:56:16 +02:00
Alexandre Julliard 81977b773b server: Kill the process without SIGTERM when the fd socket is closed. 2006-09-21 11:14:45 +02:00
Alexandre Julliard 3a4c04dce4 server: Make sure to completely kill processes before returning from a wineserver -k. 2006-08-14 20:40:31 +02:00
Alexandre Julliard 753c8706f5 server: Only call gettimeofday once per poll loop. 2006-08-10 16:42:09 +02:00
Alexandre Julliard 5522446848 server: Don't crash on invalid request sizes. 2006-07-27 14:39:33 +02:00
Alexandre Julliard c627601c3b server: Convert the server start time to the abs_time_t type. 2006-07-26 14:50:55 +02:00
Alexandre Julliard 0f273c17ff server: Added data_size_t type to represent sizes in the server protocol.
Make it an unsigned int to save some space on Win64, if we need to
transfer more than 4Gb over the server pipe something is seriously
wrong.
2006-07-26 11:11:03 +02:00
Alexandre Julliard c316f0e47f server: Simplify process creation.
Pass the socket for the new process from the parent through the
environment.
Perform initialisations during the new_process request.
2006-07-19 14:00:10 +02:00
Alexandre Julliard 5558652ea3 server: Don't report a fatal protocol error for things that we can recover from. 2006-06-08 10:26:02 +02:00
Alexandre Julliard 202ef6901e server: Print process/thread id instead of pointer in protocol errors. 2006-06-07 14:20:38 +02:00
Alexandre Julliard 4ec9e110b0 server: Return an error for invalid requests instead of killing the client process. 2006-05-28 18:27:02 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Alexandre Julliard c5c599d478 server: Avoid crash on startup when the configuration dir doesn't exist. 2006-03-31 13:06:04 +02:00