unlocked_ioctl explanation
I am aware that ioctl has been superseeded by unlocked_ioctl. I've been looking through patches and this seems to be BKL related. Could someone explain further the differences and reasons for the new ioctl prototype and name? I guess 'unlocked' means BKL is no longer held inside ioctl, right? What precautions should we take when using unlocked_ioctl ? Greetings, Ezequiel.
Hi Ezequiel, 2011/5/17 Ezequiel García <elezegarcia@yahoo.com.ar>
I am aware that ioctl has been superseeded by unlocked_ioctl. I've been looking through patches and this seems to be BKL related.
Could someone explain further the differences and reasons for the new ioctl prototype and name?
I guess 'unlocked' means BKL is no longer held inside ioctl, right?
Exaclty.
What precautions should we take when using unlocked_ioctl ?
Well, since there is no BKL, your ioctl can get preempted by another process and that other process just might happen to make an ioctl call to your driver. So your driver has to protect itself from being called by 2 threads simultaneously, if that's a problem. Some drivers won't need any extra protection. Unfortunately, it really depends on exactly what your driver code does. -- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com
Thanks Dave for your answer. I guess the same question has been answered several times before. For the interest reader, I've found these: http://unix.stackexchange.com/questions/4711/what-is-the-difference-between-... http://lwn.net/Articles/119652/ http://www.mail-archive.com/kernelnewbies@nl.linux.org/msg00269.html I have a remaining question, though. In the lwn article I read this: "The ioctl() system call has long been out of favor among the kernel developers, who see it as a completely uncontrolled entry point into the kernel". Is this pointing that ioctl() is planning to get removed from the kernel ? In that case what's the currently preferred mechanism for giving 'control commands' to device drivers ? Thanks again and greetings, Ezequiel. --- El mié 18-may-11, Dave Hylands <dhylands@gmail.com> escribió: De: Dave Hylands <dhylands@gmail.com> Asunto: Re: unlocked_ioctl explanation Para: "Ezequiel García" <elezegarcia@yahoo.com.ar> Cc: kernelnewbies@kernelnewbies.org Fecha: miércoles, 18 de mayo de 2011, 3:20 Hi Ezequiel, 2011/5/17 Ezequiel García <elezegarcia@yahoo.com.ar>
I am aware that ioctl has been superseeded by unlocked_ioctl. I've been looking through patches and this seems to be BKL related.
Could someone explain further the differences and reasons for the new ioctl prototype and name?
I guess 'unlocked' means BKL is no longer held inside ioctl, right?
Exaclty.
What precautions should we take when using unlocked_ioctl ?
Well, since there is no BKL, your ioctl can get preempted by another process and that other process just might happen to make an ioctl call to your driver. So your driver has to protect itself from being called by 2 threads simultaneously, if that's a problem. Some drivers won't need any extra protection. Unfortunately, it really depends on exactly what your driver code does. -- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
2011/5/19 Ezequiel García <elezegarcia@yahoo.com.ar>
Thanks Dave for your answer. I guess the same question has been answered several times before. For the interest reader, I've found these:
http://unix.stackexchange.com/questions/4711/what-is-the-difference-between-...
http://lwn.net/Articles/119652/
http://www.mail-archive.com/kernelnewbies@nl.linux.org/msg00269.html
I have a remaining question, though. In the lwn article I read this:
"The ioctl() system call has long been out of favor among the kernel developers, who see it as a completely uncontrolled entry point into the kernel".
Is this pointing that ioctl() is planning to get removed from the kernel ? In that case what's the currently preferred mechanism for giving 'control commands' to device drivers ?
I would bet for 'sysfs'. thanks, Daniel.
participants (3)
-
Daniel Baluta -
Dave Hylands -
Ezequiel García