您的位置: 飞扬精品软件园 >> 文章中心 >> 系统教程 >> Linux系统 >> 僵尸进程及其避免方法

相关文章链接

最新新闻资讯

    僵尸进程及其避免方法

    僵尸进程及其避免方法


    • 阅览次数: 文章来源: 原文作者: 整理日期: 2010-07-12

    1、使用新的入口

      必须包含

      module_init(your_init_func);

      module_exit(your_exit_func);

      老版本:int init_module(void);

      void cleanup_module(voi);

      2.4中两种都可以用,对如后面的入口函数不必要显示包含任何头文件。

      2、GPL

      MODULE_LICENSE("Dual BSD/GPL");

      老版本:MODULE_LICENSE("GPL");

      3、模块参数

      必须显式包含

      module_param(name, type, perm);

      module_param_named(name, value, type, perm);

      参数定义

      module_param_string(name, string, len, perm);

      module_param_array(name, type, num, perm);

      老版本:MODULE_Parm(variable,type);

      MODULE_Parm_DESC(variable,type);

      4、模块别名

      MODULE_ALIAS("alias-name");

      这是新增的,在老版本中需在/etc/modules.conf配置,现在在代码中就可以实现。

      5、模块计数

      int try_module_get(&module);

      module_put();

      老版本:MOD_INC_USE_COUNT 和 MOD_DEC_USE_COUNT

      6、符号导出

      只有显示的导出符号才能被其他模块使用,默认不导出所有的符号,不必使用EXPORT_NO_SYMBOLS

      老板本:默认导出所有的符号,除非使用EXPORT_NO_SYMBOLS

      7、内核版本检查

      需要在多个文件中包含时,不必定义__NO_VERSION__

      老版本:在多个文件中包含时,除在主文件外的其他文件中必须定义__NO_VERSION__,防止版本重复定义。

      8、设备号

      kdev_t被废除不可用,新的dev_t拓展到了32位,12位主设备号,20位次设备号。

      unsigned int iminor(struct inode *inode);

      unsigned int imajor(struct inode *inode);

      老版本:8位主设备号,8位次设备号

      int MAJOR(kdev_t dev);

      int MINOR(kdev_t dev);

      9、内存分配头文件变更

      所有的内存分配函数包含在头文件,而原来的不存在

      老版本:内存分配函数包含在头文件

      10、结构体的初试化

      gcc开始采用ANSI C的struct结构体的初始化形式:

      static struct some_structure = {

      .field1 = value,

      .field2 = value,

      ...

      };

      老版本:非标准的初试化形式

      static struct some_structure = {

      field1: value,

      field2: value,

      ...

      };

      11、用户模式帮助器

      int call_usermodehelper(char *path, char **argv, char **envp,

      int wait);

      新增wait参数

      12、request_module()

      request_module("foo-device-%d", number);

      老版本:

      char module_name[32];

      printf(module_name, "foo-device-%d", number);

      request_module(module_name);

      13、dev_t引发的字符设备的变化

      1、取主次设备号为

      unsigned iminor(struct inode *inode);

      unsigned imajor(struct inode *inode);

      2、老的register_chrdev()用法没变,保持向后兼容,但不能访问设备号大于256的设备。

      3、新的接口为

      a)注册字符设备范围

      int register_chrdev_region(dev_t from, unsigned count, char *name);

      b)动态申请主设备号

      int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, char *name);

      看了这两个函数郁闷吧^_^!怎么和file_operations结构联系起来啊?别急!

      c)包含 ,利用struct cdev和file_operations连接

      struct cdev *cdev_alloc(void);

      void cdev_init(struct cdev *cdev, struct file_operations *fops);

      int cdev_add(struct cdev *cdev, dev_t dev, unsigned count);

      (分别为,申请cdev结构,和fops连接,将设备加入到系统中!好复杂啊!)

      d)void cdev_del(struct cdev *cdev);

      只有在cdev_add执行成功才可运行。

      e)辅助函数

      kobject_put(&cdev->kobj);

      struct kobject *cdev_get(struct cdev *cdev);

      void cdev_put(struct cdev *cdev);

      这一部分变化和新增的/sys/dev有一定的关联。

    [1] [2] [3] [4]


查看所有评论

网友对僵尸进程及其避免方法 的评论

网名:
主题:
内容:
验证码: