Ken Thompson's Interview
Dennis Ritchie's Interview
Linus Torvalds
@ LinuxCon Europe 2011
http://www.muktware.com/news/2855
ioctl
was executed, it took the Big Kernel Lock (BKL), so nothing else could execute at the same time. This is very bad on a multiprocessor machine, so there was a big effort to get rid of the BKL. First, unlocked_ioctl
was introduced. It lets each driver writer choose what lock to use instead. This can be difficult, so there was a period of transition during which old drivers still worked (using ioctl
) but new drivers could use the improved interface (unlocked_ioctl
). Eventually all drivers were converted and ioctl
could be removed.compat_ioctl
is actually unrelated, even though it was added at the same time. Its purpose is to allow 32-bit userland programs to make ioctl
calls on a 64-bit kernel. The meaning of the last argument to ioctl
depends on the driver, so there is no way to do a driver-independent conversion