Is it different? let us see the typedef about this two. user space: unsigned long int kernel space : typedef __u32 __kernel_dev_t; typedef __kernel_dev_t dev_t; "long int " in 64bit cpu should be 8 bytes So i think in 32 bit cpu they are same,and if your kernel compile for 32 and user space configuration for 64..... Is it the problem ? BRs, Lin 2009/7/13 SandeepKsinha <sandeepksinha@xxxxxxxxx>: > Hi Greg, > > find my reply inline. > > On Sun, Jul 12, 2009 at 11:44 PM, Greg KH <greg@xxxxxxxxx> 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.” > -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ