Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of Essential Linux Device Drivers

    Essential Linux Device Drivers

    Sreekrishnan Venkateswaran · 2008

    This book is the most practical guide to writing Linux device drivers. Linux now offers an exceptionally robust environment for driver development: with today's kernels, what once required years of development time can be accomplished in days. In this practical, example-driven book, one of the world's most experienced Linux driver developers systematically demonstrates how to develop reliable Linux drivers for virtually any device. Essential Linux Device Drivers is for any programmer with a working knowledge of operating systems and C, including programmers who have never written drivers before. Sreekrishnan Venkateswaran focuses on the essentials, bringing together all the concepts and techniques you need, while avoiding topics that only matter in highly specialized situations. Venkateswaran begins by reviewing the Linux 2.6 kernel capabilities that are most relevant to driver developers. He introduces simple device classes; then turns to serial buses such as I2C and SPI; external buses such as PCMCIA, PCI, and USB; video, audio, block, network, and wireless device drivers; user-space drivers; and drivers for embedded Linux–one of today's fastest growing areas of Linux development. For each, Venkateswaran explains the technology, inspects relevant kernel source files, and walksthrough developing a complete example. - Publisher.

    Systems & OS
    Open LibraryAmazon
    Stats for nerds
    2recommend
    2mentions
    2people
    2018–2019years
    100% recommend

    Mentions per year

    20182019

    What Hacker News says

    1. rramadassJan 2019
      "Systems Programming" at the minimum, requires knowledge of Language internals, Runtimes, Compiler Toolchains, OS internals, Drivers, Computer Architecture/Organization, CPU/Multiprocessors and Networking. There are other domains like Security, Parallel/Distributed Processing etc which are cross-functional or orthogonal to the above and can be focused on as needed.

      But be warned, earning potential-wise you may lose out(unless you get lucky) to the latest whiz-bang Web/Mobile technology/framework brouhaha. That is the nature of the market. However i consider that the satisfaction of learning and "knowing" how things work, more than makes up for the small loss in earning potential. This technology is also more fundamental and stable and thus will not go away anytime soon.

      I have found the following papers/books (somewhat different from the most commonly cited) useful in my study;

      Languages: Fluency in C is a must. It is THE "portable assembly" language and is available on everything from 8-bit MCUs to multicore servers. You can also link C modules to everything under the sun thus allowing you to extend almost any other language. C++ is also needed; but judicious usage as a "better C" rather than heavy-duty OOP/Generic/Template-mataprogramming madness.

      - Computer Systems: A Programmer's Perspective 3rd ed. based on x86-64. You might also want to get the 1st ed. which is based on 32-bit x86. These books cover the HW/SW interface and thus includes almost all the topics under "Systems Programming".

      - The C Companion by Allen Holub.

      - Inside the C++ object model by Stan Lippman.

      Tools/Toolchain: Knowledge of the GCC toolchain is a must.

      - The Definitive guide to GCC by Hagen

      - ELF: A Programmer's perspective; paper by H.J.Liu

      - C++ Under the hood; MSDN article by Jan Gray

      - The Practice of Programming by Kernighan and Pike.

      OS/Kernel/Drivers:

      - UNIX Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers by Curt Schimmel.

      - Linux Kernel Development 3rd ed. by Robert Love.

      - Essential Linux Device Drivers by Venkateswaran.

      - Embedded Linux Primer 2nd ed. by Hallinan

      - The Unix Programming Environment by Kernighan and Pike

      - Advanced Unix Programming 2nd ed. by Rochkind

      Computer Architecture/Organization

      - Modern Processor Design: Fundamentals of Superscalear Processors by Shen and Lipasti

      - Computer System Design: System-on-Chip by Flynn and Luk

      Parallel/Distributed processing:

      - Foundations of Multithreaded, Parallel, and Distributed Programming by Andrews

      - The Art of Multiprocessor Programming by Herlihy and Shavit.

      Bare-metal Embedded: Where the "rubber meets the road"

      - Embedded Systems Architecture: Explore architectural concepts, pragmatic design patterns, and best practices to produce robust systems by Lacamera

      - Patterns for Time-Triggered Embedded Systems by Pont.

      thread
    2. n_tNov 2018
      Here is my list, which is biased towards Linux. Almost all the books mentioned here are dated and primarily written for 2.6 based kernels. Although many concepts are still applicable and in certain subsystems, the code will be as is with minor changes. So, despite them being old they are still good references.

      * Design and implementation of the FreeBSD operating system: Good and thorough deep dive in FreeBSD OS. Must have.

      * FreeBSD Device Drivers: A Guide for the Intrepid: Didn't quite read it all but looks fine for FreeBSD.

      * Mac OSX internals - a systems approach by Amit Singh: It was good back in days but now outdated.

      * Linux Device Drivers, 3ed : Very dated but still good to grasp Linux device drivers in general. The code examples are bit silly but good enough. There are some GitHub repos which have updated code for latest kernels.

      * Essential Linux Device Drivers by S Venkateswaran: It complements LDD3 book quite nicely. Has some real device examples and very exhaustive. Must have.

      * Linux kernel development by Robert Love: Very good for short/quick intro. Best for preparing before interviews ;)

      * Professional Linux kernel architecture by Wolfgang Mauerer: As other book, its dated but some of the explanations about interrupts, PCI, etc are good. His callgraph approach was very handy in understanding things.

      * The Linux programming interface by Michael Kerrisk: Not really about OS but next thing close to it - system programming (the real system programming). Must have.

      * Understanding Linux virtual memory manager by Mel Gorman: As other books, it's dated but still one of the best available to get a handle on memory management under Linux. Must have.

      * Understanding the Linux kernel: Dated but still my go to book to refresh certain subsystems. Must have.

      * Linux Kernel Programming by Michael Beck: Mentioned for historical reasons, else most out dated book here (2.4 based). Horrible editing and English but heck! I loved it back in the days :)

      * Linux kernel networking by Rami Rosen: Never read it but quite dated.

      * Understanding Linux network internals by Christian Benvenuti: A real bible of Linux networking. If nothing else, your jaw drops at the effort author made to write this book. Dated but unlike more generic Linux kernel things, network stack is still same in its core. Must have.

      * The Linux kernel primer: A top-down approach for x86 and PowerPC Architecture: Very dated book but good to read from PPC perspective. Lot of things have changed since its publication.

      * See MIPS Run by Dominic Sweetman: dated but gives good idea about MIPS internals and how Linux uses it.

      * IA-64 Linux Kernel: Design and Implementation: Its dated not just w.r.t code but also w.r.t. hardware. Nonetheless, it gives a good insight into IA-64 architecture and Linux from non-x86 perspective.

      * Definitive guide to Xen hypervisor: this is the only book on virtual machine which is not just from user perspective. While best way to learn VM is through reading architecture spec and code, this book still satisfied me w.r.t. virtual machine internals.

      Every other book on amazon about Linux kernel is more or less useless. For more academic book, "Operating systems - three easy pieces" is good.

      thread

    Related

    Cover of Embedded Linux primer
    2017–2023

    Embedded Linux primer

    Christopher Hallinan
    3 recommend · 3
    Linux Kernel NetworkingRami Rosen
    2018–2023

    Linux Kernel Networking

    Rami Rosen
    2 recommend · 5
    Cover of Understanding Linux network internals
    2009–2020

    Understanding Linux network internals

    Christian Benvenuti
    2 recommend · 7
    Cover of UNIX systems for modern architectures
    2009–2026

    UNIX systems for modern architectures

    Curt Schimmel
    4 recommend · 11
    Cover of ARM system developer's guide
    2010–2026

    ARM system developer's guide

    Andrew Sloss
    4 recommend · 4
    Cover of Designing Embedded Hardware
    2008–2025

    Designing Embedded Hardware

    John Catsoulis
    2 recommend · 5
    Cover of Linux Kernel Development
    2010–2026

    Linux Kernel Development

    Robert Love
    44 recommend · 68
    Introduction to Embedded SystemsEdward A. Lee
    2019–2026

    Introduction to Embedded Systems

    Edward A. Lee
    3 recommend · 11