]> git.saurik.com Git - apple/xnu.git/blobdiff - tools/tests/jitter/timer_jitter.c
xnu-3789.1.32.tar.gz
[apple/xnu.git] / tools / tests / jitter / timer_jitter.c
index abcfe87b8492f06bd65affe2b43fabba3300d171..7e0c9a0c121d8b3a9bbedf1132a9cb5201be0a36 100644 (file)
@@ -47,6 +47,8 @@
 #include <mach/task.h>
 #include <mach/semaphore.h>
 
 #include <mach/task.h>
 #include <mach/semaphore.h>
 
+#include <libproc_internal.h>
+
 typedef enum my_policy_type { MY_POLICY_REALTIME, MY_POLICY_TIMESHARE, MY_POLICY_FIXEDPRI } my_policy_type_t;
 
 #define DEFAULT_MAX_SLEEP_NS   2000000000ll /* Two seconds */
 typedef enum my_policy_type { MY_POLICY_REALTIME, MY_POLICY_TIMESHARE, MY_POLICY_FIXEDPRI } my_policy_type_t;
 
 #define DEFAULT_MAX_SLEEP_NS   2000000000ll /* Two seconds */
@@ -354,6 +356,18 @@ main(int argc, char **argv)
                exit(1);
        }
 
                exit(1);
        }
 
+       /*
+        * Disable the wake monitor.  If we are
+        * performing a large number of
+        * iterations, the wake monitor may
+        * cause this process to get suspended,
+        * thus causing a large jitter value.
+        */
+       if (proc_disable_wakemon(getpid()) != KERN_SUCCESS) {
+               printf("Couldn't disable wake monitor.\n");
+               /* For now, do not exit; this call could be locked down */
+       }
+
        /* 
         * Repeatedly pick a random timer length and 
         * try to sleep exactly that long 
        /* 
         * Repeatedly pick a random timer length and 
         * try to sleep exactly that long