xref: /xnu-8020.121.3/tools/trace/ktruss.lua (revision fdd8201d7b966f0c3ea610489d29bd841d358941)
1*fdd8201dSApple OSS Distributions#!/usr/local/bin/recon
2*fdd8201dSApple OSS Distributions
3*fdd8201dSApple OSS Distributionslocal ktrace = require 'ktrace'
4*fdd8201dSApple OSS Distributions
5*fdd8201dSApple OSS Distributionsif not arg[1] or arg[1] == '-h' then
6*fdd8201dSApple OSS Distributions  print[[
7*fdd8201dSApple OSS Distributionsusage: ktruss <syscall-name> [<more-names> ...]
8*fdd8201dSApple OSS Distributions
9*fdd8201dSApple OSS DistributionsUse Kernel TRace to print User Space Syscalls (ktruss).]]
10*fdd8201dSApple OSS Distributions  os.exit(arg[1] == nil)
11*fdd8201dSApple OSS Distributionsend
12*fdd8201dSApple OSS Distributions
13*fdd8201dSApple OSS Distributionslocal sess = ktrace.Session.new()
14*fdd8201dSApple OSS Distributions
15*fdd8201dSApple OSS Distributionsfor i = 1, #arg do
16*fdd8201dSApple OSS Distributions  sess:add_callback_pair('BSC_' .. arg[i], function (start, finish)
17*fdd8201dSApple OSS Distributions    print(('%s[%d]: %s(0x%x, 0x%x, 0x%x, 0x%x) -> %d'):format(
18*fdd8201dSApple OSS Distributions        sess:procname_for_threadid(start.threadid),
19*fdd8201dSApple OSS Distributions        sess:pid_for_threadid(start.threadid), arg[1], start[1], start[2],
20*fdd8201dSApple OSS Distributions        start[3], start[4], finish[2]))
21*fdd8201dSApple OSS Distributions  end)
22*fdd8201dSApple OSS Distributionsend
23*fdd8201dSApple OSS Distributions
24*fdd8201dSApple OSS Distributionslocal ok, err = sess:start()
25*fdd8201dSApple OSS Distributionsif not ok then
26*fdd8201dSApple OSS Distributions  io.stderr:write('tracing failed: ', err, '\n')
27*fdd8201dSApple OSS Distributions  os.exit(1)
28*fdd8201dSApple OSS Distributionsend
29