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

menu "Linux Module Utilities"

config CONFIG_INSMOD
	bool "insmod"
	default n
	help
	  insmod is used to load specified modules in the running kernel.

config CONFIG_FEATURE_OLD_MODULE_INTERFACE
	bool "  Support older (pre 2.1) Linux kernels"
	default n
	depends on CONFIG_INSMOD
	help
	  Provide insmod support for older (pre 2.1) Linux kernels.

if CONFIG_INSMOD && !CONFIG_FEATURE_OLD_MODULE_INTERFACE
    config CONFIG_FEATURE_NEW_MODULE_INTERFACE
	    default y
    comment "  Support new (post 2.1) Linux kernels (Forced enabled)"
endif

if CONFIG_FEATURE_OLD_MODULE_INTERFACE
config CONFIG_FEATURE_NEW_MODULE_INTERFACE
	bool "  Support new (post 2.1) Linux kernels"
	default y
	depends on CONFIG_INSMOD
	help
	  Support module loading for newer (post 2.1) Linux kernels.
endif

config CONFIG_FEATURE_INSMOD_VERSION_CHECKING
	bool "  Module version checking"
	default n
	depends on CONFIG_INSMOD
	help
	  Support checking of versions for modules.  This is used to
	  ensure that the kernel and module are made for each other.

config CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS
	bool "  Add module symbols to kernel symbol table"
	default n
	depends on CONFIG_INSMOD
	help
	  By adding module symbols to the kernel symbol table, Oops messages 
	  occuring within kernel modules can be properly debugged.  By enabling
	  this feature, module symbols will always be added to the kernel symbol 
	  table for properly debugging support.  If you are not interested in
	  Oops messages from kernel modules, say N.

config CONFIG_FEATURE_INSMOD_LOADINKMEM
	bool "  In kernel memory optimization (uClinux only)"
	default n
	depends on CONFIG_INSMOD
	help
	  This is a special uClinux only memory optimization that lets insmod
	  load the specified kernel module directly into kernel space, reducing
	  memory usage by preventing the need for two copies of the module
	  being loaded into memory.

config CONFIG_FEATURE_INSMOD_LOAD_MAP
	bool "  Enable load map (-m) option" 
	default n
	depends on CONFIG_INSMOD
	help
	  Enabling this, one would be able to get a load map
	  output on stdout. This makes kernel module debugging
	  easier.
	  If you don't plan to debug kernel modules, you
	  don't need this option.

config CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL
	bool "  Symbols in load map"
	default y
	depends on CONFIG_FEATURE_INSMOD_LOAD_MAP
	help
	  Without this option, -m will only output section
	  load map.
	  With this option, -m will also output symbols
	  load map.

config CONFIG_LSMOD
	bool "lsmod"
	default n
	help
	  lsmod is used to display a list of loaded modules.

config CONFIG_FEATURE_QUERY_MODULE_INTERFACE
	bool "  Support lsmod query_module interface (add 638 bytes)"
	default y
	depends on CONFIG_LSMOD && CONFIG_FEATURE_NEW_MODULE_INTERFACE
	help
	  This will provide some extra information about each module when
	  running lsmod.  The fields provided are address, size, flags and
	  usage count.

config CONFIG_MODPROBE
	bool "modprobe"
	default n
	help
	  Handle the loading of modules, and their dependancies on a high 
	  level.

config CONFIG_RMMOD
	bool "rmmod"
	default n
	help
	  rmmod is used to unload specified modules from the kernel.

config CONFIG_FEATURE_CHECK_TAINTED_MODULE
	bool "Support tainted module checking with new kernels"
	default y
	depends on CONFIG_INSMOD || CONFIG_LSMOD
	help
	  Support checking for tainted modules.  These are usually binary
	  only modules that will make the linux-kernel list ignore your
	  support request.


endmenu

