source: MondoRescue/branches/3.3/mindi-busybox/modutils/modutils.h@ 3865

Last change on this file since 3865 was 3621, checked in by Bruno Cornec, 10 years ago

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

  • Property svn:eol-style set to native
File size: 3.2 KB
RevLine 
[2725]1/*
2 * Common modutils related functions for busybox
3 *
4 * Copyright (C) 2008 by Timo Teras <timo.teras@iki.fi>
5 *
6 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
7 */
8
9#ifndef MODUTILS_H
10#define MODUTILS_H 1
11
12#include "libbb.h"
13
14PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
15
16/* linux/include/linux/module.h has 64, but this is also used
17 * internally for the maximum alias name length, which can be quite long */
18#define MODULE_NAME_LEN 256
[3621]19#define MODULE_HASH_SIZE 256
[2725]20
[3621]21typedef struct module_entry {
22 struct module_entry *next;
23 char *name, *modname;
24 llist_t *deps;
25 IF_MODPROBE(
26 llist_t *realnames;
27 unsigned flags;
28 const char *probed_name; /* verbatim as seen on cmdline */
29 char *options; /* options from config files */
30 )
31 IF_DEPMOD(
32 llist_t *aliases;
33 llist_t *symbols;
34 struct module_entry *dnext, *dprev;
35 )
36} module_entry;
37
38typedef struct module_db {
39 module_entry *buckets[MODULE_HASH_SIZE];
40} module_db;
41
42#define moddb_foreach_module(db, module, index) \
43 for ((index) = 0; (index) < MODULE_HASH_SIZE; (index)++) \
44 for (module = (db)->buckets[index]; module; module = module->next)
45
46module_entry *moddb_get(module_db *db, const char *s) FAST_FUNC;
47module_entry *moddb_get_or_create(module_db *db, const char *s) FAST_FUNC;
48void moddb_free(module_db *db) FAST_FUNC;
49
[2725]50void replace(char *s, char what, char with) FAST_FUNC;
51char *replace_underscores(char *s) FAST_FUNC;
52int string_to_llist(char *string, llist_t **llist, const char *delim) FAST_FUNC;
53char *filename2modname(const char *filename, char *modname) FAST_FUNC;
[3232]54char *parse_cmdline_module_options(char **argv, int quote_spaces) FAST_FUNC;
[2725]55
56/* insmod for 2.4 and modprobe's options (insmod 2.6 has no options at all): */
57#define INSMOD_OPTS \
58 "vqs" \
59 IF_FEATURE_2_4_MODULES("Lfkx" IF_FEATURE_INSMOD_LOAD_MAP("m"))
60#define INSMOD_ARGS /* (was meant to support -o NAME) , NULL */
61
62enum {
63 INSMOD_OPT_VERBOSE = (1 << 0),
64 INSMOD_OPT_SILENT = (1 << 1),
65 INSMOD_OPT_SYSLOG = (1 << 2),
66 //INSMOD_OPT_OUTPUTNAME = (1 << x) - not supported yet
67 INSMOD_OPT_LOCK = (1 << 3) * ENABLE_FEATURE_2_4_MODULES,
68 INSMOD_OPT_FORCE = (1 << 4) * ENABLE_FEATURE_2_4_MODULES,
69 INSMOD_OPT_KERNELD = (1 << 5) * ENABLE_FEATURE_2_4_MODULES,
70 INSMOD_OPT_NO_EXPORT = (1 << 6) * ENABLE_FEATURE_2_4_MODULES,
71 INSMOD_OPT_PRINT_MAP = (1 << 7) * ENABLE_FEATURE_INSMOD_LOAD_MAP,
72 INSMOD_OPT_UNUSED =
73 (INSMOD_OPT_PRINT_MAP ? INSMOD_OPT_PRINT_MAP
74 : INSMOD_OPT_NO_EXPORT ? INSMOD_OPT_NO_EXPORT
75 : INSMOD_OPT_SYSLOG
76 ) << 1
77};
78
79#if ENABLE_FEATURE_INSMOD_TRY_MMAP
80void* FAST_FUNC try_to_mmap_module(const char *filename, size_t *image_size_p);
81#else
82# define try_to_mmap_module(filename, image_size) NULL
83#endif
84
85/* Return:
86 * 0 on success,
87 * -errno on open/read error,
88 * errno on init_module() error
89 */
90int FAST_FUNC bb_init_module(const char *module, const char *options);
91/* Return:
92 * 0 on success,
93 * errno on init_module() error
94 */
95int FAST_FUNC bb_delete_module(const char *module, unsigned int flags);
96/* Translates error return to a string */
97const char *moderror(int err) FAST_FUNC;
98
99#if ENABLE_FEATURE_2_4_MODULES
100int FAST_FUNC bb_init_module_24(const char *module, const char *options);
101#endif
102
103POP_SAVED_FUNCTION_VISIBILITY
104
105#endif
Note: See TracBrowser for help on using the repository browser.