这个是应用层默认的open函数定义:int open( const char * pathname,int flags);
这个是驱动程序中一般的open函数的定义:int(*open)(struct inode *inode, struct file *filp)
如下是一个LED点亮的应用层主函数
void main(void)
{
int testdev;
int i;
char buf[10];
testdev = open ("/dev/test",O_RDWR); //这里应该是用的应用层默认的Open函数吧。。。
if(testdev == -1)
{
printf("Cann't open file...../n");
exit(0);
}
printf("buf = 0x%x/n",buf);
read(testdev,buf,10); //成功open以后testdev的值不是为0吗?这里怎么又能够成为file文件描述符呢?
write(testdev,buf,1);
led_ctl.port='G';
led_ctl.bit=5;
led_ctl.value=0;
ioctl(testdev,GPIO_IO_SET_GPG,&led_ctl);
printf("%s",buf);
pause();
close(testdev);
}
我的疑问是:
1.驱动程序中的open函数:int(*open)(struct inode *inode, struct file *filp)
在哪里使用了啊?
2.驱动中的open函数一般是用来做什么的啊?
3.上文代码中,成功open以后testdev的值不是为0吗?这里怎么又能够成为file文件描述符呢?