Özet - Sürücü temelleri
- C kursu
- Uzman
- Ders 12/47
- 5 dk
Modül yapısı ve fops'u birleştirerek bir karakter sürücü iskeleti yazarsın.
Özet - Sürücü temelleri
Bu grupta çekirdek modülü yazmanın temellerini gördün: insmod/rmmod ile yükleme, module_init/module_exit yapı iskeleti, printk ile loglama, dev_t ile cihaz numarası ve file_operations ile kullanıcı arayüzü.
Bir sürücü yüklenirken init fonksiyonu çalışır, gerekli kaynakları alır ve cihaz numarasını kaydeder. Kullanıcı /dev altındaki dosyayı açınca .open çağrılır; okuma ve yazma .read ve .write üzerinden geçer. Şimdi beş kavramı birleştiren bir mini görev yazacaksın.
Uygulama Sürücü bilgilerini yazdır
void print_driver_info(const char *topic, const char *detail) fonksiyonunu tanımla; gövdesi printf("%s -> %s\n", topic, detail); olsun. main içinde beş konu için çağır: ("insmod", "load"), ("module_init", "start"), ("printk", "log"), ("dev_t", "major:minor"), ("fops", "open/read/write").
Başlangıç kodu
#include <stdio.h>
// print_driver_info fonksiyonunu tanımla
// beş konuyu yazdır: insmod, module_init, printk, dev_t, fops
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
void print_driver_info(const char *topic, const char *detail) {
printf("%s -> %s\n", topic, detail);
}
int main(void) {
print_driver_info("insmod", "load");
print_driver_info("module_init", "start");
print_driver_info("printk", "log");
print_driver_info("dev_t", "major:minor");
print_driver_info("fops", "open/read/write");
return 0;
}Beklenen çıktı
insmod -> load module_init -> start printk -> log dev_t -> major:minor fops -> open/read/write
Sürücü temelleri tamam
Tebrikler! Sürücü temellerini bitirdin. Çekirdek modülü yazmanın tüm iskeletini gördün: yükleme, init/exit, loglama, cihaz numarası ve dosya işlemleri. Artık basit bir karakter sürücüsü iskeleti kurabilirsin.
Bir sonraki grupta derleyici yapımına geçeceksin: lexer, parser, AST, kod üretimi ve sembol tablosu. Orada kodu analiz eden bir araç yapacaksın; sürücü yazmak için öğrendiğin C becerileri orada da geçerli. Hazır olduğunda devam et.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir modülün başlatma fonksiyonu ne zaman çağrılır?
- Kaldırma sırasında
- Yalnız derleme sırasında
- Her read çağrısında
- Yükleme sırasında Doğru cevap
Açıklama: module_init ile bildirilen fonksiyon yüklemede çalışır.
2 Beş sürücü kavramını eşle
| Kavram | Anlamı |
|---|---|
insmod |
Modül yükler |
module_init |
Başlatma |
printk |
Log yazar |
dev_t |
Cihaz numarası |
fops |
Kullanıcı arayüzü |