Commit Graph

136 Commits

Author SHA1 Message Date
Alexandre Julliard 238c6be5b8 ntdll: Silence the timezone fixme when the registry is empty.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48300
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-17 19:39:14 +01:00
Alexandre Julliard 8b0a7b2503 ntdll: Fix RtlQueryUnbiasedInterruptTime() prototype.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48239
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-16 18:44:57 +01:00
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
Alexandre Julliard a311140f93 kernel32: Move QueryPerformanceCounter/Frequency functions to ntdll.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-09 16:25:55 +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
Huw Davies 3e927c4aec ntdll: Extend NtGetTickCount() to return 64-bits. Forward kernel32 functions to it.
Marking the function as DECLSPEC_HOTPATCH to avoid reopening
https://bugs.winehq.org/show_bug.cgi?id=36486 .  Even with -fno-PIC,
without DECLSPEC_HOTPATCH the generated code has a pushl at offset 7
that triggers the failure.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:54:23 +02:00
Huw Davies 6b47a72e4a ntdll: Mark monotonic_counter() as inline.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:54:23 +02:00
Huw Davies 5c8ea25014 ntdll: Use CLOCK_REALTIME_COARSE for NtQuerySystemTime() if it has sufficient resolution.
This will only affect users running with HZ=1000.  On an i7-8700 CPU @
3.20GHz it cuts the call cost from ~30ns to ~12ns.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:26:46 +02:00
Huw Davies aa4570fedd ntdll: Implement RtlGetSystemTimePrecise().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:24:45 +02:00
Alexandre Julliard 7c0385bdb4 ntdll: Check for time conversion error to silence a compiler warning.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 20:25:11 +02:00
Akihiro Sagawa 434bc1baf5 ntdll: Use an MUI time zone name if available.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-06 19:22:48 +01:00
Michael Stefaniuc 10f23ddb58 ntdll: Use the ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 10:15:59 +02:00
Akihiro Sagawa 35d93e02d1 ntdll: Return correct time zone names for Asia/Tokyo and Asia/Yakutsk.
Without this change, for Japan, Wine returns "Korea Standard Time",
not "Tokyo Standard Time" as seen in Bug 42719.

Actually, this is a regression by d666143f88.
The new code relies on offsets from UTC and DST change timings.  However,
Northeast Asia regions don't use daylight saving time.  Thus, Wine can't
distinguish between these regions.

Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-07 19:15:19 +01:00
Ken Thomases 27c71e09ad ntdll: 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:13 +02:00
Sebastian Lackner b60b50ba35 ntdll: Catch page faults in NtQueryPerformanceCounter.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-26 19:05:43 +01:00
Bruno Jesus eefc1c471c ntdll: Fake success if changing system date is a no-op.
Signed-off-by: Bruno Jesus <00cpxxx@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-25 17:16:32 +01:00
Sebastian Lackner 3977ebafc0 ntdll: Lookup DynamicDST based on current year, instead of year of daylight date.
When there are no further time changes, the function find_dst_change() will
return (year_end + 1). This patch ensures that we don't lookup the wrong
DynamicDST entry in such a case.
2015-08-04 09:45:28 +02:00
Nikolay Sivov 2c98d5b90c kernel32: Implement GetDynamicTimeZoneInformation(). 2015-05-11 15:39:24 +09:00
Michael Müller 7567db85be ntdll: Add support for Dynamic DST (daylight saving time) information in registry. 2015-04-28 15:37:54 +09:00
Francois Gouget ca1545cf17 ntdll: Remove unneeded NONAMELESSXXX directives. 2015-03-16 15:04:50 +09:00
André Hentschel 550f556dca ntdll: Remove unused macros. 2014-12-09 19:36:06 +01:00
Nikolay Sivov b82b1306a4 kernel32: Added QueryUnbiasedInterruptTime(). 2014-04-02 15:50:09 +02:00
Frédéric Delanoy 86fdca6750 ntdll: Use BOOL type where appropriate. 2013-10-30 09:45:20 +01:00
Alexandre Julliard 34a1426fc3 ntdll: Use the monotonic counter for NtGetTickCount. 2013-01-28 18:22:16 +01:00
Alexandre Julliard 04e14c7b46 ntdll: Add support for the monotonic time counter on Mac OS X. 2013-01-28 18:22:13 +01:00
Alexandre Julliard 25598513dc ntdll: Use a monotonic time counter to implement NtQueryPerformanceCounter. 2013-01-28 15:39:37 +01:00
Alexandre Julliard aacc450955 ntdll: Avoid using Low/HighPart of a large integer when not necessary. 2012-10-30 18:08:05 +01:00
Dmitry Timoshkov 0e44bda72a ntdll: Take into account timezone bias changes when detecting daylight saving rules. 2011-10-18 19:16:34 +02:00
Alexandre Julliard 4964374570 ntdll: The large integer functions are 32-bit only. 2009-08-24 15:17:33 +02:00
Andrew Talbot 5ecd33e2f9 ntdll: Assign to structs instead of using memcpy. 2008-03-10 11:23:30 +01:00
Rob Shearman 67cc0302f4 ntdll: Remove the overly-cautious check which prevented NtSetSystemTime from changing the time by more than two minutes.
Simplify the returning of different status codes by not playing around 
with the return value from settimeofday.
2007-09-10 16:13:53 +02:00
Dmitry Timoshkov a76ef05c90 ntdll: Do not leave not initialized cached timezone information if a timezone doesn't have daylight saving rules. 2007-08-29 14:08:20 +02:00
Dmitry Timoshkov d2d5bbe5d0 ntdll: Reimplement TIME_GetBias using new time zone code. 2007-08-22 12:18:59 +02:00
Dmitry Timoshkov d666143f88 ntdll: Detect current time zone settings. 2007-08-21 12:40:37 +02:00
Francois Gouget ebadbd4bd5 Assorted spelling fixes. 2007-08-09 14:13:07 +02:00
Lei Zhang 9ee4d8509b ntdll: Add Bolivian time zone info. 2007-07-30 15:27:09 +02:00
Dmitry Timoshkov 6119f4990d ntdll: Simplify TIME_GetBias. 2007-07-30 14:12:45 +02:00
Dmitry Timoshkov a188662ea8 ntdll: Add some traces to make debugging time zone related problems easier. 2007-07-30 14:12:12 +02:00
Konstantin Kondratyuk b7c38b0d75 ntdll: Add Samara time zone. 2007-07-25 13:02:09 +02:00
Julio E. Gonzalez P 5b98738c4d ntdll: Add PYT and PYST time zones. 2007-07-05 19:53:14 +02:00
Erez Volk 14a3275436 ntdll: Added IDT Timezone (Israel daylight savings time). 2007-05-16 11:55:47 +02:00
Alexey Markachev 160f1c350e ntdll: Fix mistake in Novosibirsk time zone. 2007-04-27 11:45:35 +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
Kai Blin 21e6beed5c ntdll: Don't use settimeofday() to attempt to set the timezone. 2007-04-12 16:08:59 +02:00
Gabriel Gambetta cc578af7b1 ntdll: Add Uruguayan Summer Time timezone. 2007-03-26 14:55:58 +02:00
Konstantin Kondratyuk 4f976741a4 ntdll: Add Omsk time zone. 2007-02-09 11:50:04 +01:00
Harry McNally ca2c987caf ntdll: Add Western Australia Summer Time. 2007-01-10 22:25:27 +01: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 3ca608b1b3 ntdll: Renamed the NTDLL_get/from_server_timeout functions since they don't deal only with timeouts. 2006-07-26 14:49:13 +02:00
Vijay Kiran Kamuju ee87f039e1 ntdll: Add UZT timezone info. 2006-06-26 13:06:26 +02:00