1*bbb1b6f9SApple OSS Distributions#!/usr/local/bin/luatrace -s 2*bbb1b6f9SApple OSS Distributions 3*bbb1b6f9SApple OSS Distributionstrace_eventname = function(codename, callback) 4*bbb1b6f9SApple OSS Distributions local debugid = trace.debugid(codename) 5*bbb1b6f9SApple OSS Distributions if debugid ~= 0 then 6*bbb1b6f9SApple OSS Distributions trace.single(debugid,callback) 7*bbb1b6f9SApple OSS Distributions else 8*bbb1b6f9SApple OSS Distributions printf("WARNING: Cannot locate debugid for '%s'\n", codename) 9*bbb1b6f9SApple OSS Distributions end 10*bbb1b6f9SApple OSS Distributionsend 11*bbb1b6f9SApple OSS Distributions 12*bbb1b6f9SApple OSS Distributionsinitial_timestamp = 0 13*bbb1b6f9SApple OSS Distributions 14*bbb1b6f9SApple OSS Distributionsfunction event_prefix_string(buf, workq) 15*bbb1b6f9SApple OSS Distributions if initial_timestamp == 0 then 16*bbb1b6f9SApple OSS Distributions initial_timestamp = buf.timestamp 17*bbb1b6f9SApple OSS Distributions end 18*bbb1b6f9SApple OSS Distributions local secs = trace.convert_timestamp_to_nanoseconds(buf.timestamp - initial_timestamp) / 1000000000 19*bbb1b6f9SApple OSS Distributions 20*bbb1b6f9SApple OSS Distributions local type 21*bbb1b6f9SApple OSS Distributions if trace.debugid_is_start(buf.debugid) then 22*bbb1b6f9SApple OSS Distributions type = "→" 23*bbb1b6f9SApple OSS Distributions elseif trace.debugid_is_end(buf.debugid) then 24*bbb1b6f9SApple OSS Distributions type = "←" 25*bbb1b6f9SApple OSS Distributions else 26*bbb1b6f9SApple OSS Distributions type = "↔" 27*bbb1b6f9SApple OSS Distributions end 28*bbb1b6f9SApple OSS Distributions 29*bbb1b6f9SApple OSS Distributions proc = buf.command 30*bbb1b6f9SApple OSS Distributions 31*bbb1b6f9SApple OSS Distributions local prefix = string.format("%s %6.9f %-17s [%05d.%06x] %-28s\t", 32*bbb1b6f9SApple OSS Distributions type, secs, proc, buf.pid, buf.threadid, buf.debugname) 33*bbb1b6f9SApple OSS Distributions if not workq then 34*bbb1b6f9SApple OSS Distributions prefix = prefix .. string.format(" 0x%16x", buf.arg1) 35*bbb1b6f9SApple OSS Distributions end 36*bbb1b6f9SApple OSS Distributions 37*bbb1b6f9SApple OSS Distributions return prefix 38*bbb1b6f9SApple OSS Distributionsend 39*bbb1b6f9SApple OSS Distributions 40*bbb1b6f9SApple OSS Distributionsfunction qos_string(qos) 41*bbb1b6f9SApple OSS Distributions if qos == 0 then 42*bbb1b6f9SApple OSS Distributions return "--" 43*bbb1b6f9SApple OSS Distributions elseif qos == 1 then 44*bbb1b6f9SApple OSS Distributions return "MT" 45*bbb1b6f9SApple OSS Distributions elseif qos == 2 then 46*bbb1b6f9SApple OSS Distributions return "BG" 47*bbb1b6f9SApple OSS Distributions elseif qos == 3 then 48*bbb1b6f9SApple OSS Distributions return "UT" 49*bbb1b6f9SApple OSS Distributions elseif qos == 4 then 50*bbb1b6f9SApple OSS Distributions return "DF" 51*bbb1b6f9SApple OSS Distributions elseif qos == 5 then 52*bbb1b6f9SApple OSS Distributions return "IN" 53*bbb1b6f9SApple OSS Distributions elseif qos == 6 then 54*bbb1b6f9SApple OSS Distributions return "UI" 55*bbb1b6f9SApple OSS Distributions elseif qos == 7 then 56*bbb1b6f9SApple OSS Distributions return "MG" 57*bbb1b6f9SApple OSS Distributions else 58*bbb1b6f9SApple OSS Distributions return string.format("??[0x%x]", qos) 59*bbb1b6f9SApple OSS Distributions end 60*bbb1b6f9SApple OSS Distributionsend 61*bbb1b6f9SApple OSS Distributions 62*bbb1b6f9SApple OSS Distributionsfunction state_string(strings, state) 63*bbb1b6f9SApple OSS Distributions local str = '' 64*bbb1b6f9SApple OSS Distributions local first = true 65*bbb1b6f9SApple OSS Distributions for name, bit in pairs(strings) do 66*bbb1b6f9SApple OSS Distributions if (state & bit) == bit then 67*bbb1b6f9SApple OSS Distributions if not first then 68*bbb1b6f9SApple OSS Distributions str = str .. ' ' 69*bbb1b6f9SApple OSS Distributions end 70*bbb1b6f9SApple OSS Distributions str = str .. name 71*bbb1b6f9SApple OSS Distributions first = false 72*bbb1b6f9SApple OSS Distributions end 73*bbb1b6f9SApple OSS Distributions end 74*bbb1b6f9SApple OSS Distributions return str 75*bbb1b6f9SApple OSS Distributionsend 76*bbb1b6f9SApple OSS Distributions 77*bbb1b6f9SApple OSS Distributionskqrequest_state_strings = { 78*bbb1b6f9SApple OSS Distributions ['WAKEUP'] = 1, 79*bbb1b6f9SApple OSS Distributions} 80*bbb1b6f9SApple OSS Distributions 81*bbb1b6f9SApple OSS Distributionskqueue_state_strings = { 82*bbb1b6f9SApple OSS Distributions ['SEL'] = 0x001, 83*bbb1b6f9SApple OSS Distributions ['SLEEP'] = 0x002, 84*bbb1b6f9SApple OSS Distributions ['PROCWAIT'] = 0x004, 85*bbb1b6f9SApple OSS Distributions ['KEV32'] = 0x008, 86*bbb1b6f9SApple OSS Distributions ['KEV64'] = 0x010, 87*bbb1b6f9SApple OSS Distributions ['KEV_QOS'] = 0x020, 88*bbb1b6f9SApple OSS Distributions ['WORKQ'] = 0x040, 89*bbb1b6f9SApple OSS Distributions ['WORKLOOP'] = 0x080, 90*bbb1b6f9SApple OSS Distributions ['PROCESSING'] = 0x100, 91*bbb1b6f9SApple OSS Distributions ['DRAIN'] = 0x200, 92*bbb1b6f9SApple OSS Distributions ['WAKEUP'] = 0x400, 93*bbb1b6f9SApple OSS Distributions ['DYNAMIC'] = 0x800, 94*bbb1b6f9SApple OSS Distributions ['R2K'] = 0x1000, 95*bbb1b6f9SApple OSS Distributions ['TURNSTILE'] = 0x2000, 96*bbb1b6f9SApple OSS Distributions} 97*bbb1b6f9SApple OSS Distributions 98*bbb1b6f9SApple OSS Distributionsknote_state_strings = { 99*bbb1b6f9SApple OSS Distributions ['ACTIVE'] = 0x0001, 100*bbb1b6f9SApple OSS Distributions ['QUEUED'] = 0x0002, 101*bbb1b6f9SApple OSS Distributions ['DISABLED'] = 0x0004, 102*bbb1b6f9SApple OSS Distributions ['DROPPING'] = 0x0008, 103*bbb1b6f9SApple OSS Distributions ['LOCKED'] = 0x0010, 104*bbb1b6f9SApple OSS Distributions ['POSTING'] = 0x0020, 105*bbb1b6f9SApple OSS Distributions ['STAYACTIVE'] = 0x0040, 106*bbb1b6f9SApple OSS Distributions ['DEFERDELETE'] = 0x0080, 107*bbb1b6f9SApple OSS Distributions ['MERGE_QOS'] = 0x0100, 108*bbb1b6f9SApple OSS Distributions ['REQVANISH'] = 0x0200, 109*bbb1b6f9SApple OSS Distributions ['VANISHED'] = 0x0400, 110*bbb1b6f9SApple OSS Distributions ['SUPPRESSED'] = 0x0800, 111*bbb1b6f9SApple OSS Distributions} 112*bbb1b6f9SApple OSS Distributions 113*bbb1b6f9SApple OSS Distributionskevent_flags_strings = { 114*bbb1b6f9SApple OSS Distributions ['ADD'] = 0x0001, 115*bbb1b6f9SApple OSS Distributions ['DELETE'] = 0x0002, 116*bbb1b6f9SApple OSS Distributions ['ENABLE'] = 0x0004, 117*bbb1b6f9SApple OSS Distributions ['DISABLE'] = 0x0008, 118*bbb1b6f9SApple OSS Distributions ['ONESHOT'] = 0x0010, 119*bbb1b6f9SApple OSS Distributions ['CLEAR'] = 0x0020, 120*bbb1b6f9SApple OSS Distributions ['RECEIPT'] = 0x0040, 121*bbb1b6f9SApple OSS Distributions ['DISPATCH'] = 0x0080, 122*bbb1b6f9SApple OSS Distributions ['UDATA_SPECIFIC'] = 0x0100, 123*bbb1b6f9SApple OSS Distributions ['VANISHED'] = 0x0200, 124*bbb1b6f9SApple OSS Distributions ['FLAG0'] = 0x1000, 125*bbb1b6f9SApple OSS Distributions ['FLAG1'] = 0x2000, 126*bbb1b6f9SApple OSS Distributions ['EOF'] = 0x8000, 127*bbb1b6f9SApple OSS Distributions ['ERROR'] = 0x4000, 128*bbb1b6f9SApple OSS Distributions} 129*bbb1b6f9SApple OSS Distributions 130*bbb1b6f9SApple OSS Distributionsfunction kevent_filter_string(filt) 131*bbb1b6f9SApple OSS Distributions if filt == -1 then 132*bbb1b6f9SApple OSS Distributions return 'READ' 133*bbb1b6f9SApple OSS Distributions elseif filt == -2 then 134*bbb1b6f9SApple OSS Distributions return 'WRITE' 135*bbb1b6f9SApple OSS Distributions elseif filt == -3 then 136*bbb1b6f9SApple OSS Distributions return 'AIO' 137*bbb1b6f9SApple OSS Distributions elseif filt == -4 then 138*bbb1b6f9SApple OSS Distributions return 'VNODE' 139*bbb1b6f9SApple OSS Distributions elseif filt == -5 then 140*bbb1b6f9SApple OSS Distributions return 'PROC' 141*bbb1b6f9SApple OSS Distributions elseif filt == -6 then 142*bbb1b6f9SApple OSS Distributions return 'SIGNAL' 143*bbb1b6f9SApple OSS Distributions elseif filt == -7 then 144*bbb1b6f9SApple OSS Distributions return 'TIMER' 145*bbb1b6f9SApple OSS Distributions elseif filt == -8 then 146*bbb1b6f9SApple OSS Distributions return 'MACHPORT' 147*bbb1b6f9SApple OSS Distributions elseif filt == -9 then 148*bbb1b6f9SApple OSS Distributions return 'FS' 149*bbb1b6f9SApple OSS Distributions elseif filt == -10 then 150*bbb1b6f9SApple OSS Distributions return 'USER' 151*bbb1b6f9SApple OSS Distributions -- -11 unused 152*bbb1b6f9SApple OSS Distributions elseif filt == -12 then 153*bbb1b6f9SApple OSS Distributions return 'VM' 154*bbb1b6f9SApple OSS Distributions elseif filt == -13 then 155*bbb1b6f9SApple OSS Distributions return 'SOCK' 156*bbb1b6f9SApple OSS Distributions elseif filt == -14 then 157*bbb1b6f9SApple OSS Distributions return 'MEMORYSTATUS' 158*bbb1b6f9SApple OSS Distributions elseif filt == -15 then 159*bbb1b6f9SApple OSS Distributions return 'EXCEPT' 160*bbb1b6f9SApple OSS Distributions elseif filt == -16 then 161*bbb1b6f9SApple OSS Distributions return 'NW_CHANNEL' 162*bbb1b6f9SApple OSS Distributions elseif filt == -17 then 163*bbb1b6f9SApple OSS Distributions return 'WORKLOOP' 164*bbb1b6f9SApple OSS Distributions 165*bbb1b6f9SApple OSS Distributions elseif filt == 17 then 166*bbb1b6f9SApple OSS Distributions return 'KQREAD' 167*bbb1b6f9SApple OSS Distributions elseif filt == 18 then 168*bbb1b6f9SApple OSS Distributions return 'PIPE_N' 169*bbb1b6f9SApple OSS Distributions elseif filt == 19 then 170*bbb1b6f9SApple OSS Distributions return 'PIPE_R' 171*bbb1b6f9SApple OSS Distributions elseif filt == 20 then 172*bbb1b6f9SApple OSS Distributions return 'PIPE_W' 173*bbb1b6f9SApple OSS Distributions elseif filt == 21 then 174*bbb1b6f9SApple OSS Distributions return 'PTSD' 175*bbb1b6f9SApple OSS Distributions elseif filt == 22 then 176*bbb1b6f9SApple OSS Distributions return 'SOREAD' 177*bbb1b6f9SApple OSS Distributions elseif filt == 23 then 178*bbb1b6f9SApple OSS Distributions return 'SOWRITE' 179*bbb1b6f9SApple OSS Distributions elseif filt == 24 then 180*bbb1b6f9SApple OSS Distributions return 'SCK' 181*bbb1b6f9SApple OSS Distributions elseif filt == 25 then 182*bbb1b6f9SApple OSS Distributions return 'SOEXCEPT' 183*bbb1b6f9SApple OSS Distributions elseif filt == 26 then 184*bbb1b6f9SApple OSS Distributions return 'SPEC' 185*bbb1b6f9SApple OSS Distributions elseif filt == 27 then 186*bbb1b6f9SApple OSS Distributions return 'BPFREAD' 187*bbb1b6f9SApple OSS Distributions elseif filt == 28 then 188*bbb1b6f9SApple OSS Distributions return 'NECP_FD' 189*bbb1b6f9SApple OSS Distributions elseif filt == 29 then 190*bbb1b6f9SApple OSS Distributions return 'SKYWALK_CHANNEL_W' 191*bbb1b6f9SApple OSS Distributions elseif filt == 30 then 192*bbb1b6f9SApple OSS Distributions return 'SKYWALK_CHANNEL_R' 193*bbb1b6f9SApple OSS Distributions elseif filt == 31 then 194*bbb1b6f9SApple OSS Distributions return 'SKYWALK_CHANNEL_E' 195*bbb1b6f9SApple OSS Distributions elseif filt == 32 then 196*bbb1b6f9SApple OSS Distributions return 'FSEVENT' 197*bbb1b6f9SApple OSS Distributions elseif filt == 33 then 198*bbb1b6f9SApple OSS Distributions return 'VN' 199*bbb1b6f9SApple OSS Distributions elseif filt == 34 then 200*bbb1b6f9SApple OSS Distributions return 'TTY' 201*bbb1b6f9SApple OSS Distributions elseif filt == 35 then 202*bbb1b6f9SApple OSS Distributions return 'PTMX' 203*bbb1b6f9SApple OSS Distributions elseif filt == 36 then 204*bbb1b6f9SApple OSS Distributions return 'DETACHED' 205*bbb1b6f9SApple OSS Distributions else 206*bbb1b6f9SApple OSS Distributions return string.format('[%d]', filt) 207*bbb1b6f9SApple OSS Distributions end 208*bbb1b6f9SApple OSS Distributionsend 209*bbb1b6f9SApple OSS Distributions 210*bbb1b6f9SApple OSS Distributions-- kqueue lifecycle 211*bbb1b6f9SApple OSS Distributions 212*bbb1b6f9SApple OSS Distributionsfunction processing_begin(workq) 213*bbb1b6f9SApple OSS Distributions return function(buf) 214*bbb1b6f9SApple OSS Distributions local prefix = event_prefix_string(buf, workq) 215*bbb1b6f9SApple OSS Distributions if trace.debugid_is_start(buf.debugid) then 216*bbb1b6f9SApple OSS Distributions local qos 217*bbb1b6f9SApple OSS Distributions if workq then 218*bbb1b6f9SApple OSS Distributions qos = buf.arg2 219*bbb1b6f9SApple OSS Distributions else 220*bbb1b6f9SApple OSS Distributions qos = buf.arg3 221*bbb1b6f9SApple OSS Distributions end 222*bbb1b6f9SApple OSS Distributions printf("%s QoS = %s\n", prefix, qos_string(qos)) 223*bbb1b6f9SApple OSS Distributions else 224*bbb1b6f9SApple OSS Distributions printf("%s request thread = 0x%x, kqrequest state = %s\n", prefix, 225*bbb1b6f9SApple OSS Distributions buf.arg1, state_string(kqrequest_state_strings, buf.arg2)) 226*bbb1b6f9SApple OSS Distributions end 227*bbb1b6f9SApple OSS Distributions end 228*bbb1b6f9SApple OSS Distributionsend 229*bbb1b6f9SApple OSS Distributions 230*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kq_processing_begin", processing_begin(false)) 231*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwq_processing_begin", processing_begin(true)) 232*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwl_processing_begin", processing_begin(false)) 233*bbb1b6f9SApple OSS Distributions 234*bbb1b6f9SApple OSS Distributionsfunction processing_end(workq) 235*bbb1b6f9SApple OSS Distributions return function(buf) 236*bbb1b6f9SApple OSS Distributions local qos 237*bbb1b6f9SApple OSS Distributions if workq then 238*bbb1b6f9SApple OSS Distributions qos = buf.arg2 239*bbb1b6f9SApple OSS Distributions else 240*bbb1b6f9SApple OSS Distributions qos = buf.arg3 241*bbb1b6f9SApple OSS Distributions end 242*bbb1b6f9SApple OSS Distributions printf("%s QoS = %s\n", event_prefix_string(buf, workq), qos_string(qos)) 243*bbb1b6f9SApple OSS Distributions end 244*bbb1b6f9SApple OSS Distributionsend 245*bbb1b6f9SApple OSS Distributions 246*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kq_processing_end", processing_end(false)) 247*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwq_processing_end", processing_end(true)) 248*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwl_processing_end", processing_end(false)) 249*bbb1b6f9SApple OSS Distributions 250*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwq_bind", function(buf) 251*bbb1b6f9SApple OSS Distributions printf("%s thread = 0x%x, QoS = %s, kqrequest state = %s\n", 252*bbb1b6f9SApple OSS Distributions event_prefix_string(buf, true), buf.arg1, qos_string(buf.arg3), 253*bbb1b6f9SApple OSS Distributions state_string(kqrequest_state_strings, buf.arg4)) 254*bbb1b6f9SApple OSS Distributionsend) 255*bbb1b6f9SApple OSS Distributions 256*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwq_unbind", function(buf) 257*bbb1b6f9SApple OSS Distributions printf("%s thread = 0x%x, QoS = %s\n", event_prefix_string(buf, true), 258*bbb1b6f9SApple OSS Distributions buf.arg1, qos_string(buf.arg3)) 259*bbb1b6f9SApple OSS Distributionsend) 260*bbb1b6f9SApple OSS Distributions 261*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwl_bind", function(buf) 262*bbb1b6f9SApple OSS Distributions qos = buf.arg3 & 0xff 263*bbb1b6f9SApple OSS Distributions duplicate = buf.arg3 & (1 << 8) 264*bbb1b6f9SApple OSS Distributions kqr_override_qos_delta = buf.arg4 >> 8 265*bbb1b6f9SApple OSS Distributions kqr_state = buf.arg4 & 0xff 266*bbb1b6f9SApple OSS Distributions 267*bbb1b6f9SApple OSS Distributions printf("%s thread = 0x%x, QoS = %s, override QoS delta = %d, kqrequest state = %s%s\n", 268*bbb1b6f9SApple OSS Distributions event_prefix_string(buf, false), buf.arg2, qos_string(qos), 269*bbb1b6f9SApple OSS Distributions kqr_override_qos_delta, 270*bbb1b6f9SApple OSS Distributions state_string(kqrequest_state_strings, kqr_state), 271*bbb1b6f9SApple OSS Distributions duplicate and ", duplicate" or "") 272*bbb1b6f9SApple OSS Distributionsend) 273*bbb1b6f9SApple OSS Distributions 274*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwl_unbind", function(buf) 275*bbb1b6f9SApple OSS Distributions flags = buf.arg3 276*bbb1b6f9SApple OSS Distributions qos = buf.arg4 277*bbb1b6f9SApple OSS Distributions 278*bbb1b6f9SApple OSS Distributions printf("%s thread = 0x%x, QoS = %s, flags = 0x%x\n", event_prefix_string(buf, false), 279*bbb1b6f9SApple OSS Distributions buf.arg2, qos_string(qos), flags) 280*bbb1b6f9SApple OSS Distributionsend) 281*bbb1b6f9SApple OSS Distributions 282*bbb1b6f9SApple OSS Distributionsfunction thread_request(workq) 283*bbb1b6f9SApple OSS Distributions return function(buf) 284*bbb1b6f9SApple OSS Distributions printf("%s QoS = %s, kqrequest state = %s, override QoS delta = %d\n", 285*bbb1b6f9SApple OSS Distributions event_prefix_string(buf, workq), qos_string(buf.arg2), 286*bbb1b6f9SApple OSS Distributions state_string(kqrequest_state_strings, buf.arg3), buf.arg3 >> 8) 287*bbb1b6f9SApple OSS Distributions end 288*bbb1b6f9SApple OSS Distributionsend 289*bbb1b6f9SApple OSS Distributions 290*bbb1b6f9SApple OSS Distributionsfunction thread_adjust(buf) 291*bbb1b6f9SApple OSS Distributions tid = buf.arg2 292*bbb1b6f9SApple OSS Distributions kqr_qos = buf.arg3 >> 8 293*bbb1b6f9SApple OSS Distributions new_qos = buf.arg3 & 0xff 294*bbb1b6f9SApple OSS Distributions kqr_qos_override = buf.arg4 >> 8 295*bbb1b6f9SApple OSS Distributions kqr_state = buf.arg4 & 0xff 296*bbb1b6f9SApple OSS Distributions 297*bbb1b6f9SApple OSS Distributions printf("%s thread = 0x%x, old/new QoS = %s/%s, old/new override QoS delta = %d/%d, kqrequest state = %s\n", 298*bbb1b6f9SApple OSS Distributions event_prefix_string(buf, false), 299*bbb1b6f9SApple OSS Distributions tid, 300*bbb1b6f9SApple OSS Distributions qos_string(kqr_qos), 301*bbb1b6f9SApple OSS Distributions qos_string(new_qos), 302*bbb1b6f9SApple OSS Distributions kqr_qos_override, 303*bbb1b6f9SApple OSS Distributions new_qos - kqr_qos, 304*bbb1b6f9SApple OSS Distributions state_string(kqrequest_state_strings, kqr_state)) 305*bbb1b6f9SApple OSS Distributionsend 306*bbb1b6f9SApple OSS Distributions 307*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwq_thread_request", thread_request(true)) 308*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwl_thread_request", thread_request(false)) 309*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwl_thread_adjust", thread_adjust) 310*bbb1b6f9SApple OSS Distributions 311*bbb1b6f9SApple OSS Distributionsfunction kevent_register(workq) 312*bbb1b6f9SApple OSS Distributions return function(buf) 313*bbb1b6f9SApple OSS Distributions printf("%s kevent udata = 0x%x, kevent filter = %s, kevent flags = %s\n", 314*bbb1b6f9SApple OSS Distributions event_prefix_string(buf, workq), buf.arg2, 315*bbb1b6f9SApple OSS Distributions kevent_filter_string(buf.arg4), 316*bbb1b6f9SApple OSS Distributions state_string(kevent_flags_strings, buf.arg3)) 317*bbb1b6f9SApple OSS Distributions end 318*bbb1b6f9SApple OSS Distributionsend 319*bbb1b6f9SApple OSS Distributions 320*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kq_register", kevent_register(false)) 321*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwq_register", kevent_register(true)) 322*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwl_register", kevent_register(false)) 323*bbb1b6f9SApple OSS Distributions 324*bbb1b6f9SApple OSS Distributionsfunction kevent_process(workq) 325*bbb1b6f9SApple OSS Distributions return function(buf) 326*bbb1b6f9SApple OSS Distributions printf("%s kevent ident = 0x%x, udata = 0x%x, kevent filter = %s, knote status = %s\n", 327*bbb1b6f9SApple OSS Distributions event_prefix_string(buf, workq), buf.arg3 >> 32, buf.arg2, 328*bbb1b6f9SApple OSS Distributions kevent_filter_string(buf.arg4), 329*bbb1b6f9SApple OSS Distributions state_string(knote_state_strings, buf.arg3 & 0xffffffff)) 330*bbb1b6f9SApple OSS Distributions end 331*bbb1b6f9SApple OSS Distributionsend 332*bbb1b6f9SApple OSS Distributions 333*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kq_process", kevent_process(false)) 334*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwq_process", kevent_process(true)) 335*bbb1b6f9SApple OSS Distributionstrace_eventname("KEVENT_kqwl_process", kevent_process(false)) 336