#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

menu "Process Utilities"

config FREE
	bool "free"
	default n
	help
	  free displays the total amount of free and used physical and swap
	  memory in the system, as well as the buffers used by the kernel.
	  The shared memory column should be ignored; it is obsolete.

config FUSER
	bool "fuser"
	default n
	help
	  fuser lists all PIDs (Process IDs) that currently have a given
	  file open.  fuser can also list all PIDs that have a given network
	  (TCP or UDP) port open.

config KILL
	bool "kill"
	default n
	help
	  The command kill sends the specified signal to the specified
	  process or process group.  If no signal is specified, the TERM
	  signal is sent.

config KILLALL
	bool "killall"
	default n
	depends on KILL
	help
	  killall sends a signal to all processes running any of the
	  specified commands.  If no signal name is specified, SIGTERM is
	  sent.

config KILLALL5
	bool "killall5"
	default n
	depends on KILL

config PIDOF
	bool "pidof"
	default n
	help
	  Pidof finds the process id's (pids) of the named programs. It prints
	  those id's on the standard output.

config FEATURE_PIDOF_SINGLE
	bool "Enable argument for single shot (-s)"
	default n
	depends on PIDOF
	help
	  Support argument '-s' for returning only the first pid found.

config FEATURE_PIDOF_OMIT
	bool "Enable argument for omitting pids (-o)"
	default n
	depends on PIDOF
	help
	  Support argument '-o' for omitting the given pids in output.
	  The special pid %PPID can be used to name the parent process
	  of the pidof, in other words the calling shell or shell script.

config PS
	bool "ps"
	default n
	help
	  ps gives a snapshot of the current processes.

config FEATURE_PS_WIDE
	bool "Enable argument for wide output (-w)"
	default n
	depends on PS
	help
	  Support argument 'w' for wide output.
	  If given once, 132 chars are printed and given more than
	  one, the length is unlimited.

config RENICE
	bool "renice"
	default n
	help
	  Renice alters the scheduling priority of one or more running
	  processes.

config BB_SYSCTL
	bool "sysctl"
	default n
	help
	  Configure kernel parameters at runtime.

config TOP
	bool "top"
	default n
	help
	  The top program provides a dynamic real-time view of a running
	  system.

config FEATURE_TOP_CPU_USAGE_PERCENTAGE
	bool "Support showing CPU usage percentage (add 2k bytes)"
	default y
	depends on TOP
	help
	  Make top display CPU usage.

config UPTIME
	bool "uptime"
	default n
	help
	  uptime gives a one line display of the current time, how long
	  the system has been running, how many users are currently logged
	  on, and the system load averages for the past 1, 5, and 15 minutes.


endmenu

