Ich bin mir bewusst, dass ich msleep oder usleep oder eine solche Funktion sicherlich nicht verwenden kann, um Verzögerungen in einer Kernel-ISR-Routine einzuführen.
Ich habe einen Kernel-Treiber, in dem bestimmte ISRs definiert sind. In einem der ISR-Blöcke muss ich eine bestimmte Verzögerung in der Größenordnung von Millisekunden einfügen. Sagen wir:Wie Verzögerungen im Kernel-Treiber verwendet werden ISR
{
//A
//here I need sleep
//B
}
kann ich etwas verwenden wie:
{
//A
for(i=0;i<1000;i++);
//B
}
sagen Lässt mein Prozessor bei 1 Gbps ausgeführt wird, wird mir die oben für Schleife geben eine Verzögerung von 1000 usecs, das heißt 1ms?
Funktionen "udelay" und "ndelay" implementiert * busy-waiting * Verzögerungen, so dass Sie sie in ISR verwenden können. Das Warteintervall für die erste Funktion wird in Mikrosekunden (1/1 000 000), für andere - in Nanosekunden (1/1 000 000 000) gemessen. – Tsyvarev
Ja, das habe ich später bemerkt. Das hat funktioniert. Vielen Dank. – mdsingh