关于completion的疑问

chen_chuang_ 2013-01-14 08:48:16
DECLARE_COMPLETION(comp);
ssize_t complete_read (struct file *filp, char __user *buf, size_t count,
loff_t *pos)
{
printk(KERN_DEBUG "process %i (%s) going to sleep\n",current->pid,
current->comm);
wait_for_completion(&comp);
printk(KERN_DEBUG "awoken %i (%s)\n", current->pid, current->comm);
return 0; /* EOF */
}
ssize_t complete_write (struct file *filp, const char __user *buf, size_t
count, loff_t *pos)
{
printk(KERN_DEBUG "process %i (%s) awakening the readers...\n",
current->pid, current->comm);
complete(&comp);
return count; /* succeed, to avoid retrial */
}

过程不是很清楚,我是这样想的:读函数执行到wait for completion后函数睡眠,然后执行写函数,写函数执行到complete后,幻想读函数,继续执行,然后读函数执行完后继续执行写函数,不知道对不对,瞎猜的,还请高手指点
...全文
167 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
对,同步用的
chinalishiming 2013-01-22
  • 打赏
  • 举报
回复
对的,你如果不确定就看日志就行了
zgwstar 2013-01-18
  • 打赏
  • 举报
回复
看这段代码的话应该是这样
chen_chuang_ 2013-01-18
  • 打赏
  • 举报
回复
是ldd里的,学习用
曹大夯 2013-01-15
  • 打赏
  • 举报
回复
代码是从什么地方扣出来的?做什么用的?

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧