copy_to_user的使用失误.docxVIP

  • 12
  • 0
  • 约6.51千字
  • 约 7页
  • 2017-07-10 发布于河南
  • 举报
copy_to_user的使用失误

copy_to_user的使用失误2011-01-19 15:44copy_to_user是编写驱动时经常遇到的函数这个函数的主要作用就是从内核空间拷贝一块儿数据到用户空间。它有如下三个参数:?????? To 目标地址,这个地址是用户空间的地址;?????? From 源地址,这个地址是内核空间的地址;?????? N 将要拷贝的数据的字节数。如果数据拷贝成功,则返回零;否则,返回没有拷贝成功的数据字节数。让人比较头疼的是平时字符型驱动写习惯了,在read函数中执行完此函数就直接返回了。一直以为用户空间调用read的返回值就是copy_to_user()函数的返回值,今天在看音频驱动的时候发现它的一个用法,一直认为是错的,到现在头脑才清醒一点:copy_to_user()执行完只是表示从内核空间复制了一块数据到用户空间,但是read函数可能还没有执行结束呢。下面是我看到的代码,顺便将4020音频的读写过程梳理一下:static ssize_t sep4020_audio_read(struct file *file, char *buffer,size_t count, loff_t * ppos){?#ifdef DEBUG?printk(audio_read: count=%d\n, count);?#endif??const char *buffer0 = buffer;?

文档评论(0)

1亿VIP精品文档

相关文档