• Advance Your Career Today
  • Learn New Skills
  • Save Money
  • Save Time
  • Get Certified
  • Get Promoted
  • Learn More
  • Advance Your Career Today

Black Friday Special - 3 Ways to Save + Cash Back

  • Standard Courses $49: Use Coupon Code BLACKFRIDAY49 - 5 Amazon Dollars with every course
  • Deluxe Courses $99: Use Coupon Code BLACKFRIDAY99 - 10 Amazon Dollars with every course
  • Premium Courses $149: Use Coupon Code BLACKFRIDAY149 - 15 Amazon Dollars with every course
  • Rules: Offer cannot be combined with other offers. Multiple purchases permitted. Amazon gift card given for total purchase. Offer does not apply to Certified IT Asset Management courses.

    Linux Device Drivers: Programming at the Kernel Level Enroll Today!

    Select The Package That's Right for You
    Standard Deluxe Premium
    1 Year Access to Course
    Course Completion Certificate
    Course Materials
    Instructors Answer Your Questions
    $195 $425 $695
    Add to Cart Add to Cart Add to Cart

    Linux Device Drivers: Programming at the Kernel Level

    Key Course Benefits

    • Achieve Workplace Success by Learning from Real World Experts
    • Learn and Implement New Skills Faster With Real World Examples
    • Take High Quality Classroom Courses Without the Hassles of Travel
    • Student Guide Makes it Easy for You to Take Notes and Increase Learning
    • Course Demos and Exercises Help You Learn More
    • Eliminate Scheduling Conflicts by Training Anytime 24/7 for 1 year
    • Video Training with Materials, Exercises, and Instructor Support Maximizes Learning
    • 1 Year Course Access Gives You Time to Learn and Master Concepts
    • Use Your Course Completion Certificate to Build Your Resume
    • Responsive Customer Service Makes Independent Learning Easy and Smooth
    • Save Money and Learn More
    Video Title Minutes
    Need Help Playing Your Videos?
    00: Course Introduction 5
    01: So What is a Device Driver? 21
    02: Kernel Loadable Modules 17
    03: Basic Character Driver 17
    04: Debugging Kernel Code 18
    05: Blocking I/O 18
    06: Accessing Hardware 18
    07: Handling Interrupts 22
    08: Memory Allocation 15
    09: Time 27
    10: Block Drivers 20
    11: Network Drivers 29
    12: PCI Drivers 23
    13: USB Drivers 26
    14: Linux Driver Model 15
    15: Integrating a Driver With The Kernel Source Tree 35
    16: Course Summary & Evaluation 6
    Course Survey
    Total: 5 hours 32 minutes

    For more information, contact us or call 1-877-546-4446


    This Linux device driver course introduces Linux device drivers and shows how they interact with the Linux kernel. Numerous programming exercises reveal the rich set of kernel APIs that provide a multitude of services to driver programmers. This class teaches you how Linux handles asynchronous I/O in a way that is totally transparent to applications. You'll examine the unique problems of debugging in Kernel space. Perhaps most important, you'll see how much of a device driver involves interactions with the kernel that have nothing to do with accessing physical hardware. Although the exercises are carried out on a PC, much of the code is easily ported to other architectures supported by Linux.


    You need to have equivalent experience or have taken the following GogoTraining courses:


    As a result of taking this Linux device driver course, you will be able to:

    • Describe the four types of devices and their properties
    • Design, program, and debug kernel loadable modules

    Related Training

    For more information, contact us or call 1-877-546-4446


    You need to have equivalent experience or have taken the following GogoTraining courses:

    Linux Device Drivers: Programming at the Kernel Level Outline

    Module 00: Linux Device Drivers: Programming at the Kernel Level Online Training - Course Introduction

    Module 01: So What's a Device Driver?

    • Why device drivers
    • User space I/O APIs
    • Four types of devices
    • The /dev directory

    Module 02: Kernel Loadable Modules

    • What is a kernel loadable module?
    • Module utilities
    • A module example
    • Kernel modules and the GPL

    Module 03: Basic Character Driver

    • Registering and initializing a driver
    • The file operations table, fops
    • Driver example
    • Mutual exclusion, the semaphore

    Module 04: Debugging Kernel Code

    • printk()
    • strace
    • The /proc file system
    • ioctl()
    • kgdb

    Module 05: Blocking I/O

    • The wait queue
    • Putting a process to sleep
    • Blocking example
    • The seq file interface
    • Poll and select
    • Asynchronous notification

    Module 06: Accessing Hardware

    • Side effects and compiler optimization
    • I/O APIs
    • The hardware
    • Driver example
    • Barriers
    • Accessing hardware from User Space

    Module 07: Handling Interrupts

    • Interrupt context
    • Registering an interrupt handler, the IRQ flags
    • Interrupt example
    • Probing for the interrupt source
    • The bottom half - tasklets and workqueues

    Module 08: Memory Allocation

    • kmalloc() and kfree()
    • kmalloc() flags
    • get_free_pages()
    • vmalloc()

    Module 09: Time

    • jiffies
    • Implementing time delays - example
    • Timers
    • Current time

    Module 10: Block Drivers

    • The block subsystem
    • Device registration
    • The request queue and function
    • Block driver example

    Module 11: Network Drivers

    • Device registration
    • The socket buffer
    • Driver example - "snull"
    • NAPI - the "new" API

    Module 12: PCI Drivers

    • PCI addressing and bridging
    • Accessing configuration space
    • PCI data structures and macros
    • modules.pcimap
    • Sample PCI driver

    Module 13: USB Drivers

    • USB structure and characteristics
    • Device classes
    • USB data structures and macros
    • USB Request Block, URB
    • Sample USB driver

    Module 14: Linux Driver Model

    • Power Management and Shutdown
    • User Space Communication
    • Hot Pug
    • Device Classes

    Module 15: Integrating a Driver with the Kernel Source Tree

    • Configuring and building the kernel
    • The config. file
    • Source code mods
    • Kconfig files

    Module 16: Linux Device Drivers: Programming at the Kernel Level Online Training - Course Summary

    For more information, contact us or call 1-877-546-4446

    Course Materials

    Want to be able to access these helpful materials? Contact Us!

    • Student Guide
    • Lab Setup Guide
    • Exercise Guide
    • Exercise Code Files

    Important Links

    • Course Survey

    For more information, contact us or call 1-877-546-4446

    When you purchase a Premium course from GogoTraining, you can submit comments or questions to our expert instructors.

    For more information, contact us or call 1-877-546-4446

    System Requirements


    • Linux machine with native parallel port
    • For some exercises you will need a standard 25-pin parallet port


    • Current distribution software such as Fedora 11 or 12
    • GNU compiler collection for the x86.  This package is called gcc.
    • Kernal headers and makefiles sufficient to build kernel loadable modules.  This package is call kernel-devel.

    For more information, contact us or call 1-877-546-4446

    When you purchase a Deluxe or Premium course from GogoTraining, you can use your transcript to view and monitor your progress and when you complete the course, you can print or email the transcript, or print a course completion certificate.

    For more information, contact us or call 1-877-546-4446

    What should I do if my video will not play?

    There are many things that can affect the quality of your video so we have put together these instructions to help you review all the things that need to be tested in order to trouble-shoot video quality.

    The first thing we want to assure you is that we have done everything possible to make sure that our videos will play well.  Our videos are hosted in the cloud by Akamai.  Akamai has servers around the world to make sure that your videos are sent from the server that is closest to you.  By hosting our videos with Akamai we make sure that you receive the highest video quality. If you are experiencing video buffering or freezing at home or at the office there are a number of things you can do to help us troubleshoot.

    • Buffering: We provide you with three (3) speed choices that you can select when watching a video.  If the video is buffering then the first thing you want to click on a slower speed option found at the bottom of the video window. Try clicking on Medium and Low and see if that allows the video to play without buffering. If it does not, please read through the rest of this FAQ and follow the steps outlined below.
    • Video will not play: In order to play our videos, you have to have Adobe Flash Player installed. If you click on the video and nothing happens, then you do not have Adobe Flash Player installed.  Click on this link to download and install it.
      • If you have Adobe Flash Player installed and your video is not playing, complete the following steps:
        • Go to your course page, select a video, and click play.
        • Once the video begins playing, place your mouse over the video and right click.
        • You will see the several links and the last link has the words “About Adobe Flasher Player xx.xx.xx” (version # you have).
        • Click here , where you will see your version and what is the latest version. You need to have the latest version installed.
        • If you do not have Adobe Flash Player, click here to download and install it.
    • Your Connection Speed: Internet speed needs to be 2.0 Mbps upload and download to successfully watch the videos.  You will want to check and see if your connection speed is 2.0 Mbps or higher.  You can do this by clicking on this link and running a speed test.
    • Jitter and Packet Loss: Your Jitter rate lets us know if your connection speed is consistent while your Packet Loss rate lets us know if your internet connection could be losing pieces of the video.
      • Go to www.pingtest.net to determine if there is any Jitter or Packet Loss on your connection.
      • This is measured by a letter scale with A being the best.
        • If your Packet Loss is below a B, your connection is losing pieces of the video and causing the video to skip.
        • If your Jitter is below a B, your connection speed is very inconsistent and may be changing while you are watching the video which will result in buffering issues.
        • If either of these is the case you will need to contact your internet provider.
    • Ports: You will need to have ports 1935, 443 and 80 open. You can run a port test at this link.
      • If you are watching from work and those ports are not open, check with your IT department.
    • Shared Internet Connection: If you are on a shared internet connection, test playing videos during non-peak hours when usage by others on your network is low.
    • Other things to check:
      • At home or at work, test using different browsers and computers to see if you get the same result.
        • Make sure you have the latest version of the browser you are using.
      • If you are using Internet Explorer (IE) you may need to reset it. You can do this by clicking on the cog icon on the top right of your page. Then click on tools, internet options, advanced and reset.
      • Try from a different location using a different network.
      • If you are on a wireless connection try a wired solution.
      • If you are on a home network:
        • Test playing the videos when you are the only user on the network.
        • Try by-passing your router to eliminate it as the point of failure. A direct plug from your ISP to your computer will take care of this and will make sure that neither your router nor other users are affecting your connection.
    • Make sure you do not have any other programs open. File sharing and peer to peer sharing programs, even when limited to low bandwidth, can make it almost impossible to stream properly.

    We show that you have been logged out, probably due to automatic session limits. Please Login to continue viewing content.

    Sign up today for your FREE GogoTraining account to access hundreds of free resources.

    Security Question

    Answer this question to complete your registration.

    Which one is a day of the week?