免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1536 | 回复: 3
打印 上一主题 下一主题

ldd3的complete简单例子问题--cat completion不知道怎么执行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-14 09:23 |只看该作者 |倒序浏览
最近在看ldd3, 看到complete的时候参考如下博客:
http://hi.baidu.com/phenix_yw/blog/item/4757f6243dcd83004c088dd9.html/cmtid/6ccf41df4bc1a01849540387
我的代码是complete.c:
  1. #include <linux/module.h>

  2. #include <linux/init.h>



  3. #include <linux/sched.h>

  4. #include <linux/kernel.h>

  5. #include <linux/fs.h>

  6. #include <linux/types.h>

  7. #include <linux/completion.h>



  8. MODULE_LICENSE("Dual BSD/GPL");



  9. static int complete_major = 0;



  10. struct completion comp;

  11. DELCARE_COMPLETION(comp);



  12. ssize_t complete_read (struct file *filp, char __user *buf, size_t count, loff_t *pos)

  13. {

  14.     printk(KERN_DEBUG "process %i (%s) going to sleep\n",

  15.             current->pid, current->comm);

  16.     wait_for_completion(&comp);

  17.     printk(KERN_DEBUG "awoken %i (%s)\n", current->pid, current->comm);

  18.     return 0;

  19. }



  20. ssize_t complete_write(struct file *filp, const char __user *buf, size_t count, loff_t *pos)

  21. {

  22.     printk(KERN_DEBUG "process %i (%s) awakening the readers...\n",

  23.             current->pid, current->comm);

  24.     complete(&comp);

  25.     return count;

  26. }



  27. struct file_operations complete_fops = {

  28.     .owner = THIS_MODULE,

  29.     .read = complete_read,

  30.     .write = complete_write,

  31. };



  32. int complete_init(void)

  33. {

  34.     int result;



  35.     result = register_chrdev(complete_major, "complete", &complete_fops);

  36.     if (result < 0)

  37.     {

  38.         return result;

  39.     }

  40.     if (complete_major == 0)

  41.     {

  42.         complete_major = result;

  43.     }

  44.     return 0;

  45. }



  46. void complete_cleanup(void)

  47. {

  48.     unregister_chrdev(complete_major, "complete");

  49. }



  50. module_init(complete_init);

  51. module_exit(complete_cleanup);
复制代码


Makefile是bj-m :=complete.o
  1. default:
  2.     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
  3. clean:
  4.     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
复制代码


编译成功后安装模块成功:
  1. #cat /proc/modules |grep complete
  2. complete 1936 0 - Live 0xf8202000
复制代码

但是再开一个终端尝试执行cat completion的时候却失败拉。。。说:
  1. #cat completion
  2. cat: completion: No such file or directory
复制代码

请问有人遇到过这种情况吗?谢谢

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2009-11-14 09:39 |只看该作者
没有mknod吧?
参考一下ldd3

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2009-11-14 09:57 |只看该作者
嗯,字符设备的话,需要mknod创建的

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
4 [报告]
发表于 2009-11-14 14:08 |只看该作者
ldd3中有脚本帮你创建设备文件
lz可以看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP