[PATCH] ntdll: Implement idle time query for Mac OS.

Chip Davis cdavis5x at gmail.com
Tue Apr 19 19:18:36 CDT 2022


From: Chip Davis <cdavis at codeweavers.com>

Signed-off-by: Chip Davis <cdavis5x at gmail.com>
---
 dlls/ntdll/unix/system.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c
index 56a31f5e4757..1b92649ba284 100644
--- a/dlls/ntdll/unix/system.c
+++ b/dlls/ntdll/unix/system.c
@@ -1911,6 +1911,22 @@ static void get_performance_info( SYSTEM_PERFORMANCE_INFORMATION *info )
                 info->IdleTime.QuadPart = (ULONGLONG)ptimes[CP_IDLE] * 10000000 / clockrate.stathz;
         }
     }
+#elif defined(__APPLE__)
+    {
+        host_name_port_t host = mach_host_self();
+        struct host_cpu_load_info load_info;
+        mach_msg_type_number_t count;
+
+        count = HOST_CPU_LOAD_INFO_COUNT;
+        if (host_statistics(host, HOST_CPU_LOAD_INFO, (host_info_t)&load_info, &count) == KERN_SUCCESS)
+        {
+            /* Believe it or not, based on my reading of XNU source, this is
+             * already in the units we want (100 ns).
+             */
+            info->IdleTime.QuadPart = load_info.cpu_ticks[CPU_STATE_IDLE];
+        }
+        mach_port_deallocate(mach_task_self(), host);
+    }
 #else
     {
         static ULONGLONG idle;
-- 
2.34.1




More information about the wine-devel mailing list