export.c
上传用户:wudi5211
上传日期:2010-01-21
资源大小:607k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

C/C++

  1. /*
  2.  * export.c -- export a symbol (maybe a versioned one) (v2.1)
  3.  *
  4.  * Tested with 2.1.43 on the x86 (novers)
  5.  */
  6. #ifndef __KERNEL__
  7. #  define __KERNEL__
  8. #endif
  9. #ifndef MODULE
  10. #  define MODULE
  11. #endif
  12. /* This stuff might go in the Makefile, but I'd better put it here */
  13. #ifndef EXPORT_SYMTAB
  14. #  define EXPORT_SYMTAB /* need this one 'cause we export symbols */
  15. #endif
  16. #include <linux/autoconf.h> /* retrieve the CONFIG_* macros */
  17. #if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS)
  18. #   define MODVERSIONS
  19. #endif
  20. /*
  21.  * Include the versioned definitions for both kernel symbols and our
  22.  * symbol, *unless* we are generating checksums (__GENKSYMS__
  23.  * defined) */
  24. #if defined(MODVERSIONS) && !defined(__GENKSYMS__)
  25. #    include <linux/modversions.h>
  26. #    include "export.ver" /* redefine "export_function" to include CRC */
  27. #endif
  28. /*
  29.  * Everything from now on is normal. The previous stuff can be replaced
  30.  * by "$(CC) -D__KERNEL__ -DMODULE -DMODVERSIONS -DEXPORT_SYMTAB 
  31.  *         -include $(INCLUDEDIR)/linux/modversions.h" if versioning
  32.  * is enabled, and the following (simpler) cmdline for genksyms:
  33.  *    "$(CC) -E -DCONFIG_MODVERSIONS -DEXPORT_SYMTAB"
  34.  */
  35. #define EXPORT_SYMTAB /* Yes, I export a symbol table */
  36. #include <linux/module.h>
  37. #include <linux/sched.h>
  38. #include <linux/kernel.h> /* printk() */
  39. #include <linux/kerneld.h>
  40. #include "sysdep-2.1.h"
  41. /* our dumb function, with two dumb arguments */
  42. int export_function(int a, int b);
  43. #ifdef __USE_OLD_SYMTAB__
  44.     static struct symbol_table export_syms = {
  45.         #include <linux/symtab_begin.h>
  46.         X(export_function),
  47.         #include <linux/symtab_end.h>
  48.     };
  49. #else
  50.     EXPORT_SYMBOL(export_function);
  51. #endif
  52. int init_module(void)
  53. {
  54.     REGISTER_SYMTAB(&export_syms);
  55.     return 0;
  56. }
  57. void cleanup_module(void)
  58. {
  59. }
  60. int export_function(int a, int b)
  61. {return a+b;}