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

menu "Process Utilities"

config 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 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 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 CONFIG_KILLALL
	bool "killall"
	default n
	depends on CONFIG_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 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 CONFIG_FEATURE_PIDOF_SINGLE
	bool "Enable argument for single shot (-s)"
	default n
	depends on CONFIG_PIDOF
	help
	  Support argument '-s' for returning only the first pid found.

config CONFIG_FEATURE_PIDOF_OMIT
	bool "Enable argument for omitting pids (-o)"
	default n
	depends on CONFIG_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 CONFIG_PS
	bool "ps"
	default n
	help
	  ps gives a snapshot of the current processes.

config CONFIG_FEATURE_PS_WIDE
	bool "Enable argument for wide output (-w)"
	default n
	depends on CONFIG_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 CONFIG_RENICE
	bool "renice"
	default n
	help
	  Renice alters the scheduling priority of one or more running
	  processes.

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

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

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

config 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

