Linux CUSE: So implementieren Sie einen blockierenden oder nicht blockierenden BetriebLinux

Linux verstehen
Guest
 Linux CUSE: So implementieren Sie einen blockierenden oder nicht blockierenden Betrieb

Post by Guest »

Ich interessiere mich für die Implementierung eines Userspace-Char-Geräts in Linux mit CUSE.
In einem Linux-Kernel-Treiber für char-Geräte soll die Kernel-Treiber-Funktion .read verwendet werden um entweder einen blockierenden oder einen nicht blockierenden Vorgang zu implementieren, abhängig vom O_NONBLOCK-Flag-Status des Dateideskriptors.
Aber was ist mit einer .read-Funktion des CUSE-Treibers, falls vorhanden? Keine Daten zum Lesen „noch“?
  • Ist die .read-Funktion des CUSE-Treibers für die Implementierung sowohl des blockierenden als auch des nicht blockierenden Verhaltens verantwortlich, abhängig vom Dateideskriptor? O_NONBLOCK-Flag-Status?
  • Wie kann die Funktion .read des CUSE-Treibers einen blockierenden Lesevorgang implementieren?
Ich habe versucht, a zu implementieren .read-Funktion mit einem Sleep(1) darin. Ich stellte fest, dass es irgendwie funktionierte, aber mein CUSE-Treiber reagierte langsam auf .write. Daher gehe ich davon aus, dass eine CUSE .read-Funktion nicht einfach für längere Zeit blockieren sollte. Aber ich habe bisher weder in CUSE-Dokumenten noch im CUSE-Beispielcode oder in anderen Projekten, die CUSE verwenden, herausgefunden, wie man richtig blockiert.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post