On Fri, Sep 18, 2009 at 7:32 AM, Pei Lin <[email protected]> wrote:
> 2009/9/17 Leonidas . <[email protected]>: > > > > > > Hi list, > > > > I know that introducing/using new ioctls is frawned upon by the > community. > > They might still be needed for controlling various hw parameters, Just > > wanted > > to understand the data transfer side of ioctls with a use case. > > > > E.g. My kernel module needs to pass a buffer of 1-2Mb to userspace > > whenever user requests. The buffer will contain different kind of data > > depending > > on different commands i.e. assume that I maintain 3 types of buffers in > my > > module. > > > > Now, with ioctls it is much easiler to get the buffer to userspace simply > by > > issusing > > different commands. But if I have to achive the same functionality using > > read() call > > how would I do it? Meaning ioctl kind of multiplexes the things which > might > > be > > needed in some cases. How would I do this kind of stuff with read()? By > > having 3 > > different minor devices and issuing read() on 3 devices for getting 3 > > buffers? > > > hi, leo > just implement your ioctl function, create the command, and decode > command,deliver your command and buffer point (user) into your > module,then use copy_from_user /copy_to_user deliver your buffer from > user to kernel or vice versa. > > > I am not looking for anyother mechanism of trasnfering data to userspace > as > > of now > > since this data would be really sporadic. I have to choose between ioctl > and > > read. > > > > -Leo. > > > > > > -- > Best Regards > Lin > Peter, No it is going to be a simple char device. Actually a pseudo device since it is not going to be associated with any hw buffers. The buffers which I need to transfer are some bookkeeping buffers I would maintain in my module. So the usd stuff which you mention might not be appropriate. Lin, I think you are talking about ioctl on a single minor number device, my concern is more about choice here. Meaning whether using ioctls with different commands on a single dev node be preferable to issuing reads on 3 different minor number device nodes. -Leo.
