这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» 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 跳转至

回复

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