#compdef prstat

local d_opt sort_key
d_opt=(
  "u"\:"seconds past the epoch"
  "d"\:"standard date format"
)

sort_key=(
  "cpu"\:"process CPU usage"
  "pri"\:"process priority"
  "rss"\:"resident set size"
  "size"\:"size of process image"
  "time"\:"process execution time"
)

_arguments -A "-*" \
  '-a[information about processes and users]' \
  '-c[new reports below previous reports instead of overprinting them]' \
  '-C[processes or lwps that are bound to processor sets in the list]:processor set list' \
  '-d[specify the representation of time]:time representation:(($d_opt))' \
  '-h[only processes or lwps whose home lgroup is in the list]:lgroup list' \
  '-H[information about home lgroup]' \
  '-j[only processes or lwps whose project ID is in the given list]:project list' \
  '-J[information about processes and projects]' \
  '-k[only processes or lwps whose task ID is in tasklist]:task list'\
  '-L[statistics for each light-weight process (LWP)]' \
  '-m[microstate process accounting information]' \
  '-n[restrict number of output lines]:ntop,[nbottom]' \
  '-p[only processes whose process ID is in the list]:PID list' \
  '-P[only processes or lwps which have most recently executed on a CPU in the list]:CPU list' \
  '-R[put prstat in the real time scheduling class]' \
  '-s[sort key (descending)]:sort key [cpu]:(($sort_key))' \
  '-S[sort key (ascending)]:sort key [cpu]:(($sort_key))' \
  '-t[total usage summary for each user]' \
  '-T[information about processes and tasks]' \
  '-u[only processes whose effective user ID is in the list]:UID:_users' \
  '-U[only processes whose real user ID is in the list]:UID:_users' \
  '-v[verbose process usage]' \
  '-z[only processes or LWPs whose zone ID is in the list]:zone ID' \
  '-Z[information about processes and zones]'
