A tanfolyamról
Linux Kernel programozás - különös tekintettel az eszközvezérlők programozására.
Tematika
- Rövid bevezető a Linuxról
- Linux fejlesztői eszközök - gcc - Fejlesztői könyvtárak és kezelésük - Makefile - Hibakeresés
- Alkalmazás fejlesztés - Állomány és I/O kezelés
- Linux kernel ismertető - A Linux elindulásának folyamata - Folyamatok kezelése - Ütemezés - Megszakítás kezelés - Valósidejűség kérdésköre - Memória kezelés - Eszközök
- Kernel modulok készítése - Egyszerű kernel modul, a modul fejlesztés alapjai - Paraméter átadás - Egyszerű karakteres eszközvezérlő, egyszeres megnyitás kérdése - A /proc állományrendszer használata - Más eszközmeghajtók elérése
- A hibakeresés módszerei - Egyszerű módszerek (printk, proc, kernel fordítási opciók) - Az Oops üzenet feldolgozása - Magic SysRq - gdb - kgdb elméletben
- Memória allokáció
- Konkurencia kezelés - spinlock - semaphore - Egyéb eszközök 9. Az ioctl() implementációja
- I/O műveletek blokkolása
- poll() és select() támogatása
- Összetett eszközvezérlő példa
- USB eszközvezérlők ismertetése
- Megszakítás kezelés - Megszakítások lekezelése - BH mechanizmus (tasklet, workqueue) Kernel szálak - Szálak létrehozása, leállítása - Várakozás (rövid, hosszú, időzítés)
- I/O portok kezelése
- Memória menedzsment
- mmap() implementáció
Course Topics:
- Short introduction of Linux
- Linux development tools (gcc, development libraries, Makefile, troubleshooting)
- Application development, File and I/O handling
-
Linux kernel
- the boot process of Linux
- process handling
- scheduler
- interrupt handling
- questions of real-time
- Memory management
- devices
-
Writing kernel modules
- a simpe kernel module, basics
- parameter transfer
- simpe, character-based device driver, 1x opening
- usage of /proc file system
- accessing device drivers
-
Troubleshooting methods
- simple methods (printk, proc, kernel compile options)
- processing Oops message
- Magic SysRq
- gdb
- kgdb in theory
- Memory allocation
- Objects of synchronization/Concurrent programming (spinlock, semaphore, etc.)
- Implementation of ioctl()
- Blocking I/O
- Support of poll() and select()
- Complex device driver example
- USB device drivers
-
Interrupt handling
- interrupt handling
- BH-mechanizm (tasklet, workqueue)
-
Kernel threads
- creating, scheduling, stopping kernel threads
- Waiting (short, long, timers)
- I/O port handling
- Memory management
- impementation of mmap()