6 |
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details. |
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details. |
7 |
*/ |
*/ |
8 |
|
|
9 |
#ifndef __MODUTILS_H__ |
#ifndef MODUTILS_H |
10 |
#define __MODUTILS_H__ |
#define MODUTILS_H 1 |
11 |
|
|
12 |
#include "libbb.h" |
#include "libbb.h" |
|
#include <stdio.h> |
|
13 |
|
|
14 |
#if __GNUC_PREREQ(4,1) |
PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN |
|
# pragma GCC visibility push(hidden) |
|
|
#endif |
|
15 |
|
|
16 |
/* linux/include/linux/module.h has 64, but this is also used |
/* 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 */ |
* internally for the maximum alias name length, which can be quite long */ |
18 |
#define MODULE_NAME_LEN 256 |
#define MODULE_NAME_LEN 256 |
19 |
|
|
|
const char *moderror(int err) FAST_FUNC; |
|
|
llist_t *llist_find(llist_t *first, const char *str) FAST_FUNC; |
|
20 |
void replace(char *s, char what, char with) FAST_FUNC; |
void replace(char *s, char what, char with) FAST_FUNC; |
21 |
char *replace_underscores(char *s) FAST_FUNC; |
char *replace_underscores(char *s) FAST_FUNC; |
22 |
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; |
23 |
char *filename2modname(const char *filename, char *modname) FAST_FUNC; |
char *filename2modname(const char *filename, char *modname) FAST_FUNC; |
24 |
char *parse_cmdline_module_options(char **argv) FAST_FUNC; |
char *parse_cmdline_module_options(char **argv) FAST_FUNC; |
25 |
|
|
26 |
#define INSMOD_OPTS "vq" USE_FEATURE_2_4_MODULES("sLo:fkx") \ |
#define INSMOD_OPTS \ |
27 |
USE_FEATURE_INSMOD_LOAD_MAP("m") |
"vq" \ |
28 |
#define INSMOD_ARGS USE_FEATURE_2_4_MODULES(, &insmod_outputname) |
IF_FEATURE_2_4_MODULES("sLo:fkx") \ |
29 |
|
IF_FEATURE_INSMOD_LOAD_MAP("m") |
30 |
|
|
31 |
|
#define INSMOD_ARGS IF_FEATURE_2_4_MODULES(, NULL) |
32 |
|
|
33 |
enum { |
enum { |
34 |
INSMOD_OPT_VERBOSE = 0x0001, |
INSMOD_OPT_VERBOSE = 0x0001, |
41 |
INSMOD_OPT_NO_EXPORT = 0x0080 * ENABLE_FEATURE_2_4_MODULES, |
INSMOD_OPT_NO_EXPORT = 0x0080 * ENABLE_FEATURE_2_4_MODULES, |
42 |
INSMOD_OPT_PRINT_MAP = 0x0100 * ENABLE_FEATURE_INSMOD_LOAD_MAP, |
INSMOD_OPT_PRINT_MAP = 0x0100 * ENABLE_FEATURE_INSMOD_LOAD_MAP, |
43 |
#if ENABLE_FEATURE_2_4_MODULES |
#if ENABLE_FEATURE_2_4_MODULES |
44 |
#if ENABLE_FEATURE_INSMOD_LOAD_MAP |
# if ENABLE_FEATURE_INSMOD_LOAD_MAP |
45 |
INSMOD_OPT_UNUSED = 0x0200, |
INSMOD_OPT_UNUSED = 0x0200, |
46 |
#else /* ENABLE_FEATURE_INSMOD_LOAD_MAP */ |
# else |
47 |
INSMOD_OPT_UNUSED = 0x0100 |
INSMOD_OPT_UNUSED = 0x0100, |
48 |
#endif |
# endif |
49 |
#else /* ENABLE_FEATURE_2_4_MODULES */ |
#else |
50 |
INSMOD_OPT_UNUSED = 0x0004 |
INSMOD_OPT_UNUSED = 0x0004, |
51 |
#endif |
#endif |
52 |
}; |
}; |
53 |
|
|
54 |
|
#if ENABLE_FEATURE_INSMOD_TRY_MMAP |
55 |
|
void* FAST_FUNC try_to_mmap_module(const char *filename, size_t *image_size_p); |
56 |
|
#else |
57 |
|
# define try_to_mmap_module(filename, image_size) NULL |
58 |
|
#endif |
59 |
|
|
60 |
|
/* Return: |
61 |
|
* 0 on success, |
62 |
|
* -errno on open/read error, |
63 |
|
* errno on init_module() error |
64 |
|
*/ |
65 |
int FAST_FUNC bb_init_module(const char *module, const char *options); |
int FAST_FUNC bb_init_module(const char *module, const char *options); |
66 |
|
/* Return: |
67 |
|
* 0 on success, |
68 |
|
* errno on init_module() error |
69 |
|
*/ |
70 |
int FAST_FUNC bb_delete_module(const char *module, unsigned int flags); |
int FAST_FUNC bb_delete_module(const char *module, unsigned int flags); |
71 |
|
/* Translates error return to a string */ |
72 |
|
const char *moderror(int err) FAST_FUNC; |
73 |
|
|
74 |
#if ENABLE_FEATURE_2_4_MODULES |
#if ENABLE_FEATURE_2_4_MODULES |
|
extern char *insmod_outputname; |
|
|
|
|
75 |
int FAST_FUNC bb_init_module_24(const char *module, const char *options); |
int FAST_FUNC bb_init_module_24(const char *module, const char *options); |
76 |
#endif |
#endif |
77 |
|
|
78 |
#if __GNUC_PREREQ(4,1) |
POP_SAVED_FUNCTION_VISIBILITY |
|
# pragma GCC visibility pop |
|
|
#endif |
|
79 |
|
|
80 |
#endif |
#endif |