2009-11-05 4 views
5

Ich habe über Linux-Kernel-Entwicklung/Gerätetreiber und alle Bücher gelesen, die ich mir angesehen habe use the pre-2.6.20 workqueue interface. Dazu gehören die , Robert Loves Linux Kernel Development und Sreekrishnan Venkateswaran Essential Linux Device Drivers, die im April 2008 veröffentlicht wurde!Verwenden der neuen Workqueue-Schnittstelle (seit Linux Kernel 2.6.20)

Hat jemand eine Anleitung zur Verwendung der "neuen" 2.6.20+ workqueue interface?

Nur zur Referenz, Ubuntu 8.04, auf dem ich gerade entwickle, wurde vor anderthalb Jahren veröffentlicht und enthält Kernel 2.6.24.

bearbeiten

stsquad Antwort führte mich zu this guide to porting code to the new 2.6.20 workqueue's.

Antwort

5

Sie können nichts falsch machen mit den hervorragenden API-Artikeln zu LWN (http://lwn.net/Kernel/Index/), die eine Menge der neuen APIs dokumentieren, wenn sie in den Kernel gehen. Es gibt einen ganzen Abschnitt, der den Workqueues gewidmet ist und der eine Lektüre wert ist.

Workqueues sind seit einiger Zeit im Kernel, also nehme ich an, dass Sie an die recent-ish rework of the API denken.

Während ich dabei bin, kann ich herzlich ein Abonnement für LWN empfehlen. Alle ihre Artikel sind nach einer Woche oder so kostenlos verfügbar, aber es lohnt sich, das qualitativ hochwertige Schreiben zu unterstützen, besonders wenn Sie ein aufstrebender Kernel-Hacker sind.

+0

+1: Danke. Haben Sie Links zu einem Tutorial/Leitfaden zur tatsächlichen Verwendung der neuen Workqueue-Schnittstelle? Oder kennen Sie einen ziemlich einfachen Treiber im Quellbaum, der als gutes Beispiel dienen könnte? –

+0

In Bezug auf einfache Treiber, die keine intime Kenntnis des Rests des Kernels erfordern, empfehle ich den vt-Code (drivers/char/vt.c) oder vielleicht den sysreq-Treiber (drivers/char/sysrq.c). Andernfalls grepst du nach queue_work in einem Subsystem, das dir vertraut ist. Das Dokumentationsverzeichnis enthält einige spezifische Beispiele für verschiedene Subsysteme (z. B. verzögerte E/A), obwohl diese normalerweise in ein eigenes subsystemspezifisches Framework eingebettet werden. – stsquad

+2

Ihre Antwort führte mich zu diesem Leitfaden zum Portieren von Code auf die neue 2.6.20 Workqueue: http://lwn.net/Articles/213149/ –