Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>There are at least two good books on Linux device drivers development:</p> <ul> <li><a href="http://lwn.net/Kernel/LDD3/" rel="nofollow">Linux Device Drivers</a> (3rd Edition). Available for free.</li> <li><a href="http://rads.stackoverflow.com/amzn/click/1593272200" rel="nofollow">The Linux Programming Interface</a></li> </ul> <p>I have personally read LDD3 and use it as a reference, but the second one is also very good according to other fellow developers.</p> <p>When (and if) you read LDD3, it describes everything in good details and has code snippets following the development process from step #1 and to the end. The book, however, doesn't have the full code itself (which as a good thing, or else it becomes bloated), but I recommend you actually download and look at examples.</p> <p>It will most definitely not only get you started, you will be able to write any device. Be that an Ethernet network driver, a fancy kernel extension for your specialized user application, or a fully-blown kernel bypass strategy with DMA buffers mapped into the user space.</p> <p>However, you will probably not be able to a full step by step story of any real-world device driver. This is because of a few things — it is a lot harder to write a book like that, harder then writing a driver itself. Chances are that it won't sell well due to being extremely device specific. So when it comes to details like working nicely with a DMA engine of some device, or Ethernet LSO, you will have either have experience in this, learn some existing device and its driver, or at least ask specific questions (here or somewhere else).</p> <p>I'd say that the most straight forward way for you when you come to that point is to join a team that does exactly that, work closely with people, keep getting more and more experience. Until one day you would be able to sit down, pull off your 10G NIC off the shelf, sit down and write an industrial grade driver (well, or until your interests change).</p> <p>You may also try some open source projects too. For example, take a look at <a href="http://www.ntop.org/products/pf_ring/dna/" rel="nofollow">PF_RING DNA</a> or similar projects. It is very interesting because you can take existing drivers and have to make a few adjustments to make it work with PF_RING infrastructure. In my personal opinion though, open-source projects are usually a little bit less effective in teaching and helping you gain real-world experience useful because in there people don't sit next to you, etc.</p> <p>So... just do it!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload