From 962c1cdd2ec223cac5a4cb3e101325a2334e0c90 Mon Sep 17 00:00:00 2001 From: Joey Schulze Date: Wed, 31 Mar 2004 15:47:08 +0000 Subject: [PATCH] Added a private module.h with extracted data from Linux 2.2 to replace which creates a number parse errors. --- CHANGES | 1 + ksym_mod.c | 10 ++++-- module.h | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 module.h diff --git a/CHANGES b/CHANGES index b2974c1..3a367ca 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,7 @@ Version 1.4.2 guaranteed to be available when the child is forked, hence, fixing a race condition. This used to create problems with UML and fast machines. + . local copy of module.h Version 1.4.1 diff --git a/ksym_mod.c b/ksym_mod.c index 6c58803..6a9d0ab 100644 --- a/ksym_mod.c +++ b/ksym_mod.c @@ -78,6 +78,11 @@ * * Tue Sep 12 23:11:13 CEST 2000: Martin Schulze * Changed llseek() to lseek64() in order to skip a libc warning. + * + * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze + * Removed references to since it doesn't work + * anymore with its recent content from Linux 2.4/2.6, created + * module.h locally instead. */ @@ -89,13 +94,12 @@ #include #include #include +#include "module.h" #if !defined(__GLIBC__) #include #include -#include #else /* __GLIBC__ */ #include -#include extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence)); extern int get_kernel_syms __P ((struct kernel_sym *__table)); #endif /* __GLIBC__ */ @@ -109,7 +113,7 @@ extern int get_kernel_syms __P ((struct kernel_sym *__table)); #if !defined(__GLIBC__) /* - * The following bit uses some kernel/library magic to product what + * The following bit uses some kernel/library magic to produce what * looks like a function call to user level code. This function is * actually a system call in disguise. The purpose of the getsyms * call is to return a current copy of the in-kernel symbol table. diff --git a/module.h b/module.h new file mode 100644 index 0000000..f64a4b6 --- /dev/null +++ b/module.h @@ -0,0 +1,90 @@ +/* + module.h - Miscellaneous module definitions + Copyright (c) 1996 Richard Henderson + Copyright (c) 2004 Martin Schulze + + This file is part of the sysklogd package. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +/* ChangeLog: + * + * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze + * Created local copy of module.h based on the content of Linux + * 2.2 since doesn't work anymore with its + * recent content from Linux 2.4/2.6. + */ + +#include + +#define MODULE_NAME_LEN (64 - sizeof(unsigned long)) + +struct kernel_sym +{ + unsigned long value; + char name[MODULE_NAME_LEN]; +}; + + +struct list_head { + struct list_head *next, *prev; +}; + + +struct module_info +{ + unsigned long addr; + unsigned long size; + unsigned long flags; + long usecount; +}; + + +struct module +{ + unsigned long size_of_struct; /* == sizeof(module) */ + struct module *next; + const char *name; + unsigned long size; + + union + { + atomic_t usecount; + long pad; + } uc; /* Needs to keep its size - so says rth */ + + unsigned long flags; /* AUTOCLEAN et al */ + + unsigned nsyms; + unsigned ndeps; + + struct module_symbol *syms; + struct module_ref *deps; + struct module_ref *refs; + int (*init)(void); + void (*cleanup)(void); + const struct exception_table_entry *ex_table_start; + const struct exception_table_entry *ex_table_end; +#ifdef __alpha__ + unsigned long gp; +#endif + /* Members past this point are extensions to the basic + module support and are optional. Use mod_opt_member() + to examine them. */ + const struct module_persist *persist_start; + const struct module_persist *persist_end; + int (*can_unload)(void); +};