天嵌 ARM开发社区

 找回密码
 注册
查看: 1218|回复: 3

求解:fseek中的参数传不到驱动的llseek函数中

[复制链接]
uzmakinaruto 发表于 2013-6-19 02:17:39 | 显示全部楼层 |阅读模式
本帖最后由 uzmakinaruto 于 2013-6-19 02:17 编辑

在写一个memdev的驱动,发现应用程序中的fseek(fd,0,SEEK_SET)中的参数0 传不到驱动函数mem_llseek中。
这个程序是国嵌实验5-1-1的例子,不知道有没有同学有同样的情况,求大神指教。以下是运行截图。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
亚瑟王 发表于 2013-6-19 17:45:31 | 显示全部楼层
亲,没看过这样的实验,就目前提供的信息,没法帮你了。
 楼主| uzmakinaruto 发表于 2013-6-19 19:28:48 | 显示全部楼层
亚瑟王 发表于 2013-6-19 17:45
亲,没看过这样的实验,就目前提供的信息,没法帮你了。

我把程序贴上来麻烦帮我看看吧 我判断到是llseek的offset得不到正确的值但不知道为什么?
应用程序中:
fseek(fp0,0,SEEK_SET);
驱动程序中:
  1. static loff_t mem_llseek(struct file *filp, loff_t offset, int whence)
  2. {
  3.     loff_t newpos=0;

  4.     switch(whence) {
  5.       case 0: /* SEEK_SET */
  6.         {
  7.          printk(KERN_INFO "in seek_set\n");
  8.         newpos = offset;
  9.         break;
  10.          }
  11.       case 1: /* SEEK_CUR */
  12.         newpos = filp->f_pos + offset;
  13.         break;

  14.       case 2: /* SEEK_END */
  15.         newpos = MEMDEV_SIZE -1 + offset;//offset为负数
  16.         break;

  17.       default: /* can't happen */
  18.         return -EINVAL;
  19.     }
  20.     if ((newpos<0) || (newpos>MEMDEV_SIZE))
  21.     {
  22.         printk(KERN_INFO "newpos<0||>MEMDEV_SIZE\n");
  23.             return -EINVAL;
  24.      }
  25.            
  26.     filp->f_pos = newpos;
  27.     return newpos;

  28. }
复制代码
运行结果offset值貌似溢出了,求解
 楼主| uzmakinaruto 发表于 2013-6-19 19:34:50 | 显示全部楼层
我把文件也搬上来了 有空的同学帮我看看吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-7-3 05:31 , Processed in 1.046875 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表