mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-01 05:16:05 +01:00
45940: Add _kdump and _ktrace completers and supporting _ktrace_points type
This commit is contained in:
parent
7ec05332a2
commit
c479107f70
4 changed files with 169 additions and 0 deletions
|
@ -1,5 +1,10 @@
|
|||
2020-06-01 Matthew Martin <phy1729@gmail.com>
|
||||
|
||||
* 45940: Completion/BSD/Command/_kdump,
|
||||
Completion/BSD/Command/_ktrace,
|
||||
Completion/BSD/Type/_ktrace_points: Add _kdump and _ktrace
|
||||
completers and supporting _ktrace_points type.
|
||||
|
||||
* 45939: Completion/Linux/Command/_ionice,
|
||||
Completion/Unix/Command/_lsof, Completion/Unix/Command/_pgrep,
|
||||
Completion/Unix/Command/_renice, Completion/Unix/Type/_pgids:
|
||||
|
|
84
Completion/BSD/Command/_kdump
Normal file
84
Completion/BSD/Command/_kdump
Normal file
|
@ -0,0 +1,84 @@
|
|||
#compdef kdump
|
||||
|
||||
_kdump_pid() {
|
||||
local -a args pids
|
||||
local -A assoc_pids
|
||||
|
||||
if (( $+opt_args[-f] )); then
|
||||
args=(-f $opt_args[-f])
|
||||
fi
|
||||
pids=(${${${(f)"$(_call_program kdump-pids kdump $args)"}:#($'\t'| )*}## #})
|
||||
[[ $OSTYPE == netbsd* ]] && pids=(${pids/ ##[0-9]##/})
|
||||
pids=(${(u)${pids/ /:}%% *})
|
||||
for 1 in $pids; do
|
||||
local pid=${1%%:*} process=${1#*:}
|
||||
if (( $+assoc_pids[$pid] )); then
|
||||
assoc_pids[$pid]+=", $process"
|
||||
else
|
||||
assoc_pids[$pid]=$process
|
||||
fi
|
||||
done
|
||||
pids=()
|
||||
for pid procs in ${(kv)assoc_pids}; do
|
||||
pids+=($pid:$procs)
|
||||
done
|
||||
_describe -t kdump-pids 'kdump pid' pids
|
||||
}
|
||||
|
||||
local args=(
|
||||
'-d[display numbers in decimal]'
|
||||
'-f+[use the specified file (- for stdin)]:dump file:_files'
|
||||
'-l[loop reading the trace file]'
|
||||
'-m+[maximum I/O bytes to display]:max data bytes:'
|
||||
'-n[supress ad hoc translations]'
|
||||
'-p+[show output only for the specified pid]: :_kdump_pid'
|
||||
'(-E -T)-R[display relative timestamps]'
|
||||
'(-E -R )-T[display absolute timestamps]'
|
||||
'-t[select which tracepoints to display]: :_ktrace_points'
|
||||
)
|
||||
|
||||
case $OSTYPE; in
|
||||
freebsd*|netbsd*)
|
||||
args+=(
|
||||
'(-R -T)-E[display elapsed timestamps]'
|
||||
)
|
||||
;|
|
||||
freebsd*|openbsd*)
|
||||
args+=(
|
||||
'-H[display thread identifiers]'
|
||||
)
|
||||
;|
|
||||
dragonfly*)
|
||||
args+=(
|
||||
'(-c -R)-a[display full human readable output]'
|
||||
'-c[display the CPU the thread is running on]'
|
||||
'-j[use a fixed format output]'
|
||||
)
|
||||
;;
|
||||
freebsd*)
|
||||
args+=(
|
||||
'-A[display description of the ABI of traced process]'
|
||||
'-r[symbolically display structure members]'
|
||||
'-S[display system call numbers]'
|
||||
'-s[suppress display of I/O data]'
|
||||
)
|
||||
;;
|
||||
netbsd*)
|
||||
args+=(
|
||||
'-e[interpret system call maps using the specified emulation]:emulation:'
|
||||
'-N[suppress system call name translation]'
|
||||
'-X[Display GIO data in hex and ascii in groups of specified size]:size:(1 2 4 8 16)'
|
||||
'-x[Display GIO data in hex and ascii]
|
||||
'1:dump file:_files'
|
||||
)
|
||||
;;
|
||||
openbsd*)
|
||||
args+=(
|
||||
# XXX handle -TR
|
||||
'-X[display I/O data in hex and ASCII]'
|
||||
'-x[display I/O data in hex]'
|
||||
)
|
||||
;;
|
||||
esac
|
||||
|
||||
_arguments -s -S -A '-*' : $args
|
30
Completion/BSD/Command/_ktrace
Normal file
30
Completion/BSD/Command/_ktrace
Normal file
|
@ -0,0 +1,30 @@
|
|||
#compdef ktrace
|
||||
|
||||
local args=(
|
||||
'-a[append to the trace file]'
|
||||
'(*)-C[disable tracing on all user owned processes or all processes if executed by root]'
|
||||
'-c[clear the trace points]'
|
||||
'-d[trace current decendants]'
|
||||
'-f+[log trace to specified file]:trace file:_files'
|
||||
'(-p *)-g+[enable/disable tracing on specified process group]:pgid:_pgids'
|
||||
'-i[inherit trace flags on future children]'
|
||||
'(-g *)-p+[enable/disable tracing on specified PID]: :_pids'
|
||||
'-t+[select information to include in dump]:trace string:_ktrace_points'
|
||||
'*:: : _normal -p ktrace'
|
||||
)
|
||||
|
||||
case $OSTYPE; in
|
||||
openbsd*)
|
||||
args+=(
|
||||
'-B[process relocations immediately]'
|
||||
)
|
||||
;;
|
||||
netbsd*)
|
||||
args+=(
|
||||
'-n[stop tracing if writes to the trace file would block]'
|
||||
'-s[write to the trace file with synchronized I/O]'
|
||||
)
|
||||
;;
|
||||
esac
|
||||
|
||||
_arguments -s -S -A '-*' : $args
|
50
Completion/BSD/Type/_ktrace_points
Normal file
50
Completion/BSD/Type/_ktrace_points
Normal file
|
@ -0,0 +1,50 @@
|
|||
#autoload
|
||||
|
||||
local points=(
|
||||
'c[trace system calls]'
|
||||
'i[trace I/O]'
|
||||
'n[trace namei translations]'
|
||||
's[trace signal processing]'
|
||||
'u[trace user data]'
|
||||
'+[trace the default points]'
|
||||
)
|
||||
|
||||
case $OSTYPE in
|
||||
dragonfly*|freebsd*|netbsd*)
|
||||
points+=(
|
||||
'w[context switches]'
|
||||
)
|
||||
;|
|
||||
freebsd*|openbsd*)
|
||||
points+=(
|
||||
't[trace various structures]'
|
||||
)
|
||||
;|
|
||||
freebsd*)
|
||||
points+=(
|
||||
'f[trace page faults]'
|
||||
'p[trace capability check failures]'
|
||||
'y[trace sysctl(3) requests]'
|
||||
)
|
||||
;;
|
||||
netbsd*)
|
||||
points+=(
|
||||
'A[trace all tracepoints]'
|
||||
'a[trace exec arguments]'
|
||||
'e[trace emulation changes]'
|
||||
'f[trace open file descriptors after exec]'
|
||||
'S[trace MIB access (sysctl)]'
|
||||
'v[trace exec environment]'
|
||||
'-[do not trace following trace points]'
|
||||
)
|
||||
;;
|
||||
openbsd*)
|
||||
points+=(
|
||||
'p[trace violation of pledge(2) restrictions]'
|
||||
'x[trace argument vector in execve(2)]'
|
||||
'X[trace environment in execve(2)]'
|
||||
)
|
||||
;;
|
||||
easc
|
||||
|
||||
_values -s '' 'ktrace point' $points
|
Loading…
Reference in a new issue