]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kperf/pet.h
xnu-6153.61.1.tar.gz
[apple/xnu.git] / osfmk / kperf / pet.h
index 9ffa736b53a299e3e6ea169061bb4083bb5f843c..8f9d542798d6e59cf2d501e528799f4982ac0dc4 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 2011 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
- * 
+ *
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * unlawful or unlicensed copies of an Apple operating system, or to
  * circumvent, violate, or enable the circumvention or violation of, any
  * terms of an Apple operating system software license agreement.
- * 
+ *
  * Please obtain a copy of the License at
  * http://www.opensource.apple.com/apsl/ and read it before using this file.
- * 
+ *
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  * Please see the License for the specific language governing rights and
  * limitations under the License.
- * 
+ *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 
+#include <kern/thread.h>
+
+#define KPERF_PET_DEFAULT_IDLE_RATE (15)
+
+extern boolean_t kperf_lightweight_pet_active;
+extern uint32_t kperf_pet_gen;
+
+/* prepare PET to be able to fire action with given ID, or disable PET */
+void kperf_pet_config(unsigned int action_id);
+
+/* fire off a PET sample, both before and after on-core samples */
+void kperf_pet_fire_before(void);
+void kperf_pet_fire_after(void);
 
-/* create the pet thread */
-extern int kperf_pet_init(void);
+/* notify PET of new threads switching on */
+void kperf_pet_on_cpu(thread_t thread, thread_continue_t continuation,
+    uintptr_t *starting_frame);
 
-/* Kick the pet thread so it runs a sample of all threads */
-extern void kperf_pet_thread_go(void);
+/* get/set rate at which idle threads are sampled by PET */
+int kperf_get_pet_idle_rate(void);
+int kperf_set_pet_idle_rate(int val);
 
-/* ensure the pet thread has stopped sampling */
-extern void kperf_pet_thread_wait(void);
+/* get/set whether lightweight PET is enabled */
+int kperf_get_lightweight_pet(void);
+int kperf_set_lightweight_pet(int val);
 
-/* tell pet the timer parameters */
-extern void kperf_pet_timer_config( unsigned timerid, unsigned actionid );
+void kperf_lightweight_pet_active_update(void);