diff options
author | Waldemar Brodkorb | 2016-12-26 20:07:59 +0100 |
---|---|---|
committer | Denys Vlasenko | 2017-01-04 13:32:09 +0100 |
commit | 9c083f599a9924ad04855ce94439598e75424ad9 (patch) | |
tree | 4f58bc8eb271a5538a6d6ad82a9af9e1540ba5c7 | |
parent | 9529115c4ce87d4faecd1c55e547162efe74d629 (diff) | |
download | busybox-9c083f599a9924ad04855ce94439598e75424ad9.zip busybox-9c083f599a9924ad04855ce94439598e75424ad9.tar.gz |
modutils: remove special handling of uClibc
Commit 3a45b87ac36f (modutils: support finit_module syscall) introduced
macro finit_module. But it is not defined for uClibc.
The compilation for busybox fails for MIPS with:
With uClibc, we get following build errors:
modutils/lib.a(modutils.o): In function `bb_init_module':
modutils.c:(.text.bb_init_module+0x94): undefined reference to `finit_module'
modutils.c:(.text.bb_init_module+0xa0): undefined reference to `finit_module'
We can just use syscall() without any need for the
uClibc wrappers.
Newer versions of uClibc-ng (>1.0.20) will remove the
module syscall wrappers.
Found via Buildroot autobuilders:
http://autobuild.buildroot.net/results/556/55655daef23788fb3967f801ec8b79e9bed7122b/build-end.log
function old new delta
bb_delete_module 26 32 +6
bb_init_module 90 95 +5
delete_module 37 - -37
init_module 53 - -53
------------------------------------------------------------------------------
(add/remove: 0/4 grow/shrink: 2/0 up/down: 11/-90) Total: -79 bytes
Reported-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | modutils/modprobe-small.c | 4 | ||||
-rw-r--r-- | modutils/modutils.c | 16 |
2 files changed, 8 insertions, 12 deletions
diff --git a/modutils/modprobe-small.c b/modutils/modprobe-small.c index 652ff4d..0fc9ea4 100644 --- a/modutils/modprobe-small.c +++ b/modutils/modprobe-small.c @@ -39,8 +39,8 @@ #include <fnmatch.h> #include <sys/syscall.h> -extern int init_module(void *module, unsigned long len, const char *options); -extern int delete_module(const char *module, unsigned flags); +#define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts) +#define delete_module(mod, flags) syscall(__NR_delete_module, mod, flags) #ifdef __NR_finit_module # define finit_module(fd, uargs, flags) syscall(__NR_finit_module, fd, uargs, flags) #endif diff --git a/modutils/modutils.c b/modutils/modutils.c index d36caaf..4204f06 100644 --- a/modutils/modutils.c +++ b/modutils/modutils.c @@ -7,17 +7,13 @@ */ #include "modutils.h" -#ifdef __UCLIBC__ -extern int init_module(void *module, unsigned long len, const char *options); -extern int delete_module(const char *module, unsigned int flags); -#else -# include <sys/syscall.h> -# define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts) -# if defined(__NR_finit_module) -# define finit_module(fd, uargs, flags) syscall(__NR_finit_module, fd, uargs, flags) -# endif -# define delete_module(mod, flags) syscall(__NR_delete_module, mod, flags) +#include <sys/syscall.h> + +#define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts) +#if defined(__NR_finit_module) +# define finit_module(fd, uargs, flags) syscall(__NR_finit_module, fd, uargs, flags) #endif +#define delete_module(mod, flags) syscall(__NR_delete_module, mod, flags) static module_entry *helper_get_module(module_db *db, const char *module, int create) { |