Chinaunix
标题:
请给位给我分析下这个关于linux函数参数顺序问题
[打印本页]
作者:
feiyinziiu
时间:
2009-08-19 21:56
标题:
请给位给我分析下这个关于linux函数参数顺序问题
static int rtc_ioctl(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg)//这个是RTC驱动里ioctl()的定义。
上面是ioctl()定义。
下面是应用程序中对ioctl的调用。
nt fd3, retval;
struct rtc_time tm;
fd3 = open("/dev/misc/rtc",O_RDONLY);
if (fd3< 0)
{
perror("Failed to open magic-key\n");
exit(1);
}
retval = ioctl(fd3, RTC_RD_TIME, &tm);这个地方好奇怪哦
第一,ioctl的参数个数不符合,
第二,参数顺序也不符合。
上面岁magicARM2410 试验箱的代码,运行都没问题。
作者:
llzzccc
时间:
2009-08-19 22:13
是通过系统调用的,内核加入了相应的参数。
作者:
feiyinziiu
时间:
2009-08-19 22:17
标题:
请给位给我分析下这个关于linux函数参数顺序问题
哦?恩,拿参数的顺序问题呢?谢谢
作者:
llzzccc
时间:
2009-08-19 22:28
你说的这个顺序问题是什么问题?不明白。
作者:
feiyinziiu
时间:
2009-08-19 22:33
标题:
请给位给我分析下这个关于linux函数参数顺序问题
你好,谢谢您对我帖子的关注,现在终于弄懂了。
刚刚我说的是在i
在驱动中octl()的参数顺序依次是 struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg
但是应用程序调用时候,用户给ioctl()传递的参数依次是fd3, RTC_RD_TIME, &tm。这些参数类型和上面定义的时候参数类型定义的顺序不一样。
作者:
llzzccc
时间:
2009-08-19 22:41
标题:
回复 #5 feiyinziiu 的帖子
哦,他们俩是不直接打交道的,应用中的是提交个kernel的,然后kernel再调用驱动。所以他们的顺序无关。
作者:
feiyinziiu
时间:
2009-08-19 23:18
标题:
回复 #6 llzzccc 的帖子
恩。感谢你,受益匪浅,由于我是跳专业自学的嵌入式,刚刚起步,可能问的问题很傻,多包涵。
谢谢
作者:
llzzccc
时间:
2009-08-20 00:30
千万别说什么问题傻,有问题就说明有学点,值得人看看,想想。你说的这个问题我只是说了一个大概,其实可以跟一下code,看看具体是怎么调的,那样学的更多。
我也是一个新手,永远的新手。共同努力。
作者:
feiyinziiu
时间:
2009-08-20 01:11
标题:
回复 #8 llzzccc 的帖子
恩,谢谢这位大哥,你的话让我有些感动额。
真诚的说声谢谢。
一直以为论坛里面只有你是“一问一答”的关系,突然发现,论坛里面也有很多感动。
今天去成都的电子市场区买GSM MODEM,去了之后那些商家根本看不上我们,感觉有太多的畏惧,感觉成功好遥远。
不管是处事还是在论坛上,一直都很谨慎,怕别人觉得我技术差,心里有些灰心。
看了大哥的话似乎心里敞开了很多,现在的差,并不代表将来差,学习才是王道。
似乎看到了出头天的日子。
谢谢。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2