diff options
Diffstat (limited to 'Completion/BSD/Command/_kdump')
-rw-r--r-- | Completion/BSD/Command/_kdump | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/Completion/BSD/Command/_kdump b/Completion/BSD/Command/_kdump new file mode 100644 index 000000000..669260eee --- /dev/null +++ b/Completion/BSD/Command/_kdump @@ -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 |