On Tue, 24 May 2011, Javier Martinez Canillas wrote:
On Tue, May 24, 2011 at 8:14 PM, DG <dangets@gmail.com> wrote:
On Tue, May 24, 2011 at 11:47 AM, Robert P. J. Day <rpjday@crashcourse.ca> wrote:
On Tue, 24 May 2011, Jim Cromie wrote:
over at http://code.google.com/p/ldd3/ it says: The famous "Linux Device Drivers" released the sample code. but the code does not reflect the latest kernel updates, some of code cannot even compile. This project is to make it compatible with the current kernel.
http://lwn.net/Kernel/LDD3/ http://examples.oreilly.com/9780596005900/
the one caution i would give here is that quite a bit of code in LDD3 shouldn't be updated, anyway, since it reflects features that have been deprecated for quite some time.
for instance, no one should be writing proc files anymore. also, ioctl()s are also discouraged for the most part. so i would be selective about what parts of LDD3 code *should* be updated as examples of good kernel programming.
rday
Robert is right, the drivers are quite old. As Robert says proc files are deprecated in favor of sysfs and ioctl are discouraged in favor of netlink sockets. Another example is that most LDD3 driver modules are loaded with a script that create the device nodes. Unless your system is a embedded device (an even in that case) you should let udev do this). So instead of having drivers that just compile cleanly and works, it would be better to update the APIs the drivers use and how they interact with userspace.
there are also other drivers that simplify things immensely for you that aren't mentioned in LDD3, such as the "misc" character driver, that lets you register a character driver that needs only one minor number at major number 10 and some randomly chosen and available minor number. you can then get the minor number from the file /proc/misc but you don't need to as the /dev file is (as far as i understand it) created for you automatically. in other words, you can avoid a lot of the work involved in writing a character driver if you take advantage of that misc driver. rday -- ======================================================================== Robert P. J. Day Ottawa, Ontario, CANADA http://crashcourse.ca Twitter: http://twitter.com/rpjday LinkedIn: http://ca.linkedin.com/in/rpjday ========================================================================