X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/316670eb35587141e969394ae8537d66b9211e80..4ba76501152d51ccb5647018f3192c6096367d48:/osfmk/kperf/pet.h diff --git a/osfmk/kperf/pet.h b/osfmk/kperf/pet.h index 9ffa736b5..8f9d54279 100644 --- a/osfmk/kperf/pet.h +++ b/osfmk/kperf/pet.h @@ -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 @@ -11,10 +11,10 @@ * 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, @@ -22,19 +22,34 @@ * 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 + +#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);