patch-2.3.13 linux/include/linux/init.h
Next file: linux/include/linux/ioport.h
Previous file: linux/include/linux/if_shaper.h
Back to the patch index
Back to the overall index
- Lines: 86
- Date:
Fri Aug 6 11:56:54 1999
- Orig file:
v2.3.12/linux/include/linux/init.h
- Orig date:
Sun Dec 27 23:08:10 1998
diff -u --recursive --new-file v2.3.12/linux/include/linux/init.h linux/include/linux/init.h
@@ -48,18 +48,83 @@
*/
#ifndef MODULE
-#include <asm/init.h>
+
+#ifndef __ASSEMBLY__
+
+/*
+ * Used for initialization calls..
+ */
+typedef int (*initcall_t)(void);
+
+extern initcall_t __initcall_start, __initcall_end;
+
+#define __initcall(fn) \
+ static initcall_t __initcall_##fn __init_call = fn
+
+/*
+ * Used for kernel command line parameter setup
+ */
+struct kernel_param {
+ const char *str;
+ int (*setup_func)(char *);
+};
+
+extern struct kernel_param __setup_start, __setup_end;
+
+#define __setup(str, fn) \
+ static char __setup_str_##fn[] __initdata = str; \
+ static struct kernel_param __setup_##fn __initsetup = { __setup_str_##fn, fn }
+
+#endif /* __ASSEMBLY__ */
+
+/*
+ * Mark functions and data as being only used at initialization
+ * or exit time.
+ */
+#define __init __attribute__ ((__section__ (".text.init")))
+#define __exit __attribute__ ((unused, __section__(".text.init")))
+#define __initdata __attribute__ ((__section__ (".data.init")))
+#define __exitdata __attribute__ ((unused, __section__ (".data.init")))
+#define __initsetup __attribute__ ((unused,__section__ (".setup.init")))
+#define __init_call __attribute__ ((unused,__section__ (".initcall.init")))
+
+#define __initfunc(__arginit) \
+ __arginit __init; \
+ __arginit
+
+/* For assembly routines */
+#define __INIT .section ".text.init","ax"
+#define __FINIT .previous
+#define __INITDATA .section ".data.init","aw"
+
+#define module_init(x) __initcall(x);
+#define module_exit(x) /* nothing */
+
#else
+
#define __init
+#define __exit
#define __initdata
+#define __exitdata
#define __initfunc(__arginit) __arginit
+#define __initcall
/* For assembly routines */
#define __INIT
#define __FINIT
#define __INITDATA
+
+/* Not sure what version aliases were introduced in, but certainly in 2.95. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+#define module_init(x) int init_module(void) __attribute__((alias(#x)));
+#define module_exit(x) void cleanup_module(void) __attribute__((alias(#x)));
+#else
+#define module_init(x) int init_module(void) { return x(); }
+#define module_exit(x) void cleanup_module(void) { x(); }
+#endif
+
#endif
-#if __GNUC__ >= 2 && __GNUC_MINOR__ >= 8
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
#define __initlocaldata __initdata
#else
#define __initlocaldata
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)