<br /><br />需要移植一个现成的应用程序,所以要自己写个关于1335驱动的函数。下面是驱动中的ioctl函数。writecommand是写命令,writdata是写数据。在应用层调用的时候命令和数据都是unsigned char型。在用应用程序测试的时候,好像是没有能够成功调用ioctl函数。高手给指点一二!<br /><br />#define U8 unsigned char<br /><br />static int LCDIoctl(struct inode *inode,struct file * file,unsigned long cmd,unsigned long arg)<br />{<br /> int ret=0;<br /> switch(cmd) <br /> {<br /> case writecommand:<br /> {<br /> U8 pdata;<br /> if(copy_from_user((U8 *)&pdata, (U8*) arg, sizeof(arg)))<br /> {<br /> printk("copy_from_user:error
");<br /> ret = -EFAULT;<br /> }<br /> else<br /> {<br /> printk("writ command
");<br /> LcdWriteCommand(pdata); <br /> }<br /> break; <br /> }<br /> case writedata:<br /> {<br /> U8 pdata;<br /> if(copy_from_user((U8 *)&pdata, (U8*) arg, sizeof(arg)))<br /> {<br /> printk("copy_from_user:error
");<br /> ret = -EFAULT;<br /> }<br /> else<br /> {<br /> printk("writ command
");<br /> LcdWriteData(pdata); <br /> }<br /> break;<br /> <br /> }<br /> default:<br /> return -EINVAL;<br /> }<br /> return ret;<br />}<br />难道是在调用ioctl时候,值传递有问题??<br /> <br /> <br /> |
|