On Tue, Dec 27, 2011 at 11:25 PM, Dave Hylands <[email protected]> wrote:
> Hi Chetan, > > On Tue, Dec 27, 2011 at 3:39 AM, Chetan Nanda <[email protected]> > wrote: > > Hi All, > > > > I am facing a strange issue with the ioctl commands, and not able to find > > what wrong I am doing. > > I am trying with a dummy kernel driver and implemented ioctl command as > > follow: > > > > in my_ioctl.h > > #define READHWREG_MAGIC_NUMBER 0x15 > > #define READHWREG_CAM_READPE _IOR(READHWREG_MAGIC_NUMBER, 1, int*) > > > > But the value of 'READHWREG_CAM_READPE' is comes out to be different in > > userspace (in the application) and kernel space (in the driver). > > > > In userspace I used ioctl as > > ... > > printf("\ncommand %x \n",READHWREG_CAM_READPE); <-- command 80041501 > > error = ioctl(g_DevFileId, READHWREG_CAM_READPE); > > .. > > > > In kernel space > > > > int readHwReg_ioctl(struct inode *node, struct file *filp, unsigned int > > cmd, unsigned long arg) > > { > > ... > > printk("\n%d %s cmd = %x\n",__LINE__,__FUNCTION__,cmd); <--- cmd = > > bee6a9d4 > > Back in 2.6.36, the ioctl member of the struct file_operations > structure (which took 4 arguments) was finally deprecated, replaced > with unlocked_ioctl (which only takes 3 arguments). > > If you just renamed and ignored the compiler warnings, then that > explains your problem. > > Thanks Dave for pointing out 'unlocked_ioctl' I come across this link: http://lwn.net/Articles/119652/ -- > Dave Hylands > Shuswap, BC, Canada > http://www.davehylands.com > Thanks, Chetan Nanda
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
