[Linux] Asynchrone Funktionsaufrufe (fastboot)

Seit dem 2.6.29-rc1 Kernel wurde angefangen, asynchrone Funktionsaufrufe zu implementieren.

Damit wird es möglich, bspw. beim Booten gleichzeitig die Erkennung der Festplatten laufen zu lassen (was leider etwas dauert) und trotzdem auch andere Geräte zu testen. Momentan laufen diese Vorgänge seriell ab.

Seriell hat natürlich den Vorteil, dass die Festplatten auch schon erkannt wurden, bevor der Bootprozess versucht davon zu booten :-)

Und genau deshalb wurde jetzt eine neue API entwickelt, bzw. steckt noch in der Entwicklung die es erlaubt, diese parallel laufendenen Prozesse wieder zu synchronisieren.

In der Praxis läuft das dann folgendermaßen ab:

(1) Festplatte erkennen
(1) Soundkarte erkennen
(1) USB initialisieren

(2) async_synchronize_cookie(USB_Zeugs), USB Geräte erkennen
(2) async_synchronize_cookie(Festplatte), Partitionen ermitteln

(3) async_synchronize_full - warten bis alle Teilprozesse erledigt sind`</blockquote>

Momentan würde da statt 1, 1, 1, 2, 2 stattdessen 1, 2, 3, 4, 5 stehen (Punkt 3 wäre damit hinfällig). Jedoch wenn man annimmt das jeder Teilprozess 2s dauert (das ist jetzt übertrieben) würde man beim neuen Modell statt 10s Bootzeit nur noch 4s brauchen.

Aber diese API ist natürlich nicht nur fürs Booten relevant. Es gibt auch schon einen Ansatz wo sie beim Inode löschen benutzt wird.

Der aktuelle Stand ist jedoch, dass die API im Kernel erstmal deaktiviert wurde (da noch neu und nicht so stabil) und nur via dem Bootparameter fastboot aktiviert werden kann.

Weitere Infos auf Englisch von Arjan van de Vens Projekt hat LWN: http://lwn.net/Articles/314808/.