Course Outline

Introduction

  • quick history of GNU/Linux
  • licensing
  • kernel versioning
  • release cycle
  • kernel trees
  • mainline
  • kernel vs. user space
  • mechanism vs. policy
  • kernel driver alternatives
  • RTOS vs. Linux

Memory Management

  • Virtual memory vs. physical memory
  • memory allocation in kernel
  • pages
  • zones
  • API
  • slab

Kernel Patch

  • life cycle
  • git
  • kernel source
  • create patch
  • check patch
  • fix patch
  • ship patch
  • audited code

Kernel Modules

  • get kernel sources
  • configure/build/install
  • device drivers (statically linked, loaded at runtime)
  • init/exit
  • licensing
  • EXPORT SYMBOL GPL
  • out of tree makefile
  • module-init-tools
  • module in kernel tree
  • Kconfig
  • parameter passing
  • sparse

Char Drivers

  • architecture
  • user/kernel interface
  • I/O subsystem
  • VFS
  • sysfs (devices, bus, drivers, classes),
  • kobject/ktype/kset
  • linux kernel driver model
  • device files
  • char driver
    • initialization
    • registration
    • open, release
    • cdev, cdev add, cdev del,...
    • major/minor numbers
    • udev, udevmonitor, udevadm

Advanced Charachter Driver Operations

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • user space API
  • kernel space API
  • process lifecycle
  • sleeping/blocking
  • sleeping/waking up
  • wait queue
  • thundering herd
  • poll/select

Kernel Debugging

  • bug
  • debugging
  • debugging the kernel
    • binary search with git
    • debug support from kernel
    • printk syslogd, klogd, loglevels, rate limit, debug levels, debug selective subsystems
    • debugging by querying debugfs
    • oops debugging, asserting oops
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

Tracing

  • gcov
  • lcov
  • oprofile
  • ftrace
    • nop tracer
    • function tracer
    • sched switch tracer
    • function graph tracer
    • dynamic tracer
  • trace-cmd/kernelshark
  • perf
  • LTTng

Interrupts

  • interrupts vs. polling
  • interrupt
  • program sections
  • reentrancy
  • events
  • interrupt handler
  • shared interrupt handler
  • interrupt flow
  • interrupt control

Deferring Work

  • top/bottom halves
  • softirqs
  • tasklets
  • work queues
  • threaded interrrupts

Concurrency

  • critical region/section
  • atomic
  • race condition
  • synchronization
  • locking
  • locking solutions
  • deadlock
  • contention
  • what to lock?
  • what can be used?
    • atomic operations
    • spin locks
    • reader-writer spin locks
    • semaphore
    • binary semaphore
    • mutex
    • reader-writer semaphore
    • completion variables
    • sequential locks
    • disable preemption
    • orderig and barriers

Time

  • HZ
  • Jiffies
  • big/small delays
  • kernel timers

Hardware I/O

  • I/O Ports
  • I/O Memory
  • How to deal with side effects accessing registers?

User-Kernel Communication

  • put(get)_user()
  • copy to(from)_user()
  • Kernel I/O
  • memory mapping
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Portability

  • word size
  • opaque types
  • signed/unsigned char
  • data alignment
  • integral promotion
  • code reuse
  • endianess
  • system tick
  • page size
  • instruction ordering
  • SMP/preemption/high memory

Except where otherwise noted content and this course outline are licensed under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

Requirements

  • Basic familiarity with using a GNU/Linux system as an end user
  • Basic familiarity with a command line shell
  • Basic knowledge of user space / application development
  • Intermediate C programming knowledge
  • Should have attended Embedded GNU/Linux Systems Architecture before (strongly recommended!) and/or have a good understanding of the topics outlined there
 35 Hours

Delivery Options

Private Group Training

Our identity is rooted in delivering exactly what our clients need.

  • Pre-course call with your trainer
  • Customisation of the learning experience to achieve your goals -
    • Bespoke outlines
    • Practical hands-on exercises containing data / scenarios recognisable to the learners
  • Training scheduled on a date of your choice
  • Delivered online, onsite/classroom or hybrid by experts sharing real world experience

Private Group Prices RRP from €11400 online delivery, based on a group of 2 delegates, €3600 per additional delegate (excludes any certification / exam costs). We recommend a maximum group size of 12 for most learning events.

Contact us for an exact quote and to hear our latest promotions


Public Training

Please see our public courses

Testimonials (5)

Provisional Upcoming Courses (Contact Us For More Information)

Related Categories