Hi Vishal, On Sun, Jul 3, 2011 at 5:09 AM, Vishal Thanki <vishalthanki@gmail.com> wrote:
Hi,
We use copy_from_user/copy_to_user functions to copy data transfer user data between user space and kernel space. As per my understanding, these functions are required because we cannot access userspace data directly within kernel space. But, the implementation of these functions actually access the user-space data right? Can someone explain me how this actually happens?
How it actually happens is architecture dependent. Whether kernel space can access user space while in the context of the user-process is also architecture dependent. I know with ARM, for example, it's possible to do memcpy instead of copy_to_user, but using memcpy isn't guaranteed to work on all architectures. The other difference between memcpy and copy_to/from_user is that memcpy will typically cause a segmentation fault if passed a bad pointer, where copy_to/from_user won't. -- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com