summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--insmod.c8
-rw-r--r--libbb/module_syscalls.c30
-rw-r--r--modutils/insmod.c8
3 files changed, 35 insertions, 11 deletions
diff --git a/insmod.c b/insmod.c
index c2ebd2e..abd639c 100644
--- a/insmod.c
+++ b/insmod.c
@@ -117,7 +117,7 @@
#ifndef MODUTILS_MODULE_H
static const int MODUTILS_MODULE_H = 1;
-#ident "$Id: insmod.c,v 1.55 2001/04/05 06:08:14 andersen Exp $"
+#ident "$Id: insmod.c,v 1.56 2001/04/05 06:24:27 andersen Exp $"
/* This file contains the structures used by the 2.0 and 2.1 kernels.
We do not use the kernel headers directly because we do not wish
@@ -267,7 +267,7 @@ static const int NEW_MOD_AUTOCLEAN = 4;
static const int NEW_MOD_VISITED = 8;
static const int NEW_MOD_USED_ONCE = 16;
-int new_sys_init_module(const char *name, const struct new_module *);
+int init_module(const char *name, const struct new_module *);
int query_module(const char *name, int which, void *buf, size_t bufsize,
size_t *ret);
@@ -323,7 +323,7 @@ int delete_module(const char *);
#ifndef MODUTILS_OBJ_H
static const int MODUTILS_OBJ_H = 1;
-#ident "$Id: insmod.c,v 1.55 2001/04/05 06:08:14 andersen Exp $"
+#ident "$Id: insmod.c,v 1.56 2001/04/05 06:24:27 andersen Exp $"
/* The relocatable object is manipulated using elfin types. */
@@ -2515,7 +2515,7 @@ new_init_module(const char *m_name, struct obj_file *f,
image = xmalloc(m_size);
obj_create_image(f, image);
- ret = new_sys_init_module(m_name, (struct new_module *) image);
+ ret = init_module(m_name, (struct new_module *) image);
if (ret)
perror_msg("init_module: %s", m_name);
diff --git a/libbb/module_syscalls.c b/libbb/module_syscalls.c
index d0c1a36..87662ff 100644
--- a/libbb/module_syscalls.c
+++ b/libbb/module_syscalls.c
@@ -31,9 +31,33 @@
#include <asm/unistd.h>
#include "libbb.h"
-#define __NR_new_sys_init_module __NR_init_module
-_syscall2(int, new_sys_init_module, const char *, name,
- const struct new_module *, info);
+
+struct old_module_ref
+{
+ unsigned long module; /* kernel addresses */
+ unsigned long next;
+};
+
+struct old_module_symbol
+{
+ unsigned long addr;
+ unsigned long name;
+};
+
+struct old_symbol_table
+{
+ int size; /* total, including string table!!! */
+ int n_symbols;
+ int n_refs;
+ struct old_module_symbol symbol[0]; /* actual size defined by n_symbols */
+ struct old_module_ref ref[0]; /* actual size defined by n_refs */
+};
+
+struct old_mod_routines
+{
+ unsigned long init;
+ unsigned long cleanup;
+};
#define __NR_old_sys_init_module __NR_init_module
_syscall5(int, old_sys_init_module, const char *, name, char *, code,
diff --git a/modutils/insmod.c b/modutils/insmod.c
index c2ebd2e..abd639c 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -117,7 +117,7 @@
#ifndef MODUTILS_MODULE_H
static const int MODUTILS_MODULE_H = 1;
-#ident "$Id: insmod.c,v 1.55 2001/04/05 06:08:14 andersen Exp $"
+#ident "$Id: insmod.c,v 1.56 2001/04/05 06:24:27 andersen Exp $"
/* This file contains the structures used by the 2.0 and 2.1 kernels.
We do not use the kernel headers directly because we do not wish
@@ -267,7 +267,7 @@ static const int NEW_MOD_AUTOCLEAN = 4;
static const int NEW_MOD_VISITED = 8;
static const int NEW_MOD_USED_ONCE = 16;
-int new_sys_init_module(const char *name, const struct new_module *);
+int init_module(const char *name, const struct new_module *);
int query_module(const char *name, int which, void *buf, size_t bufsize,
size_t *ret);
@@ -323,7 +323,7 @@ int delete_module(const char *);
#ifndef MODUTILS_OBJ_H
static const int MODUTILS_OBJ_H = 1;
-#ident "$Id: insmod.c,v 1.55 2001/04/05 06:08:14 andersen Exp $"
+#ident "$Id: insmod.c,v 1.56 2001/04/05 06:24:27 andersen Exp $"
/* The relocatable object is manipulated using elfin types. */
@@ -2515,7 +2515,7 @@ new_init_module(const char *m_name, struct obj_file *f,
image = xmalloc(m_size);
obj_create_image(f, image);
- ret = new_sys_init_module(m_name, (struct new_module *) image);
+ ret = init_module(m_name, (struct new_module *) image);
if (ret)
perror_msg("init_module: %s", m_name);