Commit Graph

149 Commits

Author SHA1 Message Date
Alexandre Julliard 78c772e9d8 ntdll: Use a syscall thunk for NtQueryPerformanceCounter().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-21 18:30:08 +02:00
Alexandre Julliard 40d403c926 ntdll: Use syscall thunks for system functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 00:04:13 +02:00
Alexandre Julliard 8a169390c9 ntdll: Build with msvcrt.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-30 12:25:08 +02:00
Alexandre Julliard b8dc6b2412 ntdll: Move RtlGetSystemTimePrecise() to the Unix library.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 23:08:30 +02:00
Alexandre Julliard 13c1f008c0 ntdll: Move the timezone detection code to the Unix library.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 23:08:30 +02:00
Alexandre Julliard 7161dcd426 ntdll: Return the current time and timezone bias in NtQuerySystemInformation(SystemTimeOfDayInformation).
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 23:08:30 +02:00
Alexandre Julliard a4ce2f652d ntdll: Move Nt system time functions to the Unix library.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-11 15:51:18 +02:00
Alexandre Julliard 9b12068c6c ntdll: Use the user shared data to implement RtlQueryUnbiasedInterruptTime().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-21 19:36:52 +02:00
Alexandre Julliard cc5953048e ntdll: Use the user shared data to implement NtGetTickCount().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-21 19:36:52 +02:00
Alexandre Julliard 4501ab0a7c ntdll: Use wcscmp() instead of strcmpW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-31 15:53:53 +02:00
Alexandre Julliard 18411a19b4 ntdll: Use wcscpy() instead of strcpyW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-31 15:53:53 +02:00
Alexandre Julliard eb1b2e5486 ntdll: Avoid using sprintfW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-30 23:10:06 +02:00
Paul Gofman 3f0cbf4691 ntdll: Zero init reg_tzi in find_reg_tz_info().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48694
Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-10 20:11:04 +01:00
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