内核模块的注册和注销

Linux的内核模块由module_init()指定在模块加载到内核中时要执行的初始化注册的函数,由module_exit()指定模块从内核中卸载时执行的注销函数。
  下面的代码来自via_rhine.c
  static int __init rhine_init(void)
  {
  /* when a module, this is printed whether or not devices are found in probe */
  #ifdef MODULE
   printk(version);
  #endif
   return pci_register_driver(&rhine_driver);
  }
  static void __exit rhine_cleanup(void)
  {
   pci_unregister_driver(&rhine_driver);
  }
  module_init(rhine_init);
  module_exit(rhine_cleanup);
  再来个8139cp.c中注册和注销的代码
  static int __init cp_init (void)
  {
  #ifdef MODULE
   printk("%s", version);
  #endif
   return pci_register_driver(&cp_driver);
  }
  static void __exit cp_exit (void)
  {
   pci_unregister_driver (&cp_driver);
  }
  module_init(cp_init);
  module_exit(cp_exit);
  还有一个8139too.c里面的
  static int __init rtl8139_init_module (void)
  {
   /* when we're a module, we always print a version message,
   * even if no 8139 board is found.
   */
  #ifdef MODULE
   printk (KERN_INFO RTL8139_DRIVER_NAME "/n");
  #endif
  
   return pci_register_driver(&rtl8139_pci_driver);
  }
  static void __exit rtl8139_cleanup_module (void)
  {
   pci_unregister_driver (&rtl8139_pci_driver);
  }
  module_init(rtl8139_init_module);
  module_exit(rtl8139_cleanup_module);
  都差不多吧!  

你可能感兴趣的:(module,linux)