]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kperf/sample.h
xnu-7195.101.1.tar.gz
[apple/xnu.git] / osfmk / kperf / sample.h
index fb6df72d2261e2154ba0fc0b71d31aa9af7c545a..941ae53e8746f1e87d34e3deaa521dcd46947d9b 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 "threadinfo.h"
+#ifndef KPERF_SAMPLE_H
+#define KPERF_SAMPLE_H
+
+#include <kperf/thread_samplers.h>
+#include <kperf/task_samplers.h>
 #include "callstack.h"
 #include "kperf_kpc.h"
 #include "meminfo.h"
 
-#ifndef __KPERF_SAMPLE_H__
-#define __KPERF_SAMPLE_H__
+/*
+ * For data that must be sampled in a fault-able context.
+ */
+struct kperf_usample {
+       struct kperf_thread_dispatch th_dispatch;
+       struct kp_ucallstack ucallstack;
+       struct kperf_thread_info th_info;
+};
+
+struct kperf_sample {
+       struct kperf_thread_info       th_info;
+       struct kperf_thread_scheduling th_scheduling;
+       struct kperf_thread_snapshot   th_snapshot;
 
-// what goes in a sample
-struct kperf_sample
-{
-       struct threadinfo threadinfo;
-       struct tinfo_ex   tinfo_ex;
-       struct callstack  kcallstack;
-       struct callstack  ucallstack;
-       struct meminfo    meminfo;
+       struct kperf_task_snapshot tk_snapshot;
+
+       struct kp_kcallstack kcallstack;
+       struct meminfo     meminfo;
+
+       struct kperf_usample usample;
 
 #if KPC
        struct kpcdata    kpcdata;
-#endif
+#endif /* KPC */
+
+#if DEVELOPMENT || DEBUG
+       uint64_t sample_time;
+#endif /* DEVELOPMENT || DEBUG */
 };
 
-// cache of thread on CPUs during the IPI
-extern thread_t *kperf_thread_on_cpus;
+/* cache of threads on each CPU during a timer fire */
+extern uint64_t *kperf_tid_on_cpus;
 
-#endif /* __KPERF_SAMPLE_H__ */
+#endif /* !defined(KPERF_SAMPLE_H) */