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

嵌入式Linux

开发平台:

C/C++

  1. /*
  2.  * master.c -- the master module of a master/slave pair using kerneld
  3.  *
  4.  * Tested with 2.0 on the x86, Sparc
  5.  */
  6. #ifndef __KERNEL__
  7. #  define __KERNEL__
  8. #endif
  9. #ifndef MODULE
  10. #  define MODULE
  11. #endif
  12. /*
  13.  * Inclusions related to version problems. They *might* go after
  14.  * <linux/module.h>, unless a symbol table is exported. All in all,
  15.  * better putting them first anyways.
  16.  */
  17. #include <linux/autoconf.h> /* retrieve the CONFIG_* macros */
  18. #if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS)
  19. #   define MODVERSIONS /* force it on */
  20. #endif
  21. #ifdef MODVERSIONS
  22. #  include <linux/modversions.h>
  23. #endif
  24. #include <linux/module.h>
  25. #ifndef LINUX_VERSION_CODE  /* I don't want compile errors with 1.2 */
  26. #  include <linux/version.h>
  27. #endif
  28. # include "sysdep.h"
  29. #if LINUX_VERSION_CODE < VERSION_CODE(1,3,57)
  30. #  error "This module needs Linux 1.3.57 or newer"
  31. #else
  32. #include <linux/sched.h>
  33. #include <linux/kernel.h> /* printk() */
  34. #include <linux/string.h>
  35. #include <linux/kerneld.h>
  36. int init_module(void)
  37. {
  38.     int r[3]; /* results */
  39.     r[0]=request_module("slave");
  40.     r[1]=request_module("slaveD");
  41.     r[2]=request_module("unexists");
  42.     printk("master: loading results are %i, %i, %in",
  43.            r[0],r[1],r[2]);
  44.     return 0; /* success */
  45. }
  46. void cleanup_module(void)
  47. {
  48.     int r[4]; /* results */
  49.     r[0]=release_module("slave", 1 /* wait */);
  50.     r[1]=release_module("slaveH", 1 /* wait */);
  51.     r[2]=delayed_release_module("slaveD");
  52.     r[3]=release_module("unexists", 1 /* wait */);
  53.     printk("master: unloading results are %i, %i, %i, %in",
  54.            r[0],r[1],r[2],r[3]); 
  55. }
  56. #endif /* 1.3.57 or newer */