Commit Graph

59 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
Nikolay Sivov f2e0a145ba kernel32: Use RegLoadMUIStringW() from kernelbase.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 13:38:52 +01:00
Alexandre Julliard ab6970d9b0 kernel32: Move Get/SetCalendarInfo to kernelbase.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-18 19:12:13 +01:00
Alexandre Julliard 14fbecee65 kernel32: Add set_ntstatus() helper.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 09:43:27 +02:00
Alexandre Julliard 2c68c530af kernel32: Move file time functions to kernelbase.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-26 19:36:10 +02:00
Huw Davies 13e11d3fcb kernel32: Move the implementation of GetTickCount() to kernel32.
Fixes regression caused by 3e927c4aec.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47265
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-30 21:53:27 +02:00
Akihiro Sagawa 4ef37887d6 kernel32: Add traces to time zone functions.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-24 21:55:54 +02:00
Huw Davies 71dc2514c3 kernel32: Forward GetSystemTimeAsFileTime() to NtQuerySystemTime().
This relies on FILETIME and LARGE_INTEGER having the same layout.

On an i7-8700 CPU @ 3.20GHz with HZ=1000 it cuts the call cost from
~18ns to ~12ns.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-15 19:23:48 +02:00
Huw Davies 3593f7da66 kernel32: Simplify TIME_CompTimeZoneID() by passing time as LONGLONG.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-15 19:23:42 +02:00
Huw Davies 9fbfcbe1bf kernel32: Replace macros with inline helpers.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-15 19:23:40 +02:00
Huw Davies 074b7d9d09 kernel32: Implement GetSystemTimePreciseAsFileTime() using RtlGetSystemTimePrecise().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:25:10 +02:00
Akihiro Sagawa 1b7f3698f0 advapi32: Support the base directory parameter in RegLoadMUIString.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-13 13:25:19 +02:00
Vijay Kiran Kamuju 9ed363a1fe kernel32: Add implementation for CAL_SMONTHDAY.
Signed-off-by: Vijay Kiran Kamuju <infyquest@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-23 23:50:45 +02:00
Vijay Kiran Kamuju ded7efd27c kernel32: Add implementation of CAL_SSHORTESTDAYNAME*.
Signed-off-by: Vijay Kiran Kamuju <infyquest@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-22 19:48:27 +02:00
Akihiro Sagawa 2ce076a502 kernel32: Use Rtl function when the time zone name is useless.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-17 22:35:22 +01:00
Akihiro Sagawa afad5636cb kernel32: Resolve an MUI time zone name.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-06 19:23:06 +01:00
Guillaume Charifi 94dda4690b kernel32: Add stub for GetDynamicTimeZoneInformationEffectiveYears().
Signed-off-by: Guillaume Charifi <guillaume.charifi@sfr.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 13:55:55 +02:00
Qian Hong 4c2cc57c7f kernel32: Init TimezoneInformation registry.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-18 10:21:33 +02:00
Austin English db5a57c5f2 kernel32: Add QueryProcessCycleTime stub.
Signed-off-by: Austin English <austinenglish@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-01 22:24:58 +01:00
Michael Stefaniuc 1b3cbf52b2 kernel32: Remove always true if conditions (coccinellery).
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-15 16:33:54 +01:00
Louis Lenders 6f04cf0caa kernel32: Silence a noisy fixme.
Signed-off-by: Louis Lenders <xerox.xerox2000x@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-31 22:30:37 +01:00
David Keijser 34a0c122cb kernel32: Forward CAL_RETURN_GENITIVE_NAMES to GetLocaleInfo().
Signed-off-by: David Keijser <keijser@gmail.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-07 00:34:24 +09:00
Nikolay Sivov 64a8aa520a kernel32: Map from CAL_* constants to LOCALE_*.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-01 11:38:51 +09:00
Vincent Povirk b922b55182 kernel32: Implement GetTimeZoneInformationForYear.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-03 00:00:32 +09:00
Andrey Gusev 5cdcd4493f Assorted spelling and typos fixes. 2015-08-18 15:00:13 +09:00
Erich E. Hoover 5e817e93de kernel32: Implement GetSystemTimes. 2015-06-11 15:58:34 +09:00
Martin Storsjo c9c5ceccb4 kernel32: Implement GetSystemTimePreciseAsFileTime.
This just falls back to doing the same as GetSystemTimeAsFileTime.
2015-05-20 17:28:37 +09:00
Nikolay Sivov 2c98d5b90c kernel32: Implement GetDynamicTimeZoneInformation(). 2015-05-11 15:39:24 +09:00
Austin English 88362a0770 kernel32: Add a stub for QueryThreadCycleTime. 2015-03-30 19:49:11 +09:00
Francois Gouget ecc04f6996 kernel32: Remove unneeded NONAMELESSXXX directives. 2015-03-13 00:28:19 +09:00
Akihiro Sagawa 80695cde4f kernel32: Return correct buffer size when returning DBCS characters. 2014-06-12 18:25:06 +02:00
Akihiro Sagawa 89a558fe8f kernel32: Avoid uninitialised value read in GetCalendarInfoA. 2014-06-12 18:24:41 +02:00
Nikolay Sivov b82b1306a4 kernel32: Added QueryUnbiasedInterruptTime(). 2014-04-02 15:50:09 +02:00
Nikolay Sivov 95142cad53 kernel32: Partial implementation for GetCalendarInfoEx(). 2014-03-03 17:02:14 +01:00
Frédéric Delanoy 7ab78b4e03 kernel32: Use BOOL type where appropriate. 2013-10-24 10:49:11 +02:00
Daniel Jelinski debd62cf9f kernel32: Improved stub for GetCalendarInfo's CAL_SCALNAME.
Based on patch by Mike Blumenkrantz.
2013-05-21 12:13:09 +02:00
Daniel Jelinski 81dc0fe87b kernel32: Implement CAL_ICALINTVALUE in GetCalendarInfo.
Based on patch by Mike Blumenkrantz.
2013-05-21 12:12:57 +02:00
Piotr Caban e5a25ec5c5 kernel32: Fixed TIME_CompTimeZoneID behavior on dates close to New Year's Eve. 2012-12-10 17:36:25 +01:00
Austin English 843390f9c9 kernel32: Add a stub for GetDynamicTimeZoneInformation. 2012-07-09 15:46:35 -04:00
Alexandre Julliard 81183c1e20 kernel32: Fix the handling of CAL_ITWODIGITYEARMAX in GetCalendarInfo. 2011-06-08 16:18:26 +02:00
Juan Lang 2ca58402e7 kernel32: Add some parameter checking to FileTimeToDosDateTime. 2011-03-09 12:28:41 +01:00
Juan Lang 6614323807 kernel32: Set time between interrupts in GetSystemTimeAdjustment. 2009-10-01 11:33:27 +02:00
Alexandre Julliard 4964374570 ntdll: The large integer functions are 32-bit only. 2009-08-24 15:17:33 +02:00
Dmitry Timoshkov 545b40adf7 kernel32: Make SystemTimeToTzSpecificLocalTime and TzSpecificLocalTimeToSystemTime prototypes match PSDK. 2009-05-04 12:53:32 +02:00
Christian Costa de90eccd1a kernel32: Add stub for GetSystemTimes. 2009-03-27 11:23:21 +01:00
Huw Davies d5f6d841c1 kernel32: GetCalendarInfo shouldn't return HRESULT codes. Change a MESSAGE to a FIXME. 2008-08-18 13:37:31 +02:00
Austin English cb2274e690 Spelling fixes. 2008-04-04 11:51:40 +02:00
Austin English d5de9977df kernel32: Spelling fixes. 2008-03-18 11:44:09 +01:00
Andrew Talbot 54a376f228 kernel32: Assign to structs instead of using memcpy. 2008-03-04 11:54:20 +01:00
Damjan Jovanovic f3c9a9b1b6 kernel32: Use sysconf instead of the obsolete CLK_TCK. 2007-09-11 11:49:14 +02:00