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

您现在的位置: 黑客风云 >> 黑客文章 >> 操作系统 >> LINIX UNIX >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]入门文章:教你学会编写Linux设备驱动
      ★★★

入门文章:教你学会编写Linux设备驱动

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-6-28 9:22:08

  printk ("Hi, This' A Simple Device File!\n");

  asdf_major = register_chrdev (0, "A Simple Device File", &asdf_fops); /* 申请字符设备的主设备号 */

  if (asdf_major < 0) return asdf_major; /* 申请失败就直接返回错误编号 */

  printk ("The major is:%d\n", asdf_major); /* 显示申请到的主设备号 */

  return 0; /* 模块正常初始化 */

  }

  static void

  cleanup_module

  (){

  unregister_chrdev(asdf_major, "A Simple Device File"); /* 注销以后,设备就不存在了 */

  printk("A Simple Device has been removed,Bye!\n");

  }

  /*

  * 编译这个模块然后加载它,

  * 如果正常,会显示你的设备的主设备号。

  * 现在你的设备就建立好了,我们可以测试一下。

  * 假设你的模块申请到的主设备号是254,

  * 运行"mknod abc c 254 0",就建立了我们的设备文件abc。

  * 可以把它当成一个4096字节的内存块来测试一下,

  * 比如"cat abc", "cp abc image", "cp image abc",

  * 或写几个应用程序用它来进行通讯。

  * 介绍一下两个需要注意的事,

  * 一是printk()的显示只有在非图形模式的终端下才能看到,

  * 二是加载过的模块最好在不用以后卸载掉。

  * 如果对Linux环境的系统调用很陌生,建议先看APUE这本书。

  */

  static int

  asdf_open /* open回调 */

  (

  struct inode *inode,

  struct file *filp

  ){

  printk("^_^ : open %s\n ",\

  current->comm);

  /*

  * 应用程序的运行环境由内核提供,内核的运行环境由硬件提供。

  * 这里的current是一个指向当前进程的指针,

  * 现在没必要了解current的细节。

  * 在这里,当前进程正打开这个设备,

  * 返回0表示打开成功,内核会给它一个文件描述符。

  * 这里的comm是当前进程在Shell下的command字符串。

  */

  return 0;

  }

  static int

  asdf_release /* close回调 */

  (

  struct inode *inode,

  struct file *filp

  ){

  printk("^_^ : close\n ");

  return 0;

  }

  static ssize_t

  asdf_read /* read回调 */

  (

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

文章录入:sygbox    责任编辑:sygbox 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886