Messages in this thread | | | From | mdaljeet@in ... | Date | Tue, 29 May 2001 19:34:18 +0530 |
| |
I am using linux kernel version 2.4.2 on Intel PC.
I have been trying my luck for over a week regarding usage of 'map_user_kiobuf' for doing a DMA into a memory area that belongs to user space.
Actually my requirement is that I want to do DMA into a user space memory area. What I have done through suggestions is that allocate memory in user space. I pass user space buffer address to a kernel module. Inside the kernel module, I use 'map_user_kiobuf' passing user space buffer address to it.
After using the 'map_user_kiobuf', I observed the followiing:
1. 'kiobuf->maplist[0]->virtual' contains a different virtual address than the user space buffer address 2. But these two addresses are mapped as when i write something using the address 'kiobuf->maplist[0]->virtual' inside the kernel, I see the same data in the user space buffer in my application. 3. I use the 'virt_to_phys' operation to the virtual address 'kiobuf->maplist[0]->virtual' to get the physical address. 4. I use this physical address for DMA operations.
Now, using this information I do a DMA from card to system memory. What I have noticed is that DMA happens somewhere else in the system memory. I am not able to execute most of the commands (ls, chmod, cat, clear etc) after my user program exits.
Am I doing the steps 3 and 4 above right?
Regards, Daljeet.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |