RHD362 Red Hat Linux Kernel Internals II: Device Drivers
Kurs rozwija umiejętności i kształci wiedzę związaną z tworzeniem sterowników urządzeń dla systemu Linux. Na zakończenie kursu, uczestnicy mogą legitymować się znajomością architektury systemu, warstwy sprzętowej i zarządzania pamięcią, znają także pojęcia związane z modularyzacją i strukturą źródeł jądra systemu. Tworzą samodzielnie sterowniki i posiadają wiedzę dotyczącą urządzeń blokowych, znakowych oraz współpracy z urządzeniami sieciowymi.
- Wykształcenie umiejętności tworzenia sterowników urządzeń dla systemu Red Hat Enterprise Linux
- Sprawne posługiwanie się blokadami i mechanizmami synchronizacji na poziomie jądra systemu
- Efektywne stosowanie wywołań realizujących rządania obsługi pamięci i innych zasobów systemowych
Doświadczeni programiści języka C z dobrą znajomością jądra systemowego Linux oraz ci którzy chcą nauczyć się tworzenia sterowników urządzeń dla systemu operacyjnego Linux.
-
Doświadczenia w programowaniu w języku C
-
Wiedzy równoważnej z RHD251 Red Hat Linux Programming
Cena w PLN jest kosztem sugerowanym. Koszt zajęć 2253 euro, przeliczenie wg kursu sprzedaży w NBP z dnia wystawienia faktury, pierwszy dzień zajęć. Kurs euro=4,1900 PLN wg kursu z dnia 27 marca 2012r.
-
Wstęp i ogólne spojrzenie na programowanie na poziomie jądra systemu operacyjnego
- Czym jest jądro systemu operacyjnego?
- Warianty jądra systemowego Linux
- Interakcja z jądrem systemu operacyjnego
- Implementacja jądra systemu Linux
- Źródła jądra systemu Linux
- Tworzenie modułów jądra
- Kompilowanie modułów jądra
- Więcej na temat modułów jądra systemu
- Przegląd struktur jądra systemu
-
Sterowniki urządzeń
- Sterownik urządzenia – czym jest?
- Projekt sterownika urządzeń
- Współpraca z urządzeniami znakowymi
- Współpraca z urządzeniami blokowymi
- Współpraca z urządzeniami sieciowymi
- Węzły urządzeń
- Rejestrowanie sterowników urządzeń
- Problem węzłów urządzeń
- Operacje plikowe
- Definiowanie operacji plikowych
- Rejestrowanie operacji plikowych
- Konwencje wywołań I/O na plikach
-
Zunifikowany model urządzeń
- Obiekt w modelu urządzeń
- System plików sysfs
- Struktura modelu urządzeń
- Połączenie wszystkich aspektów
- Gniazda połączeń sieciowych i zdarzenia z przestrzeni użytkownika
- Agent zdarzeń z przestrzeni użytkownika
- Rejestrowanie urządzeń
- Różne urządzenia
-
Obsługa przerwań
- Kontekst przerwania
- Przechwytywanie obsługi przerwania
- Struktura przerwania
- Rejestrowanie ISR
- Kontekst systemu
- Przerwania programowe (ang. softirqs)
- Odroczone działania: „tasklety”
- Odroczone działania: kolejki zadań
- Nietypowa kolejka zadań
- Przykład: obsługa myszki i transmisji szeregowej
-
Zaawansowane operacje na plikach
- Wywołania IOCTL
- Konwencje wywołań IOCTL
- Implementacja wywołań IOCTL
- Operacje nieblokujące IOCTL
- Usypianie
- Kolejki oczekiwania
- Warianty wywołania wait_event()
- Usypianie w trakcie wywołań systemowych
- Multipleksowane operacje I/O
- Obsługa transferu danych poprzez polling
-
Współpraca z urządzeniami
- Operacje na urządzeniach
- Zarządzanie wyłącznym dostępem
- Porty I/O
- Bufory pamięci urządzeń I/O
- Dostęp od buforów urządzeń I/O
- Sterowniki w przestrzeni użytkownika
-
Dostęp bezpośredni do pamięci
- Zarządzanie dostępem DMA (ang. Direct Memory Access)
- Inicjalzowanie transferu DMA
- Alokacje
- Stumienie i mapowanie transferów DMA
-
Sterowniki urządzeń PCI
- Peripheral Component Interconnect – standard jako taki
- Przestrzeń konfiguracji PCI
- Rejestrowanie sterownika PCI
- Funkcje testowania sterownika PCI
- Inicjalizowanie urządzenia PCI
- Zwalnianie urządzenia PCI
- Zarządzanie zasobami PCI
- Dostęp do przestrzeni konfiguracyjnej
- Lista urządzeń PCI
-
Urządzenia USB
- USB – standard jako taki
- Deskryptory USB
- Typy transmisji USB
- Implementacja obsługi USB w systemie Linux
- Sterowniki USB
- Rejestracja urządzeń USB
- Inicjalizacja interfejsów USB
- Klasy sterowników urządzeń USB
- USB i żądanie transferu blokowego
- Użycie transferu bloku w ramach szyny USB
- Żądanie obsługi synchronicznej w ramach USB
- Dodatkowe informacje
-
Urządzenia sieciowe
- Obsługa sieci
- Urządzenia sieciowe
- Wywołania zwrotne urządzeń sieciowych
- Inicjalizacja urządzeń sieciowych
- Kontrola kolejki w sterownikach urządzeń sieciowych
- Statystyki podsystemu obsługi sieci
- Bufory gniazd i pakietów
- API buforów gniazd
- Transmisja danych
- Odbiór danych
- Przykładowa implementacja
-
Sterowniki urządzeń blokowych
- Urządzenia blokowe
- Szeregowanie I/O
- Algorytm windy w systemie Linux 2.6
- Implementacja urządzeń blokowych
- Rejestrowanie urządzeń blokowych
- Operacje plikowe na urządzeniach blokowych
- Struktura gendisk
- Kolejka żądań
- Przykład inicjalizacji
- Przechwytywanie i obsługa żądań
-
Kompilowanie własnego jądra systemowego
- Kompilacja jądra


