黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 操作系统 >> LINIX UNIX >> 正文
·完美空间提供500M免费AS04-10·企业安全之YY内网准入以04-09
·企业安全之意识与策略04-09·剑走偏锋:IIS漏洞利用04-09
·我来免费网提供100M免费04-09·1122mb.com提供20G超大免04-08
·映像劫持与反劫持技术04-07·让所有"暴力删除工具"无04-07
·入侵88red系统的详细过程04-07·Sql Injection脚本注入终04-07
·vbs+delphi 反弹后门生成04-07·飞讯网提供100MB免费PHP04-07
·突破SQL注入攻击时输入框04-04·结合内核和病毒技术的最04-04
·Real Player rmoc3260.d04-04·亿万网络今月最后为您提04-04
·php+mysql 5 sql inject04-03·Real Player rmoc3260.d04-03
·oblog文件下载漏洞04-03·免费啦提供1G-2G免费全能04-03
·完全解析网页后门和挂马04-02·一句话开3389(只测试过04-02
·萧萧免费空间网提供100M04-02·谷道免费空间网提供1G免04-01
·从本地入手解决双线路由03-31·sablog 1.6 多个跨站漏洞03-31
·富文本编辑器的跨站脚本03-31·Cookie注入是怎样产生的03-31
[推荐]内核操作 Linux2.6内核驱动移植参考
      ★★★★★

内核操作 Linux2.6内核驱动移植参考

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-5-6 9:58:41

 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)包含 <linux/cdev.h>,利用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有一定的关联。

  14、新增对/proc的访问操作

  <linux/seq_file.h>

  以前的/proc中只能得到string, seq_file操作能得到如long等多种数据。

  相关函数:

  static struct seq_operations 必须实现这个类似file_operations得数据中得各个成

  员函数。

  seq_printf();

  int seq_putc(struct seq_file *m, char c);

  int seq_puts(struct seq_file *m, const char *s);

  int seq_escape(struct seq_file *m, const char *s, const char *esc);

  int seq_path(struct seq_file *m, struct vfsmount *mnt,

  struct dentry *dentry, char *esc);

  seq_open(file, &ct_seq_ops);

 

上一页  [1] [2] [3] [4] [5] 下一页

文章录入:liult    责任编辑:liult 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886