insmod: clarify module_name / file_name distinction

This commit is contained in:
Denis Vlasenko 2008-11-22 18:29:01 +00:00
parent cc5feabeba
commit 36309cf3f4
4 changed files with 23 additions and 11 deletions

View File

@ -1864,8 +1864,12 @@
"\ninotifyd waits for PROG to exit." \ "\ninotifyd waits for PROG to exit." \
"\nWhen x event happens for all FILEs, inotifyd exits" \ "\nWhen x event happens for all FILEs, inotifyd exits" \
/* 2.6 style insmod has no options and required filename
* (not module name - .ko can't be omitted) */
#define insmod_trivial_usage \ #define insmod_trivial_usage \
USE_FEATURE_2_4_MODULES("[OPTION]... ") "MODULE [symbol=value]..." USE_FEATURE_2_4_MODULES("[OPTION]... MODULE ") \
SKIP_FEATURE_2_4_MODULES("FILE ") \
"[symbol=value]..."
#define insmod_full_usage "\n\n" \ #define insmod_full_usage "\n\n" \
"Load the specified kernel modules into the kernel" \ "Load the specified kernel modules into the kernel" \
USE_FEATURE_2_4_MODULES( "\n" \ USE_FEATURE_2_4_MODULES( "\n" \

View File

@ -16,9 +16,17 @@ int insmod_main(int argc UNUSED_PARAM, char **argv)
char *filename; char *filename;
int rc; int rc;
/* Compat note:
* 2.6 style insmod has no options and required filename
* (not module name - .ko can't be omitted).
* 2.4 style insmod can take module name without .ko
* and performs module search in default directories
* or in $MODPATH.
*/
USE_FEATURE_2_4_MODULES( USE_FEATURE_2_4_MODULES(
getopt32(argv, INSMOD_OPTS INSMOD_ARGS); getopt32(argv, INSMOD_OPTS INSMOD_ARGS);
argv += optind-1; argv += optind - 1;
); );
filename = *++argv; filename = *++argv;

View File

@ -3810,7 +3810,7 @@ static void print_load_map(struct obj_file *f UNUSED_PARAM)
} }
#endif #endif
int FAST_FUNC bb_init_module_24(const char *m_filename, const char *options UNUSED_PARAM) int FAST_FUNC bb_init_module_24(const char *m_filename, const char *options)
{ {
int k_crcs; int k_crcs;
unsigned long m_size; unsigned long m_size;
@ -3906,13 +3906,13 @@ int FAST_FUNC bb_init_module_24(const char *m_filename, const char *options UNUS
m_addr = create_module(m_name, m_size); m_addr = create_module(m_name, m_size);
if (m_addr == (ElfW(Addr))(-1)) switch (errno) { if (m_addr == (ElfW(Addr))(-1)) switch (errno) {
case EEXIST: case EEXIST:
bb_error_msg_and_die("a module named %s already exists", m_name); bb_error_msg_and_die("a module named %s already exists", m_name);
case ENOMEM: case ENOMEM:
bb_error_msg_and_die("can't allocate kernel memory for module; needed %lu bytes", bb_error_msg_and_die("can't allocate kernel memory for module; needed %lu bytes",
m_size); m_size);
default: default:
bb_perror_msg_and_die("create_module: %s", m_name); bb_perror_msg_and_die("create_module: %s", m_name);
} }
#if !LOADBITS #if !LOADBITS

View File

@ -23,7 +23,7 @@ const char *moderror(int err) FAST_FUNC;
llist_t *llist_find(llist_t *first, const char *str) FAST_FUNC; llist_t *llist_find(llist_t *first, const char *str) FAST_FUNC;
void replace(char *s, char what, char with) FAST_FUNC; void replace(char *s, char what, char with) FAST_FUNC;
char *replace_underscores(char *s) FAST_FUNC; char *replace_underscores(char *s) FAST_FUNC;
int string_to_llist(char *string, llist_t **llist, const char *delim) FAST_FUNC ; int string_to_llist(char *string, llist_t **llist, const char *delim) FAST_FUNC;
char *filename2modname(const char *filename, char *modname) FAST_FUNC; char *filename2modname(const char *filename, char *modname) FAST_FUNC;
char *parse_cmdline_module_options(char **argv) FAST_FUNC; char *parse_cmdline_module_options(char **argv) FAST_FUNC;