1*1031c584SApple OSS Distributions /* 2*1031c584SApple OSS Distributions * Copyright (c) 2017 Apple, Inc. All rights reserved. 3*1031c584SApple OSS Distributions * 4*1031c584SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5*1031c584SApple OSS Distributions * 6*1031c584SApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7*1031c584SApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8*1031c584SApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9*1031c584SApple OSS Distributions * compliance with the License. The rights granted to you under the License 10*1031c584SApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11*1031c584SApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12*1031c584SApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13*1031c584SApple OSS Distributions * terms of an Apple operating system software license agreement. 14*1031c584SApple OSS Distributions * 15*1031c584SApple OSS Distributions * Please obtain a copy of the License at 16*1031c584SApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17*1031c584SApple OSS Distributions * 18*1031c584SApple OSS Distributions * The Original Code and all software distributed under the License are 19*1031c584SApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20*1031c584SApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21*1031c584SApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22*1031c584SApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23*1031c584SApple OSS Distributions * Please see the License for the specific language governing rights and 24*1031c584SApple OSS Distributions * limitations under the License. 25*1031c584SApple OSS Distributions * 26*1031c584SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27*1031c584SApple OSS Distributions */ 28*1031c584SApple OSS Distributions 29*1031c584SApple OSS Distributions #ifndef _WORKQUEUE_TRACE_H_ 30*1031c584SApple OSS Distributions #define _WORKQUEUE_TRACE_H_ 31*1031c584SApple OSS Distributions 32*1031c584SApple OSS Distributions // General workqueue tracepoints, mostly for debugging 33*1031c584SApple OSS Distributions #define WQ_TRACE_WORKQUEUE_SUBCLASS 1 34*1031c584SApple OSS Distributions // Workqueue request scheduling tracepoints 35*1031c584SApple OSS Distributions #define WQ_TRACE_REQUESTS_SUBCLASS 2 36*1031c584SApple OSS Distributions // Subclasses 3 - 6 in DBG_PTHREAD are used by libpthread 37*1031c584SApple OSS Distributions 38*1031c584SApple OSS Distributions // Workqueue quantum tracepoints 39*1031c584SApple OSS Distributions #define WQ_TRACE_QUANTUM_SUBCLASS 7 40*1031c584SApple OSS Distributions // Generic pthread tracepoints 41*1031c584SApple OSS Distributions #define WQ_TRACE_BSDTHREAD_SUBCLASS 16 42*1031c584SApple OSS Distributions 43*1031c584SApple OSS Distributions #define TRACE_wq_pthread_exit \ 44*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x01) 45*1031c584SApple OSS Distributions #define TRACE_wq_workqueue_exit \ 46*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x02) 47*1031c584SApple OSS Distributions #define TRACE_wq_runthread \ 48*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x03) 49*1031c584SApple OSS Distributions #define TRACE_wq_death_call \ 50*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x05) 51*1031c584SApple OSS Distributions #define TRACE_wq_thread_block \ 52*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x09) 53*1031c584SApple OSS Distributions #define TRACE_wq_thactive_update \ 54*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x0a) 55*1031c584SApple OSS Distributions #define TRACE_wq_add_timer \ 56*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x0b) 57*1031c584SApple OSS Distributions #define TRACE_wq_start_add_timer \ 58*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x0c) 59*1031c584SApple OSS Distributions #define TRACE_wq_override_dispatch \ 60*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x14) 61*1031c584SApple OSS Distributions #define TRACE_wq_override_reset \ 62*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x15) 63*1031c584SApple OSS Distributions #define TRACE_wq_thread_create_failed \ 64*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x1d) 65*1031c584SApple OSS Distributions #define TRACE_wq_thread_terminate \ 66*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x1e) 67*1031c584SApple OSS Distributions #define TRACE_wq_thread_create \ 68*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x1f) 69*1031c584SApple OSS Distributions #define TRACE_wq_select_threadreq \ 70*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x20) 71*1031c584SApple OSS Distributions #define TRACE_wq_creator_select \ 72*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x23) 73*1031c584SApple OSS Distributions #define TRACE_wq_creator_yield \ 74*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x24) 75*1031c584SApple OSS Distributions #define TRACE_wq_constrained_admission \ 76*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x25) 77*1031c584SApple OSS Distributions #define TRACE_wq_wqops_reqthreads \ 78*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x26) 79*1031c584SApple OSS Distributions #define TRACE_wq_cooperative_admission \ 80*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_WORKQUEUE_SUBCLASS, 0x27) 81*1031c584SApple OSS Distributions 82*1031c584SApple OSS Distributions #define TRACE_wq_create \ 83*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_REQUESTS_SUBCLASS, 0x01) 84*1031c584SApple OSS Distributions #define TRACE_wq_destroy \ 85*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_REQUESTS_SUBCLASS, 0x02) 86*1031c584SApple OSS Distributions #define TRACE_wq_thread_logical_run \ 87*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_REQUESTS_SUBCLASS, 0x03) 88*1031c584SApple OSS Distributions #define TRACE_wq_thread_request_initiate \ 89*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_REQUESTS_SUBCLASS, 0x05) 90*1031c584SApple OSS Distributions #define TRACE_wq_thread_request_modify \ 91*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_REQUESTS_SUBCLASS, 0x06) 92*1031c584SApple OSS Distributions #define TRACE_wq_thread_request_fulfill \ 93*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_REQUESTS_SUBCLASS, 0x08) 94*1031c584SApple OSS Distributions 95*1031c584SApple OSS Distributions #define TRACE_bsdthread_set_qos_self \ 96*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_BSDTHREAD_SUBCLASS, 0x1) 97*1031c584SApple OSS Distributions 98*1031c584SApple OSS Distributions #define TRACE_wq_quantum_arm \ 99*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_QUANTUM_SUBCLASS, 0x01) 100*1031c584SApple OSS Distributions #define TRACE_wq_quantum_expired \ 101*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_QUANTUM_SUBCLASS, 0x02) 102*1031c584SApple OSS Distributions #define TRACE_wq_quantum_disarm \ 103*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_QUANTUM_SUBCLASS, 0x03) 104*1031c584SApple OSS Distributions #define TRACE_wq_quantum_expiry_reevaluate \ 105*1031c584SApple OSS Distributions KDBG_CODE(DBG_PTHREAD, WQ_TRACE_QUANTUM_SUBCLASS, 0x04) 106*1031c584SApple OSS Distributions 107*1031c584SApple OSS Distributions #define WQ_TRACE(x, a, b, c, d) \ 108*1031c584SApple OSS Distributions ({ KERNEL_DEBUG_CONSTANT(x, a, b, c, d, 0); }) 109*1031c584SApple OSS Distributions #define WQ_TRACE_WQ(x, wq, b, c, d) \ 110*1031c584SApple OSS Distributions ({ KERNEL_DEBUG_CONSTANT(x, proc_getpid((wq)->wq_proc), b, c, d, 0); }) 111*1031c584SApple OSS Distributions 112*1031c584SApple OSS Distributions #if (KDEBUG_LEVEL >= KDEBUG_LEVEL_STANDARD) 113*1031c584SApple OSS Distributions #define __wq_trace_only 114*1031c584SApple OSS Distributions #else // (KDEBUG_LEVEL >= KDEBUG_LEVEL_STANDARD) 115*1031c584SApple OSS Distributions #define __wq_trace_only __unused 116*1031c584SApple OSS Distributions #endif // (KDEBUG_LEVEL >= KDEBUG_LEVEL_STANDARD) 117*1031c584SApple OSS Distributions 118*1031c584SApple OSS Distributions #endif // _WORKQUEUE_TRACE_H_ 119