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

mainmenu_option next_comment
comment 'Module Utilities'


bool 'insmod'	    CONFIG_INSMOD
bool 'lsmod'	    CONFIG_LSMOD
bool 'modprobe'	    CONFIG_MODPROBE
bool 'rmmod'	    CONFIG_RMMOD

if [ "$CONFIG_INSMOD" = "y" ]; then
    comment 'Module support options'
    bool 'Support for older (pre 2.1) Linux kernels'		CONFIG_FEATURE_OLD_MODULE_INTERFACE
    if [ "$CONFIG_FEATURE_OLD_MODULE_INTERFACE" = "n" ] ; then
	    define_bool CONFIG_FEATURE_NEW_MODULE_INTERFACE	y
    fi
    bool 'Support for new (post 2.1) kernels'			CONFIG_FEATURE_NEW_MODULE_INTERFACE
    bool 'Support module version checking'			CONFIG_FEATURE_INSMOD_VERSION_CHECKING
    bool 'Support image in kernel memory optimization (uClinux only)'		CONFIG_FEATURE_INSMOD_LOADINKMEM
fi

if [ "$CONFIG_LSMOD" = "y" ]; then
	if [ "$CONFIG_FEATURE_NEW_MODULE_INTERFACE" = "y" ]; then
		bool 'Support lsmod query_module interface (add 638 bytes)'     CONFIG_FEATURE_QUERY_MODULE_INTERFACE
	fi
fi

endmenu

