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