Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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
Testimonials (3)
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
Course - Flutter Development Bootcamp with Dart
The trainer was enthusiastic, kind, and loved the topic
Isaac Murphy - Royal New Zealand Airforce
Course - Build Native iOS and Android Apps with Flutter
I really enjoy having a virtual PC online, I can do exercises whenever I want