这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教:Linux驱动程序中的llseek函数

共1条 1/1 1 跳转至

请教:Linux驱动程序中的llseek函数

菜鸟
2008-07-24 10:01:55     打赏

在Linux下写了一个存储器的驱动程序,需要对这个存储器进行片内寻址(片内地址为16位,分为高8位和低8位两段),用llseek函数实现。

static loff_t   llseek (struct  file* mfile,  loff_t  offset,  int  origint )
{
      u8 addrMSB, addrLSB;

      printk ( "offset = 0x%x \n", offset);     
      addrMSB = (offset >> 8) & 0xff ;
      addrLSB = offset & 0xff;
      printk("addrMSB = 0x%x, addrLSB = 0x%x \n", addrMSB, addrLSB);

}

不知道为什么,打印offset正常,但addrMSB 和addrLSB却不对。
在应用程序中,打开设备后,第一次调用llseek(fd,0,0), 打印offset为0,addrMSB = 0x0, addrLSB = 0x1;
再调用一次llseek(fd,0,0), 打印offset为0,addrMSB = 0xbd, addrLSB = 0x98;

是什么原因导致在驱动程序中,无法取到offset值呢,是内核空间与用户空间赋值的问题吗?
第一次做Linux的驱动,请高手指点一下,非常感谢。




关键词: 请教     Linux     驱动程序     中的     llseek         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]