Hi Greg, find my reply inline.
On Sun, Jul 12, 2009 at 11:44 PM, Greg KH <[email protected]> wrote: > On Sun, Jul 12, 2009 at 10:16:17PM +0530, SandeepKsinha wrote: > > Hi, > > to my surprise, > > the sizeof dev_t differs in userspace and kernel. > > Its 8 bytes in userspace and 4bytes in kernel. > > > > I am working on a driver, where I include the headers in both user and > > kernel space. > > And I get wrong values due to the difference in sizes. > > > > How do I handle such a situation ? > > Why would you be passing a dev_t from user to kernel space as a binary > value? > I am not passing a dev_t as a binary from userspace to kernel space. Its a part of the structure. E.g struct device_info { dev_t dev_num; ... .... } > > Why do you want to pass such a value across the boundry in the first > place? > This is pretty much for a custom driver, where I perform the following. 1. Parse the information in user space from a XML file 2. Do a stat on the device, 3. extract the device number 4. Fill in the structure 5. Pass it to the kernel driver using ioctl. Reference: OHSM : http://code.google.com/p/fscops/ > > Could you describe what the problem is you are trying to sove by doing > this? > Its just a part of my implementation. And I wanted to keep this uniform across the system. But having such discrepancies really disappointed me. But I still don't understand the philosophy behind having different sizes for dev_t in user and kernel space. And most importantly, its not documented and it eventually leads to silent corruption. Which is real difficult to trace in complex systems. > > thanks, > > greg k-h > Regards, Sandeep. “To learn is to change. Education is a process that changes the learner.”
