mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-21 00:01:26 +01:00
61 lines
1.6 KiB
Text
61 lines
1.6 KiB
Text
#compdef chrt
|
|
|
|
local context state line
|
|
typeset -A opt_args
|
|
|
|
_arguments \
|
|
'(* -)'{-h,--help}'[display usage information]' \
|
|
'(* -)'{-V,--version}'[output version information]' \
|
|
{-v,--verbose}'[display status information]' \
|
|
{-p,--pid}'[interpret args as process ID]' \
|
|
'(-b --batch -f --fifo -o --other -r --rr)'{-b,--batch}'[set scheduling policy to SCHED_BATCH]' \
|
|
'(-b --batch -f --fifo -o --other -r --rr)'{-f,--fifo}'[set scheduling policy to SCHED_FIFO]' \
|
|
'(-b --batch -f --fifo -o --other -r --rr)'{-o,--other}'[set policy scheduling policy to SCHED_OTHER]' \
|
|
'(-b --batch -f --fifo -o --other -r --rr)'{-r,--rr}'[set scheduling policy to SCHED_RR]' \
|
|
'(* -)'{-m,--max}'[show minimum and maximum valid priorities, then exit]' \
|
|
'*::command or priority:->cmd_or_prio' \
|
|
&& return 0
|
|
|
|
_chrt_priority()
|
|
{
|
|
local ty
|
|
if (( $+opt_args[-b] || $+opt_args[--batch] ))
|
|
then
|
|
ty=BATCH
|
|
elif (( $+opt_args[-f] || $+opt_args[--fifo] ))
|
|
then
|
|
ty=FIFO
|
|
elif (( $+opt_args[-o] || $+opt_args[--other] ))
|
|
then
|
|
ty=OTHER
|
|
else
|
|
ty=RR
|
|
fi
|
|
local range
|
|
range=${${"$(_call_program priorities chrt --max)"#*SCHED_$ty*: }%$'\n'*}
|
|
if [[ $range = 0/0 ]]
|
|
then
|
|
compadd 0
|
|
else
|
|
_message -e priority "priority in the range $range"
|
|
fi
|
|
}
|
|
|
|
if (( $+opt_args[-p] || $+opt_args[--pid] ))
|
|
then
|
|
if [[ $CURRENT -eq 1 ]]
|
|
then
|
|
_alternative \
|
|
'priority:priority:_chrt_priority' \
|
|
'processes:process IDs:_pids'
|
|
else
|
|
_pids
|
|
fi
|
|
elif [[ $CURRENT -eq 1 ]]
|
|
then
|
|
_chrt_priority
|
|
else
|
|
shift words
|
|
(( CURRENT-- ))
|
|
_normal
|
|
fi
|